801天前2018-12-20 15:30:33 |    抢沙发  905 
OpenResty 是基于 Nginx 和 Lua 的一个高性能 Web 平台,内部集成了大量的 Lua 库和第三方模块以及大多数的依赖项。可以方便地搭建能够处理超高并发和扩展性极高的动态 Web 应用、Web 服务以及动态网关。接下来我们就来把OpenResty部署到生成环境中吧,我们用的是lomp既:linux+OpenResty+mysql+php。

我们第一步先对系统进行更新:

yum -y update
等更新完成以后我们就来安装需要的依赖组件:

yum install gc gcc gcc-c++ pcre-devel zlib-devel openssl-devel
等待安装完成。

然后我们先创建一个nginx用户和组,用于启动nginx以及php。

groupadd nginx

useradd -s /sbin/nologin -g nginx -M nginx
完成以后我们就可以去下载最新版的OpenResty了,官网地址:http://openresty.org/cn/

你也可以直接wget https://openresty.org/download/openresty-1.13.6.2.tar.gz

wget https://openresty.org/download/openresty-1.13.6.2.tar.gz
等待下载完成以后我们先赋予可执行权限:

chmod +x openresty-1.13.6.2.tar.gz
然后对其进行解压操作:

tar -xzvf openresty-1.13.6.2.tar.gz
等待解压完成以后我们进入到 openresty-1.13.6.2目录:

cd  openresty-1.13.6.2
然后我们对openresty进行配置参数设置:

./configure --user=nginx --group=nginx --prefix=/software/openresty --with-http_v2_module --with-http_ssl_module --with-http_gzip_static_module --with-luajit --with-http_stub_status_module --with-http_sub_module
参数解释:

--user    指定启动的用户

--group    指定启动的用户组

--prefix    指定要编译安装到的位置

后面的就是一些常用模块,建议都装上,否则下次还的重新编译。

预编译是一个漫长的过程你可以去喝杯咖啡。

等预编译结束以后如果没有报错我们就开始正式编译:

gmake
这个过程不算太短,等待编译完成以后如果没有报错的话我们就开始安装,既移动到指定的目录:

gmake install
这个过程很快,只是对已经编译好的模块进行位置的copy。

完成以后我们先给它加一个服务,否则每次启动都要进目录启动很烦的。

vim /etc/init.d/nginx

脚本内容:

#!/bin/sh
#
# nginx - this script starts and stops the nginx daemon
#
# chkconfig:   - 85 15
# description: Nginx is an HTTP(S) server, HTTP(S) reverse \
#               proxy and IMAP/POP3 proxy server
# processname: nginx
# config:      /software/nginx/conf/nginx.conf
# config:      /etc/sysconfig/nginx
# pidfile:     /var/run/nginx.pid

# Source function library.
. /etc/rc.d/init.d/functions

# Source networking configuration.
. /etc/sysconfig/network

# Check that networking is up.
[ "$NETWORKING" = "no" ] && exit 0

nginx="/software/openresty/nginx/sbin/nginx"
prog=$(basename $nginx)

NGINX_CONF_FILE="/software/openresty/nginx/conf/nginx.conf"

[ -f /etc/sysconfig/nginx ] && . /etc/sysconfig/nginx

lockfile=/var/lock/subsys/nginx

start() {
    [ -x $nginx ] || exit 5
    [ -f $NGINX_CONF_FILE ] || exit 6
    echo -n $"Starting $prog: "
    daemon $nginx -c $NGINX_CONF_FILE
    retval=$?
    echo
    [ $retval -eq 0 ] && touch $lockfile
    return $retval
}

stop() {
    echo -n $"Stopping $prog: "
    killproc $prog -QUIT
    retval=$?
    echo
    [ $retval -eq 0 ] && rm -f $lockfile
    return $retval
killall -9 nginx
}

restart() {
    configtest || return $?
    stop
    sleep 1
    start
}

reload() {
    configtest || return $?
    echo -n $"Reloading $prog: "
    killproc $nginx -HUP
RETVAL=$?
    echo
}

force_reload() {
    restart
}

configtest() {
$nginx -t -c $NGINX_CONF_FILE
}

rh_status() {
    status $prog
}

rh_status_q() {
    rh_status >/dev/null 2>&1
}

case "$1" in
    start)
        rh_status_q && exit 0
    $1
        ;;
    stop)
        rh_status_q || exit 0
        $1
        ;;
    restart|configtest)
        $1
        ;;
    reload)
        rh_status_q || exit 7
        $1
        ;;
    force-reload)
        force_reload
        ;;
    status)
        rh_status
        ;;
    condrestart|try-restart)
        rh_status_q || exit 0
            ;;
    *)
      echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload|configtest}"
        exit 2

esac
需要注意的是里面的可执行文件路径和配置文件路径需要修改成你自己的。

既:nginx="/software/openresty/nginx/sbin/nginx"和NGINX_CONF_FILE="/software/openresty/nginx/conf/nginx.conf"

到这里还不能启动nginx还需要对刚才新建的脚本添加权限,否则会报错

chmod 755 /etc/init.d/nginx
然后添加开机启动:

chkconfig --level 235 nginx on
到此我们就可以启动openresty(nginx)了。

启动指令:

service nginx restart
然后我们在浏览器里输入你的服务器ip应该就能看到openresty的欢迎页面了如下图:

openresty

到此我们的lomp的o就已经安装完毕了,下面我们来安装php7

下载rpm源:

wget http://dev.mysql.com/get/mysql57-community-release-el6-7.noarch.rpm
下载完成以后我们就可以安装yum源了:

yum install -y mysql57-community-release-el6-7.noarch.rpm
这个时候我们就可以通过yum的包搜索功能搜索到这个包了如下:

yum search mysql-community-server
如下图:

mysql-community-server

然后我们就可以进行mysql5.7的安装了:

yum install -y mysql-community-server
等待安装完成,可能会有点儿慢。。。

完成以后我们可以先对mysql进行配置文件修改,主要是指定数据存储目录和开启慢查询以及开启中文分词。

vim /etc/my.cnf
修改数据存储位置:

注释掉原来的datadir=/var/lib/mysql

新增一个自己的存储路径,比如:

datadir = /data/mysql
在[mysqld]段中加入:

slow_query_log = on
slow-query-log-file = /var/log/mysql-slow-query.log
long_query_time = 2
log_queries_not_using_indexes = ON
第一句是开启慢查询
第二句是用来定义慢查询日志的路径
第三句是用来定义查过多少秒的查询算是慢查询,我这里定义的是2秒
第四句就是记录下没有使用索引的query

最后我们来开启中文全文索引分词功能。

继续在[mysqld]段中加入:

ngram_token_size=2
这个2是指定的分词的长度大小;一般2个字比较好
分词的SIZE越小,索引的体积就越大,所以要根据自身情况来设置合适的大小。

到这里我们的配置文件就修改完成了。直接保存然后启动数据库就OK了。

service mysqld restart
启动以后我们就要查找数据库的默认密码,然后对密码进行重置。

查找默认密码:

grep 'temporary password' /var/log/mysqld.log
正常情况会列出如下面这句类似的内容:

2018-12-20T06:11:51.925592Z 1 [Note] A temporary password is generated for root@localhost: TXjXMJfFp7)A
其中TXjXMJfFp7)A就是mysql的默认密码我们用这个密码进行登录然后修改密码为我们自己的密码。

mysql -u root -p
然后回车 然后粘贴刚才我们复制的登陆密码。

这个时候就已经成功登陆了mysql。但是你会发现我们什么都不能做,因为我们还未修改数据库密码,注意新密码要求字母数字符号的组合。

set password = password('新密码');
到这里我们的mysql数据库就已经安装完毕,接下来我们添加一下开机启动就好了。

chkconfig --level 235 mysqld on
接下来我们安装php7

先安装两个yum源

rpm -Uvh https://www.32e.top/accessory/centos6/epel-release-6-8.noarch.rpm
rpm -Uvh https://www.32e.top/accessory/centos6/remi-release-6.rpm
然后我们去搜索一下有哪些可安装版本:

yum search php
php7

可以看到我们可安装的最新版本是php7.3

那么我们就来安装php7.3

yum install -y php73-php.x86_64 php73-php-cli.x86_64 php73-php-fpm.x86_64 php73-php-gd.x86_64 php73-php-json.x86_64 php73-php-mbstring.x86_64 php73-php-mysqlnd.x86_64 php73-php-odbc.x86_64 php73-php-opcache.x86_64 php73-php-pdo.x86_64 php73-php-pecl-mysql.x86_64 php73-php-pecl-mongodb.x86_64 php73-php-pecl-zip.x86_64 php73-php-pgsql.x86_64 php73-php-phpiredis.x86_64  php73-php-xml.x86_64 php73-php-xmlrpc.x86_64  php73-zephir php73-php-bcmath.x86_64
等待安装完成好我们就可以启动php了

service php73-php-fpm restart
然后我们来对php进行一些配置:

php配置文件位置:
多个地方都可以配置的话,就存在一个优先级。php-fpm.conf优先级比php.ini高。
/etc/opt/remi/php73/php-fpm.conf
/etc/opt/remi/php73/php.ini
/etc/opt/remi/php73/php-fpm.d/www.conf

我们对php.ini进行配置:

vim /etc/opt/remi/php73/php.ini
搜索upload_max_filesize 改为10M 这里修改的是上传最大文件大小。

搜索date.timezone 去掉注释改为: date.timezone = PRC 这里是设置时区。

在最下面添加:

zend_extension=/opt/remi/php73/root/usr/lib64/php/modules/opcache.so
opcache.huge_code_pages=1
opcache.file_cache=/tmp
上面是开启php加速。

/etc/opt/remi/php73/php-fpm.conf 这个配置文件主要可以配置一些日志方面的内容,我们略过。

下面看/etc/opt/remi/php73/php-fpm.d/www.conf

vim /etc/opt/remi/php73/php-fpm.d/www.conf
搜索user = apache 改为 user = nginx

搜索group = apache 改为 group = nginx

搜索slowlog = 这里我们可以修改一下慢日志的存储位置。比如:slowlog = /var/log/php-fpm/$pool-slow.log

搜索request_slowlog_timeout = 去掉注释改为 request_slowlog_timeout = 10s 这里是把执行超过秒的记录下来

搜索session.save_path 这里可以修改session的存储路径 比如:php_value[session.save_path]    = /var/php/session

修改了路径记得一定要有这个路径否则就要创建。

到这里我们的三大件就已经安装好了,剩下的就是配置nginx使它支持php。

cd /software/openresty/nginx/conf
上面是nginx的配置文件位置。

下面是我优化过的配置文件:

user  nginx;
worker_processes  4;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;
error_log logs/error.log warn;
#pid        logs/nginx.pid;


events {
    worker_connections  65535;
}


http {

#禁止未绑定域名访问
server {
    listen       80  default_server;
    server_name  _;
    return       404;
   }

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

############
log_format main     '$remote_addr,'
                    '$http_x_forwarded_for ,'
                    '$remote_user ,'
                    '$time_iso8601,'
                    '"$request",'
                    '$status,'
                    '$body_bytes_sent,'
                    '"$http_referer",'
                    '"$http_user_agent"';
    server_tokens off;
    sendfile        on;
    tcp_nopush     on;
    keepalive_timeout 60;
    client_header_timeout 15;
    client_body_timeout 60s;
    send_timeout 25s;
    client_header_buffer_size 4k;
    open_file_cache max=65535 inactive=20s;
    open_file_cache_valid 30s;
    open_file_cache_min_uses 1;
    tcp_nodelay on;
    gzip on;
    gzip_min_length   1k;
    gzip_buffers     4 16k;
    gzip_http_version 1.1;
    gzip_comp_level 7;
    gzip_types  text/css text/xml application/javascript;
    gzip_vary on;
    fastcgi_connect_timeout 300;
    fastcgi_send_timeout 300;
    fastcgi_read_timeout 300;
    fastcgi_buffer_size 16k;
    fastcgi_buffers 16 16k;
    fastcgi_busy_buffers_size 128k;
    fastcgi_temp_file_write_size 246k;








    #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;

    #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;
    #    }
    #}
include sites-enabled/*.conf;
}
当然你也可以吧注释都删除掉这样更简洁。

然后我们创建一下虚拟主机的配置文件目录:

mkdir sites-enabled
然后我们来创建一个php的配置文件这个文件主要是用来让nginx支持php的

vim php-fpm.conf
配置文件内容如下:

location ~ \.php$ {
    try_files                   $uri = 404;
    fastcgi_pass                127.0.0.1:9000;
    fastcgi_index               index.php;
    fastcgi_intercept_errors    on;
    fastcgi_param  SCRIPT_FILENAME  /$document_root$fastcgi_script_name;
    include                     fastcgi_params;
}
接下来我们就来创建一个虚拟主机:

vim sites-enabled/default.conf
添加内容如下:

server {
    listen       80;
    server_name  www.test.com;
    root         /data/web/test/;

    location / {
        index  index.html index.htm index.php;
        include     php-fpm.conf;
    }
}
然后在网站目录/data/web/test/下创建一个测试文件:

vim /data/web/test/index.php
内容如下:

<?php
phpinfo();
?>
然后重启nginx

service nginx restart
这个时候输入你的域名应该就能看到php的info信息了。

到这里咱们的教程也就结束了。希望能够帮到你,也给自己做下笔记。

发表评论

暂无评论

登录

忘记密码 ?

切换登录

注册

扫一扫二维码分享