• 小阿轩yx-Nginx 网站服务


    小阿轩yx-Nginx 网站服务

    • 由俄罗斯的 lgor Sysoev 开发
    • 其稳定、高效的特性逐渐被越来越多的用户认可

    Nginx 服务基础

    Nginx (发音为[engine x])专为性能优化而开发

    最知名的优点

    • 稳定性
    • 低系统资源消耗
    • 以及对 HTTP 并发连接的高处理能力(单台物理服务器可支持 30000~50000个并发请求)

    Nginx 1.12 安装及运行控制

    安装文件可以从官方网站下载

    http://http:/hwww.nginx.org

    编译安装 Nginx

    安装支持软件

    Nginx 的配置及运行需要软件包的支持

    • pcre
    • zlib等

    因此应预先安装这些软件的开发包(devel)以便提供相应的库和头文件,确保Nginx的安装顺利完成。

    [root@localhost ~]# yum -y install pcre-devel zlib-devel gcc++ gcc
    创建运行用户、组
    • Nginx 服务程序默认以 nobody 身份运行

    建议为其创建专门的用户账号,以便更准确

    • 控制其访问权限
    • 增加灵活性
    • 降低安全风险

    创建一个名为nginx 的用户,不建立宿主文件夹,也禁止登录到Shel 环境

    [root@localhost ~]# useradd -M -s /sbin/nologin nginx
    编译安装 Nginx
    1. [root@localhost ~]# tar zxf nginx-1.12.0.tar.gz
    2. [root@localhost ~# cd nginx-1.12.0
    3. [root@localhost nginx-1.12.0]#./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http stub status module
    4. [root@localhost nginx-1.12.0]# make && make install

    为了使 Nginx 服务器的运行更加方便,可以为主程序 nginx 创建链接文件

    以便管理员直接执行“nginx”命令就可以调用 Nginx 的主程序

    1. [root@locahostnginx-1.12.0]#In-s /usr/localnginx/sbin/nginx/usr/local/sbin/
    2. [root@localhost nginx-1.12.0]#ls -l /usr/local/sbin/nginx
    3. Irwxrwxrwx 1 root root 27 516 16:50 /usr/local/sbin/nginx->/usr/localinginx/sbin/nginx

    Nginx 的运行控制

    • Nginx 的主程序也提供了"-t"选项用来对配置文件进行检查,以便找出不当或错误的配置。
    • 配置文件 nginx.conf默认位于安装目录下的 conf/子目录中。
    • 若要检查位于其他位置的配置文件,可使用“-c”选项来指定路径。
    检查配置文件
    1. [root@localhost ~]# nginx -t
    2. nginx: the configuration file /usr/local/nginx/confinginx.conf syntax is ok
    3. nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful

    启动、停止 Nginx

    • 直接运行 Nginx 即可启动 Nginx 服务器,这种方式将使用默认的配置文件
    • 若要改用其他配置文件,需添加“-c配置文件路径”选项来指定路径。
    • 需要注意的是,若服务器中已装有 httpd 等其他 Web 服务软件,应采取措施(修改端口、停用或卸载)避免冲突。
    [root@local ~]# nginx

    检查 Nginx 程序的监听状态,或者在浏览器中访问此Web 服务(默认页面将显示“Welcome to nginx!”),可以确认 Nginx 服务是否正常运行。

    1. [root@localhost ~]# netstat -anpt | grep nginx
    2. tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 7180/nginx:master
    3. [root@localhost ~]# yum -y install elinks
    4. //使用 elinks 浏览器
    5. [root@localhost ~]# elinks http://localhost
    6. //显示“Welcome to nginx!"页面,表明 Nginx 服务已经正常运行

    主程序 Nginx 支持标准的进程信号

    通过 ki 或 kilall 命令发送

    • HUP 信号表示重载配置
    • QUIT 信号表示退出进程
    • KILL信号表示杀死进程

    使用 killall 命令,重载配置、停止服务的操作分别如下所示(通过“-s”选项指定信号种类)。

    1. //选项 -S HUP 等同于 -1
    2. [root@localhost ~]# killall -s HUP nginx
    3. //选项 -S QUIT 等同于 -3
    4. [root@localhost ~]# killall -s QUIT nginx

    添加 Nginx 系统服务

    使 Nginx 服务的启动、停止、重载等操作更加方便,可以编写 Nginx 服务脚本,并使用 chkconfig 和 systemctl 工具来进行管理,也更加符合 CentOS7.3 系统的管理习惯。

    1. [root@localhost ~]# vim /etc/init.d/nginx#!
    2. /bin/bash
    3. #chkconfig:-99 20
    4. #description:Nginx Service Control Script
    5. PROG="/usr/local/nginxsbin/nginx"
    6. PIDF="/usr/local/nginx/logs/nginx.pid"
    7. case "$1" in
    8. start)
    9. $PROG
    10. ;;
    11. stop)
    12. kill -s QUIT $(cat $PIDF)
    13. restart)
    14. $0 stop
    15. $0 start
    16. reload)
    17. kill -s HUP $(cat $PIDF)
    18. ;;
    19. *)
    20. echo "Usage: $0 {start|stoplrestart|reload}'
    21. exit 1
    22. esac
    23. exit 0
    24. [root@localhost ~]# chmod +x /etc/init.dinginx
    25. [root@localhost ~# chkconfig --add nginx
    26. [root@localhost ~]# systemctl status nginx
    27. nginx.service -SYSV: Nginx Service Control Script
    28. Loaded: loaded (/etc/rc.d/init.d/nginx; bad; vendor preset: disabled)
    29. Active: inactive (dead)
    30. Docs: man:systemd-sysv-generator(8)

    配置文件 nginx.conf

    Nginx 服务器的主配置文件/usr/local/nginx/confnginx.conf中包括三大块内容

    • 全局配置
    • I/O事件配置
    • HTTP 配置

    配置语句的格式为“关键字 值;”(末尾以分号表示结束),以“#”开始的部分表示注释

    全局配置
    • 由各种配置语句组成
    • 不使用特定的界定标记

    全局配置部分包括Nginx 服务

    • 运行用户
    • 工作进程数
    • 错误日志
    • PID 存放位置等基本设置
    1. //运行用户
    2. #user nobody;
    3. //工作进程数量
    4. worker_processes 1;
    5. //错误日志文件的位置
    6. #error_log logs/error.log;
    7. //PID 文件的位置
    8. #pid logs/nginx.pid;

    worker_processes 表示工作进程的数量。如果网站访问量需求并不大,一般设为1就够用了。

    IO 事件配置

    使用“events {}”界定标记

    • 用来指定 Nginx 进程的 I/O 响应模型
    • 每个进程的连接数等设置

    2.6及以上版本的内核,建议用 epoll模型提高性能

    每个进程的连接数根据实际需要来定,一般在 10000 以下(默认为 1024)。

    1. events {
    2. //使用 epoll 模型
    3. use epoll;
    4. //每进程处理 4096个连接
    5. worker connections 4096;
    6. }
    HTTP 配置

    使用“http {}”界定标记,包括

    • 访问日志
    • HTTP 端口
    • 网页目录
    • 默认字符集
    • 连接保持
    • 以及后面要讲到的虚拟 Web 主机
    • PHP 解析等一系列设置

    其中大部分配置语句都包含在子界定标记“server {}”内

    1. http {
    2. include mime.types;
    3. default type application/octet-stream,
    4. log_format main '$remote addr-$remote user I$time local] "$request"'
    5. '$status $body bytes sent "$http referer"'
    6. '$http user agent""$http x forwarded for"';
    7. //访问日志位置
    8. access_log logs/access.og main;
    9. //支持文件发送(下载)
    10. sendfile on;
    11. #tcp nopush on;
    12. #keepalive timeout 0;
    13. //连接保持超时
    14. keepalive timeout 65;
    15. #gzip on;
    16. //Web 服务的监听配置
    17. server {
    18. //监听地址及端口
    19. listen 80;
    20. //网站名称(FQDN)
    21. server name:www.bt.com;
    22. //网页的默认字符集
    23. charset utf-8;
    24. //根目录配置
    25. location /{
    26. //网站根目录的位置
    27. root html;
    28. //默认首页(索引页)
    29. index index.html index.php;
    30. }
    31. //内部错误的反馈页面
    32. error_page 500 502 503 504 /50x.html;
    33. //错误页面配置
    34. location = /50x.html{
    35. root html;
    36. }
    37. }
    38. }
    • listen 语句允许同时限定 |P 地址,采用“IP 地址:端口"形式
    • root 语句用来设置特定访问位置(如“location/"表示根目录)的网页文档路径,默认为 Nginx 安装目录下的 html/子目录
    访问状态统计

    Nginx 内置了 HTTP_STUB STATUS 状态统计模块,用来反馈当前的 Web 访问情况。

    配置编译参数时可添加--with-http_stub_status_module 来启用此模块支持,可以使用命令/usr/local/nginx/sbin/nginx - 査看已安装的 Nginx 是否包含 HTTP STUB STATUS 模块。

    要使用 Nginx 的状态统计功能,除了启用内建模块以外,还需要修改 nginx.conf配置文件,指定访问位置并添加 stub status 配置代码

    1. [root@localhost ~]# vim /usr/local/nginx/conf/nginx.conf
    2. http {
    3. server {
    4. listen 80;
    5. server_name localhost;
    6. charset utf-8;
    7. location / {
    8. root html;
    9. index index.html index.htm;
    10. }
    11. location /status {
    12. stub_status on;
    13. access_log off;
    14. }
    15. }
    16. }
    [root@localhost ~]# systemctl restart nginx

    新的配置生效以后,在浏览器中访问 Nginx 服务器的/status 网站位置,可以看到当前的状态统计信息

    • “Active connections”表示当前的活动连接数(4)
    • “server accepts handled requests”表示已经处理的连接信息
    • 三个数字依次表示已处理的连接数(4)
    • 成功的 TCP 握手次数(4)
    • 已处理的请求数(3)

    Nginx 访问控制

    基于授权的访问控制

    简介
    • Nginx与 Apahce 一样,可以实现基于用户授权的访问控制
    • 客户端想要访问网站或者目录时,要输入用户名和密码才能正常访问,配置步骤与 Apache 基本一致

    概括为几个步骤

    • 生成用户密码认证文件。
    • 修改主配置文件相对应目录,添加认证配置项。
    • 重启服务,访问测试。
    基于授权的访问控制步骤

    使用 htpasswd 生成用户认证文件,如果没有该命令,可使用 yum 安装 httpd-tools软件包

    [root@localhost ~]# yum -y install httpd-tools

    注:httpd-tools提供了htpasswd命令

    1. [root@localhost ~]# htpasswd -c /usr/local/nginx/passwd.db test
    2. root@localhost ~]# cat /usr/local/nginx/passwd.db
    3. New password:
    4. Re-type new password:Adding password for user test
    5. [root@localhost ~]# cat /usr/local/nginx/passwd.db
    6. test:$apr1$x.UaSXIM$RRLa2KJcKwsGBVsikGcrR/

    修改密码文件权限为 400,将所有者改为 nginx,设置 Nginx 的运行用户能够读取

    1. [root@localhost ~]# chmod 400 /usr/local/nginx/passwd.db
    2. [root@localhost ~]# chown nginx /usr/local/nginx/passwd.db
    3. [root@localhost ~]# ll -d /usr/local/nginx/passwd.db
    4. -r-------- 1 nginx root 43 516 22:26 /usr/local/nginx/passwd.db

    修改主配置文件 nginx.conf,添加相应认证配置项

    1. [root@localhost ~]# vim /usr/local/nginx/conf/nginx.conf
    2. server {
    3. listen 80;
    4. server_name localhost;
    5. #charset koi8-r;
    6. #access_log logs/host.access.log main;
    7. location / {
    8. root html;
    9. index index.html index.htm;
    10. auth_basic "secret";
    11. auth_basic_user_file /usr/local/nginx/passwd.db;
    12. }

    检测语法、重启服务

    1. [root@localhost ~]# nginx -t
    2. nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
    3. nginx: configuration file /usr/local/nginxconf/nginx.conf test is successful
    4. [root@localhost ~]# systemctl restart nginx

    用浏览器访问网址,检验控制效果

    基于客户端的访问控制

    简介
    • 基于客户端的访问控制是通过客户端IP地址,决定是否允许对页面访问
    • Nginx 基于客户端的访问控制要比 Apache 简单

    规则

    • deny IP/IP 段:拒绝某个 IP 或 IP 段的客户端访问。
    • allow IP/IP 段:允许某个|P 或 IP 段的客户端访问。
    • 规则从上往下执行,如匹配则停止,不再往下匹配。
    基于客户端的访问控制步骤

    修改主配置文件 nginx.conf,添加相应配置项

    1. location / {
    2. root html;
    3. index index.html index.htm;
    4. # auth_basic "secret";
    5. # auth_basic_user_file /usr/local/nginx/passwd.db;
    6. deny 192.168.10.3;
    7. allow all;
    8. }
    • Deny 192.168.9.207 表示这个 |P 地址访问会被拒绝,其他 IP 客户端正常访问

    重启服务器访问网址,页面已经访问不到

    Nginx 虚拟主机

    • 不用为每个要运行的网站提供一台单独的 Nginx 服务器或单独运行一组 Nginx 进程,提供了在同一台服务器,同一组 Nginx 进程上运行多个网站的功能。

    提示:将参数还原 

    1. location / {
    2. root   html;
    3. index  index.html index.htm;
    4.         #auth_basic "secret";
    5.         #auth_basic_user_file /usr/local/nginx/passwd.db;
    6.         #deny 192.168.10.3;
    7.         #allow all;
    8.         }

    也可以配置多种类型的虚拟主机

    • 基于 IP 的虚拟主机
    • 基于域名的虚拟主机
    • 基于端口的虚拟主机

    基于域名的虚拟主机

    设置客户端域名解析

    修改hosts 文件,加入www.benet.com www.accp.com 这两个域名

    1. 192.168.10.101 www.benet.com
    2. 192.168.10.101 www.accp.com

    准备各个网站的目录和测试首页

    1. [root@localhost ~]# mkdir -p /var/www/html/benet/
    2. [root@localhost ~]# mkdir -p /var/www/html/accp/
    3. [root@localhost ~]# echo "www.benet.com">> /var/www/html/benet/index.html
    4. [root@localhost ~]# echo "www.accp.com">>/var/www/html/accp/index.html

    修改配置文件

    1. [root@localhost ~]# vim /usr/local/nginx/conf/nginx.conf
    2. //加入 www.benet.com 对应的站点
    3. server {
    4. //监听地址
    5. listen 80;
    6. server_name www.benet.com;
    7. //日志文件
    8. access_log logs/www.benet.com.access.log;
    9. charset utf-8;
    10. location / {
    11. //www.benet.com的工作目录
    12. root /var/www/html/benet;
    13. index index.html index.htm;
    14. }
    15. error_page 500 502 503 504 /50x.html;
    16. location = 50x.html {
    17. root html;
    18. }
    19. }
    20. //加入 www.accp.com
    21. server {
    22. //监听地址
    23. listen 80;
    24. server_name www.accp.com;
    25. //日志文件
    26. access_log logs/www.accp.com.access.log;
    27. charset utf-8;
    28. location / {
    29. //www.accp.com的工作目录
    30. root /var/www/html/accp;
    31. index index.html index.htm;
    32. }
    33. error_page 500 502 503 504 /50x.html;
    34. location = 50x.html {
    35. root html;
    36. }
    37. }
    1. //检测配置文件的语法
    2. [root@localhost ~]# nginx -t
    3. nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
    4. nginx: configuration file /usr/local/nginx/confinginx.conf test is successful
    5. [root@localhost ~]# systemctl restart nginx

    测试

    基于 IP 的虚拟主机

    为服务器设置多个IP地址

    1. root@www conf# ip addr
    2. //省略内容
    3. inet 192.168.9.158/24 brd 192.168.9.255 scope global dynamic ens33
    4. /省略内容

     再配置一个虚拟IP为192.168.9.110

    1. [root@www conf# ifconfig ens33:0 192.168.9.110
    2. [root@www conf# ip addr
    3. //省略内容
    4. inet 192.168.9.158/24 brd 192.168.9.255 scope global dynamic ens33
    5. valid_lft 7178sec preferred lft 7178sec
    6. inet 192.168.9.110/24 brd 192.168.9.255 scope global secondary ens33:0
    7. //省略内容

    修改 Nginx的配置文件,使基于IP 的虚拟主机生效

    1. ​​​​​​​root@localhost~# vim /usr/local/nginx/confinginx.conf
    2. server {
    3. //监听 192.168.9.158
    4. listen192.168.9.158:80;
    5. server_name 192.168.9.158:80:
    6. //省略内容
    7. }
    8. server {
    9. //监听 192.168.9.110
    10. listen 192.168.9.110:80;
    11. server name192.168.9.110:80;
    12. //省略内容
    13. }

     重启服务

    [root@localhost ~]# systemctl restart nginx

    浏览器访问2个IP地址,查看是否访问到不同的页面

    基于端口的虚拟主机

    选择系统中不使用的端口,多个端口映射到同一 IP 地址

    1. [root@localhost ~]# vim /usr/local/nginx/conf/nginx.conf
    2. server {
    3. listen 192.168.10.101:8080;
    4. server_name www.benet.com;
    5. .....
    6. }
    7. server {
    8. listen 192.168.10.101:8888;
    9. server_name www.accp.com;
    10. .....
    11. }

     重启服务 

    [root@localhost ~]# systemctl restart nginx

    检测端口是否运行正常

    1. [root@localhost ~]# netstat -anpt | grep nginx
    2. tcp 0 0 192.168.9.158:66660.0.0.0:* LISTEN 3838/nginx: master
    3. tcp 0 0 192.168.9.158:88880.0.0.0:* LISTEN 3838/nginx: master

    分别访问 2 个端口地址

    LNMP 架构部署及应用

    • LAMP 平台是目前应用最为广泛的网站服务器架构
    • “A”对应着 Web 服务软件 Apache。
    • 随着 Nginx在企业中的使用越来越多,LNMP(或LEMP)架构也越老越受到企业的青睐。

    恢复前面做得快照,继续做后面得实验

    构建 LNMP 网站平台

    安装 MySQL 服务

    编译安装 MySQL 服务

    [root@www ~]# yum install -y autoconf

    注:初始化mysql需要autoconf,它是自动化配置脚本生成工具,安装自动化脚本生成工具

    [root@localhost ~]# yum -y install ncurses-devel gcc-c++ perl-Module-Install cmake

    备注:

    • ncurses是字符终端下屏幕控制的基本库,大多数的 Linux 实用程序仅仅只在屏幕的底部滚动文本。

    • curses 是一个旧的 Unix 库,它可以在文本终端界面控制光标。curses 的名称就来自于术语 “ 光标控制(cursor control)”。

    1. [root@localhost ~]# tar -zxvf mysql-5.6.36.tar.gz
    2. [root@localhost ~]# cd mysql-5.6.36/
    3. [root@localhost mysql-5.6.36]# cmake \
    4. -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
    5. -DDEFAULT_CHARSET=utf8 \
    6. -DDEFAULT_COLLATION=utf8_general_ci \
    7. -DWITH_EXTRA_CHARSETS=all \
    8. -DSYSCONFDIR=/etc
    [root@localhost mysql-5.6.36]# make && make install

    注:

    • CMake是一个跨平台的安装工具,可以用简单的语句来描述所有平台的安装(编译过程)。

    • -DDEFAULT_COLLATION:用于指定数据集如何排序,以及字符串的比对规则

    • 常用的编译工具有cmake和configure。

    • ./configure是用来检测你的安装平台的目标特征的

    • make是用来编译的,它从Makefile中读取指令,然后编译。

    • make install是用来安装的,它也从Makefile中读取指令,安装到指定的位置

    复制配置文件到/etc 下,并把 MySQL 添加到服务

    1. [root@localhost mysql-5.6.36]# cp support-files/my-default.cnf /etc/my.cnf
    2. [root@localhost mysql-5.6.36]# cp support-files/mysql.server /etc/init.d/mysqld
    3. [root@localhost mysql-5.6.36]# chmod +x /etc/rc.d/init.d/mysqld
    4. [root@localhost mysql-5.6.36]# chkconfig --add mysqld
    5. [root@localhost mysql-5.6.36]# chkconfig mysqld on
    1. [root@localhost mysql-5.6.36]# echo "PATH=$PATH:/usr/local/mysql/bin">> /etc/profile
    2. [root@localhost mysql-5.6.36]# . /etc/profile

    初始化数据库

    1. [root@localhost ~]# groupadd mysql
    2. [root@localhost ~]# useradd -M -s /sbin/nologin mysql -g mysql
    3. [root@localhost ~]# chown -R mysql.mysql /usr/local/mysql
    [root@localhost ~]# /usr/local/mysql/scripts/mysql_install_db --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --user=mysql

    启动 mysql,并设置密码

    1. [root@localhost ~]# systemctl start mysqld
    2. [root@localhost ~]# mysqladmin -u root password '123.com'

    安装 PHP 解析环境

    新版本PHP(如 5.5 版本)已经自带FPM(FastCGl Process Manager,FastCGl进程管理器)模块,用来对 PHP 解析实例进行

    • 管理
    • 优化
    • 解析效率

    单服务器的LNMP 架构通常使用这种方式,配置 PHP 编译选项时应添加""--enable-fpm”"以启用此模块

    编译安装 PHP
    [root@localhost ~]# yum -y install gd libxml2-devel libjpeg-devel libpng-devel

    备注:

    • libxml2-devellibxml是一个用来解析XML文档的函数库
    • libjpeg-devel  #是一个完全用C语言编写的库,包含了被广泛使用的JPEG解码、JPEG编码和其他的JPEG功能的实现  
    • libpng-devel   #libpng 是一套免费的、公开源代码的程序库,支持对 PNG 图形文件的创建、读写等操作  
    • GD指的是Graphic Device,PHP的GD库是用来处理图形的扩展库,通过GD库提供的一系列API,可以对图像进行处理或者直接生成新的图片。PHP除了能进行文本处理以外,通过GD库,可以对JPG、PNG、GIF、SWF等图片进行处理
    • zlib-devel   #Zlib是一个压缩和解压模块
    1. [root@localhost ~]#tar -zxvf php-5.5.38.tar.gz
    2. [root@localhost ~]#cd php-5.5.38/
    3. [root@localhost php-5.5.38]# ./configure \
    4. --prefix=/usr/local/php5 \
    5. --with-gd \
    6. --with-zlib \
    7. --with-mysql=/usr/local/mysql \
    8. --with-mysqli=/usr/local/mysql/bin/mysql_config \
    9. --with-config-file-path=/usr/local/php5 \
    10. --enable-mbstring \
    11. --enable-fpm \
    12. --with-jpeg-dir=/usr/lib

    备注:如果使用yum安装mariadb数据库,则配置参数

    1. [root@localhost php-5.5.38]# ./configure \
    2. --prefix=/usr/local/php5 \
    3. --with-gd \
    4. --with-zlib \
    5. --with-mysql=mysqlnd \
    6. --with-mysqli=mysqlnd \
    7. --with-config-file-path=/usr/local/php5 \
    8. --enable-mbstring \
    9. --enable-fpm \
    10. --with-jpeg-dir=/usr/lib

    备注:可简化参数为

    1. ./configure \
    2. --prefix=/usr/local/php5 \
    3. --with-mysql=mysqlnd \
    4. --with-mysqli=mysqlnd \
    5. --with-config-file-path=/usr/local/php5 \
    6. --enable-mbstring \
    7. --enable-fpm

    注:

    • --with-mysqli=mysqlnd需要用ip地址的方式连接数据库,既可以是php和mysql装在同一个服务器,也可以装在不同的服务器

    • --with-mysqli=/usr/bin/mysql_config需要用localhost连接数据库,只能用于本地连接,也就是php和mysql装在同一个服务器上

    [root@localhost php-5.5.38]# make && make install

    安装后调整

    1. [root@localhost php-5.5.38]# cp php.ini-development /usr/local/php5/php.ini
    2. [root@localhost php-5.5.38]# ln -s /usr/local/php5/bin/* /usr/local/bin/
    3. [root@localhost php-5.5.38]# ln -s /usr/local/php5/sbin/* /usr/local/sbin/

    安装 ZendGuardLoader

    1. [root@localhost ~]# tar -zxvf zend-loader-php5.5-linux-x86_64_update1.tar.gz
    2. [root@localhost ~]# cd zend-loader-php5.5-linux-x86_64/
    3. [root@localhost zend-loader-php5.5-linux-x86_64]# cp ZendGuardLoader.so /usr/local/php5/lib/php/
    4. [root@localhost zend-loader-php5.5-linux-x86_64]# vim /usr/local/php5/php.ini
    5. 添加下列内容:
    6. zend_extension=/usr/local/php5/lib/php/ZendGuardLoader.so
    7. zend_loader.enable=1
    配置 Nginx 支持 PHP 环境

     Nginx 解析 PHP 网页有两种方法可以选择

    • 其一,充当中介,将访问 PHP页面的 Web 请求转交给其他服务器(LAMP)去处理
    • 其二,通过使用PHP 的 FPM 模块来调用本机的 PHP 环境

    启用 php-fpm 进程

    需要先启动 php-fpm 进程,以便监听 php 解析请求

    1. [root@localhost ~]# cd /usr/local/php5/etc/
    2. [root@localhost etc]# cp php-fpm.conf.default php-fpm.conf
    3. [root@localhost etc]# useradd -M -s /sbin/nologin php
    4. [root@localhost etc]# vim php-fpm.conf
    5. pid = run/php-fpm.pid
    6. user = php
    7. group = php
    8. ##最多子进程数
    9. pm.max_children = 50
    10. ##启动时开启的进程数
    11. pm.start_servers = 20
    12. ##最少空闲进程数
    13. pm.min_spare_servers = 5
    14. ##最多空闲进程数
    15. pm.max_spare_servers = 35
    1. [root@localhost etc]# /usr/local/sbin/php-fpm
    2. [root@localhost etc]# netstat -anpt | grep php-fpm
    1. [root@localhost etc]# vim /etc/init.d/nginx
    2. #!/bin/bash
    3. #chkconfig: - 99 20
    4. #description:Nginx Service Control Script
    5. PROG="/usr/local/nginx/sbin/nginx"
    6. PIDF="/usr/local/nginx/logs/nginx.pid"
    7. PROG_FPM="/usr/local/sbin/php-fpm"
    8. PIDF_FPM="/usr/local/php5/var/run/php-fpm.pid"
    9. case "$1" in
    10. start)
    11. $PROG
    12. $PROG_FPM
    13. ;;
    14. stop)
    15. pkill nginx
    16. pkill php-fpm
    17. ;;
    18. restart)
    19. $0 stop
    20. $0 start
    21. ;;
    22. reload)
    23. kill -s HUP $(cat $PIDF)
    24. kill -s HUP $(cat $PIDF_FPM)
    25. ;;
    26. *)
    27. echo "Usage: $0 {start|stop|restart|reload}"
    28. exit 1
    29. esac
    30. exit 0
    1. [root@localhost ~]# systemctl daemon-reload
    2. [root@localhost ~]# systemctl restart nginx

    配置 Nginx 支持 PHP 解析

    第一种方法:转给其他 Web 服务器处理

    1. [root@localhost ~]# vim /usr/local/nginx/conf/nginx.conf
    2. Server{
    3. root /var/www/kgc/bbs;
    4. location ~ \.php$ {
    5. proxy_pass http://192.168.10.101:80;
    6. }
    7. }

    第二种方法:调用本机的 php-fpm 进程

    1. [root@localhost ~]# vim /usr/local/nginx/conf/nginx.conf
    2. Server{
    3. listen 80;
    4. server_name www.bt.com;
    5. location / {
    6. root /var/www/html;
    7. index index.html index.htm index.php;
    8. }
    9. location ~ \.php$ {
    10. root /var/www/html;
    11. fastcgi_pass 127.0.0.1:9000;
    12. fastcgi_index index.php;
    13. include fastcgi.conf;
    14. }
    15. }

    备注:

    Nginx 与 php-fpm 通信过程是通过 nginx 的 fastcgi 模块来处理的,即 fastcgi 模块将来自客户端的关于 php 文件的请求转发给 php-fpm 来处理

    PHP 页面访问测试

    [root@localhost ~]# mkdir -p /var/www/html/
    1. [root@localhost ~]# vim /var/www/html/test1.php
    2. phpinfo();
    3. ?>
    1. [root@localhost ~]# vim /var/www/html/test2.php
    2. $link=mysqli_connect('127.0.0.1','root','pwd123');
    3. if($link) echo "

      恭喜你,数据库连接成功啦!!!

      "
      ;
    4. mysqli_close($link);
    5. ?>

    在 LNMP 平台中部署 Web 应用

    • LNMP 平台与 LAMP 平台是非常相似的,区别主要在于所用 Web 服务软件的不同
    下载并部署程序代码
    1. [root@localhost ~]# yum -y install unzip
    2. [root@localhost ~]# unzip Discuz_X3.3_SC_UTF8.zip
    3. [root@localhost ~]# mkdir -p /var/www/html/bbs
    4. [root@localhost ~]# mv upload/* /var/www/html/bbs
    5. [root@localhost ~]# chown -R php:php /var/www/html/bbs/
    创建数据库
    1. [root@localhost ~]# mysql -uroot -p
    2. mysql>create database bbs;
    3. mysql>grant all on bbs.* to runbbs@127.0.0.1 identified by 'bbs123';
    4. mysql>grant all on bbs.* to runbbs@'localhost' identified by 'bbs123';
    安装 Web 应用

    访问服务器 URL 地址,对网站进行初始化

    确保系统环境、目前权限、缓存可写性等检测通过,否则安装将无法继续

    访问 Web 应用系统

    小阿轩yx-Nginx 网站服务

  • 相关阅读:
    军事ar虚拟现实电子沙盘系统的功能
    vim 从嫌弃到依赖(23)——最后的闲扯
    vue beforeEach 路由拦截 cookie 登录管理 jsonwebtoken 表单提交校验 sessionStorage localStorage
    数字电路中的基础电路结构
    如何使用sr2t将你的安全扫描报告转换为表格格式
    黑马点评第二个模块---商户查询缓存
    栈的概念及用法
    社区团购:优势、模式与未来发展趋势
    小程序优化实践
    Android12---Alarm 闹钟去除重复铃声(MTK平台)
  • 原文地址:https://blog.csdn.net/2401_83435725/article/details/140047150