从零搭建php环境-openresty

参考来源:http://openresty.org/en/insta...

一、配置编译参数,使用默认

> cd /usr/local/src/
> tar -xvf openresty-1.19.3.1.tar.gz
> cd openresty-1.19.3.1
> ./configure -j2

1、Can't locate File/Temp.pm in @INC (you may need to install the File::Temp module) (@INC contains: /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5) at ./configure line 9.

yum install perl

2、./configure: error: the HTTP rewrite module requires the PCRE library.
You can either disable the module by using --without-http_rewrite_module
option, or install the PCRE library into the system, or build the PCRE library
statically from the source with nginx by using --with-pcre=<path> option.

ERROR: failed to run command: sh ./configure --prefix=/usr/local/openresty/nginx ...

yum -y install pcre-devel

3、./configure: error: SSL modules require the OpenSSL library.
You can either do not enable the modules, or install the OpenSSL library
into the system, or build the OpenSSL library statically from the source
with nginx by using --with-openssl=<path> option.

ERROR: failed to run command: sh ./configure --prefix=/usr/local/openresty/nginx ...

yum -y install openssl openssl-devel
Configuration summary
  + using system PCRE library
  + using system OpenSSL library
  + using system zlib library

  nginx path prefix: "/usr/local/openresty/nginx"
  nginx binary file: "/usr/local/openresty/nginx/sbin/nginx"
  nginx modules path: "/usr/local/openresty/nginx/modules"
  nginx configuration prefix: "/usr/local/openresty/nginx/conf"
  nginx configuration file: "/usr/local/openresty/nginx/conf/nginx.conf"
  nginx pid file: "/usr/local/openresty/nginx/logs/nginx.pid"
  nginx error log file: "/usr/local/openresty/nginx/logs/error.log"
  nginx http access log file: "/usr/local/openresty/nginx/logs/access.log"
  nginx http client request body temporary files: "client_body_temp"
  nginx http proxy temporary files: "proxy_temp"
  nginx http fastcgi temporary files: "fastcgi_temp"
  nginx http uwsgi temporary files: "uwsgi_temp"
  nginx http scgi temporary files: "scgi_temp"

cd ../..
Type the following commands to build and install:
    gmake
    gmake install

二、编译

gmake
-L/usr/local/src/openresty-1.19.3.1/build/luajit-root/usr/local/openresty/luajit/lib -L/usr/local/src/openresty-1.19.3.1/build/luajit-root/usr/local/openresty/luajit/lib -Wl,-rpath,/usr/local/openresty/luajit/lib -Wl,--require-defined=pcre_version -Wl,-E -Wl,-E -ldl -lpthread -lcrypt -L/usr/local/src/openresty-1.19.3.1/build/luajit-root/usr/local/openresty/luajit/lib -lluajit-5.1 -lm -ldl -L/usr/local/src/openresty-1.19.3.1/build/luajit-root/usr/local/openresty/luajit/lib -lluajit-5.1 -lm -ldl -lpcre -lssl -lcrypto -ldl -lpthread -lz \
-Wl,-E
sed -e "s|%%PREFIX%%|/usr/local/openresty/nginx|" \
    -e "s|%%PID_PATH%%|/usr/local/openresty/nginx/logs/nginx.pid|" \
    -e "s|%%CONF_PATH%%|/usr/local/openresty/nginx/conf/nginx.conf|" \
    -e "s|%%ERROR_LOG_PATH%%|/usr/local/openresty/nginx/logs/error.log|" \
    < docs/man/nginx.8 > objs/nginx.8
gmake[2]: Leaving directory '/usr/local/src/openresty-1.19.3.1/build/nginx-1.19.3'
gmake[1]: Leaving directory '/usr/local/src/openresty-1.19.3.1/build/nginx-1.19.3'

三、安装

gmake install

这里不知道为啥跟步骤二返回一致,指南里是分步骤命令,但这里好像是gmake和gmake install 同时执行了

四、使用

从官方的入门使用教程中,感觉跟nginx本身单独安装并无二样;
nginx默认装在openresty安装目录下;可以完全看成一个单独的nginx,按照以前的经验使用;

openresty到底增强了nginx什么,需要在后续使用中发现;
安装就到此结束

四、使用
1、配置nginx配置文件
我们可能会建多个项目,因此会用到虚拟主机配置。这里按常规采用一个主配置,加载多个虚拟主机配置的方式

user  www;
worker_processes  1;

error_log  logs/error.log;
error_log  logs/error.log  notice;
error_log  logs/error.log  info;

pid        logs/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  logs/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;


    #虚拟主机配置 自动加载
    include /usr/local/openresty/nginx/conf/nginx.conf.vhost/*.conf;


    server {
        listen       80;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            root   html;
            index  index.html index.htm;
        }

        #error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

        # proxy the PHP scripts to Apache listening on 127.0.0.1:80
        #
        #location ~ \.php$ {
        #    proxy_pass   http://127.0.0.1;
        #}

        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        #
        #location ~ \.php$ {
        #    root           html;
        #    fastcgi_pass   127.0.0.1:9000;
        #    fastcgi_index  index.php;
        #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
        #    include        fastcgi_params;
        #}

        # deny access to .htaccess files, if Apache's document root
        # concurs with nginx's one
        #
        #location ~ /\.ht {
        #    deny  all;
        #}
    }


    # another virtual host using mix of IP-, name-, and port-based configuration
    #
    #server {
    #    listen       8000;
    #    listen       somename:8080;
    #    server_name  somename  alias  another.alias;

    #    location / {
    #        root   html;
    #        index  index.html index.htm;
    #    }
    #}


    # HTTPS server
    #
    #server {
    #    listen       443 ssl;
    #    server_name  localhost;

    #    ssl_certificate      cert.pem;
    #    ssl_certificate_key  cert.key;

    #    ssl_session_cache    shared:SSL:1m;
    #    ssl_session_timeout  5m;

    #    ssl_ciphers  HIGH:!aNULL:!MD5;
    #    ssl_prefer_server_ciphers  on;

    #    location / {
    #        root   html;
    #        index  index.html index.htm;
    #    }
    #}
}

虚拟主机配置

# another virtual host using mix of IP-, name-, and port-based configuration
#
server {
    charset        utf-8;
    listen        80;
    server_name  blog.54skyer.cn;
    set $root   /home/www/blog.54skyer.cn/public;
    root    $root;
    #root   /home/www/blog.54skyer.cn/public;
    index    index.php index.html;

    # 指定某个目录可以被直接访问
    location /54skyer/ {
        autoindex    on;
    }

    location / {
        # 如果根目录下匹配不是脚本 默认在根目录后拼一个index.php 这是为了在url中省略index.php
        if (!-e $request_filename){
            rewrite ^(.*) /index.php/$1 last;
            break;
        }
    }

    #pathinfo配置 使支持tp5的标准url
    location ~ .+\.php($|/) {
        fastcgi_pass    127.0.0.1:9000;
        fastcgi_split_path_info ^((?U).+.php)(/?.+)$;
        fastcgi_param PATH_INFO $fastcgi_path_info;
        fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
        fastcgi_param SCRIPT_FILENAME $root$fastcgi_script_name;
        include fastcgi_params;
    }

    # 匹配到php扩展名的url
    #location ~\.php$ {
    #    include /usr/local/openresty/nginx/conf/fastcgi.conf;    
    #    fastcgi_intercept_errors on;
    #    #转发给php-fpm,其端口是9000;
    #    fastcgi_pass 127.0.0.1:9000;
    #}
}


# HTTPS server
#
#server {
#    listen       443 ssl;
#    server_name  localhost;

#    ssl_certificate      cert.pem;
#    ssl_certificate_key  cert.key;

#    ssl_session_cache    shared:SSL:1m;
#    ssl_session_timeout  5m;

#    ssl_ciphers  HIGH:!aNULL:!MD5;
#    ssl_prefer_server_ciphers  on;

#    location / {
#        root   html;
#        index  index.html index.htm;
#    }
#}

2、配置开机自启动

> vim /etc/init.d/nginx
# 复制粘贴脚本代码,保存退出
> chmod a+x /etc/init.d/nginx # 设置可执行权限
> chkconfig --add nginx # 注册成服务
> chkconfig nginx on # 设置开机自启动
> reboot # 重启检测自否开机自启动
> ps aux | grep nginx 
#或 netstat -nplt | grep nginx

复制粘贴自启脚本如下

#! /bin/bash
# Startup script for the nginx Web Server
# chkconfig: - 85 15
# description: nginx is a World Wide Web server. It is used to serve

PATH=/usr/local/openresty/nginx

DESC="nginx daemon"

NAME=nginx

DAEMON=$PATH/sbin/$NAME

CONFIGFILE=$PATH/conf/$NAME.conf

PIDFILE=$PATH/logs/$NAME.pid

SCRIPTNAME=/etc/init.d/$NAME

set -e
        [ -x "$DAEMON" ] || exit 0
do_start() {
        $DAEMON -c $CONFIGFILE || echo -n "nginx already running"
}

do_stop() {
        $DAEMON -s stop || echo -n "nginx not running"
}

do_reload() {
        $DAEMON -s reload || echo -n "nginx can't reload"
}

case "$1" in
start)
echo -n "Starting $DESC: $NAME"
do_start
echo "."
;;

stop)
echo -n "Stopping $DESC: $NAME"
do_stop
echo "."
;;

reload|graceful)
echo -n "Reloading $DESC configuration..."
do_reload
echo "."
;;

restart)
echo -n "Restarting $DESC: $NAME"
do_stop
do_start
echo "."
;;

*)

echo "Usage: $SCRIPTNAME {start|stop|reload|restart}" >&2
exit 3
;;
esac
exit 0
1 篇内容引用

愿自己永远不缺从头再来的勇气和激情。

19 声望
2 粉丝
0 条评论
推荐阅读
使用版本管理创建composer私有库
一、背景多个项目有相同代码&nbsp;&nbsp;二、创建1、初始化一个裸仓 xxxx.git2、git clone 到本地3、在根目录下创建src目录,composer的一种格式规范,composer库的代码在该目录下开发4、初始化composer配置,com...

文艺の张阅读 1.2k

如何选择适合你的微服务 API 网关:对比 Kong、APISIX、Tyk、Apigee 和其他网关
API 网关并非一个新兴的概念,在十几年前就已经存在了,它的作用主要是作为流量的入口,统一的处理和业务相关的请求,让请求更加安全、快速和准确的得到处理。它有以下传统的功能:

API7_技术团队8阅读 8.7k评论 2

有了 NGINX 和 Kong,为什么还需要 Apache APISIX?
2021 年 5 月,云原生社区技术沙龙·广州站,API7.ai(支流科技)联合创始人 & CTO,Apache APISIX PMC 王院生在活动上做了《有了 NGINX 和 Kong,为什么还需要 Apache APISIX》的分享,以下是现场分享的文字版。...

API7_技术团队1阅读 4.2k

Nginx 配置常用参数,看这一篇就够了
最近在全面学习Nginx,当作笔记了,如有错误,欢迎指出或深入交流。主模块 {代码...} 事件模块 {代码...} http部分 {代码...} 部分参数详细说明server_name {代码...} location {代码...} location表达式类型 {代...

开源到2阅读 1.9k

解决:ChatGPT too many requests in 1 hour.Try again later
ChatGPT 提示: Too many requests in 1 hour. Try again later. 如下图,我多次访问也出现同样的问题。中文意思是太多的请求数量在当前 1 个小时内,请稍后重试。那怎么办?怎么解决?

程序员泥瓦匠阅读 5.9k

化虹为桥 - Nginx 如何代理 UDP “连接”
众所周知,UDP 并不像 TCP 那样是基于连接的。但有些时候,我们需要往一个固定的地址发送多个 UDP 来完成一个 UDP 请求。为了保证服务端能够知道这几个 UDP 包构成同一个会话,我们需要在发送 UDP 包时绑定某个端...

spacewander4阅读 1.7k

Nginx unexpected end of file 配置证书遇到问题,如何解决?
通过 letsencrypt 申请证书后,默认服务器安装了 Nginx 1.8 发现,在默认的 /etc/nginx/sites-enabled/default 内容配置 SSL 的 site.com.key 后。重启 Nginx 出现一下错误:

程序员泥瓦匠1阅读 1.2k

愿自己永远不缺从头再来的勇气和激情。

19 声望
2 粉丝
宣传栏