自学内容网 自学内容网

Nginx网站服务

Nginx(发音为[enginex])专为性能优化而开发,优点是它的稳定性和低系统资源消耗,以及对 HTTP 并发连接的高处理能力(单台物理服务器可支持 30000~50000个并发请求(apache3000-5000))

  • 轻量级web服务
  • 反向代理
  • 正向代理
  • 动静分离

一、Nginx 安装及运行控制

    • Nginx 安装文件可以从官方网站 http:/ww.nginx.org/下载

        1:编译安装Nginx

//安装支持软件
//Nginx 的配置及运行需要 pcre、zlib 等软件包的支持,因此应预先安装这些软件的开发包(devel),以便提供相应的库和头文件,确保 Nginx 的安装顺利完成
[root@localhost ~]# yum -y install pcre-devel zlib-devel gcc++ gcc openssl-devel

//创建运行用户、组
//Nginx 服务程序默认以 nobody 身份运行,建议为其创建专门的用户账号,以便更准确地控制其访问权限,增加灵活性、降低安全风险
[root@localhost ~]# useradd -M -s /sbin/nologin nginx

//编译安装 Nginx
//配置 Nginx的编译选项时,将安装目录设为/usr/local/nginx,运行用户和组均设为nginx;启用 http_stub_status_module 模块以支持状态统计,便于查看服务器的连接信息
[root@localhost ~]# tar zxf nginx-1.12.0.tar.gz
[root@localhost ~l# cd nginx-1.12.0
[root@localhost nginx-1.12.0]# ./configure  --prefix=/usr/local/nginx  --user=nginx --group=nginx  --with-http_stub_status_module
[root@localhost nginx-1.12.0]# make&&make install

//为了使 Nginx 服务器的运行更加方便,可以为主程序 nginx 创建链接文件,以便管理员直接执行“nginx”命令就可以调用 Nginx 的主程序
[root@localhost nginx-1.12.0]# ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/
[root@localhost nginx-1.12.0]# ls -l /usr/local/sbin/nginx
Irwxrwxrwx 1 root root 275月16 16:50 /usr/local/sbin/nginx -> /usr/local/nginx/sbin/nginx

        2:Nginx的运行控制

//(1)检查配置文件
//与 Apache 的主程序 httpd 类似,Nginx 的主程序也提供了"-t”选项用来对配置文件进行检查,以便找出不当或错误的配置
[root@localhost ~l# nginx -t

//(2)启动、停止Nginx
//直接运行 Nginx 即可启动 Nginx 服务器,这种方式将使用默认的配置文件,若要改用其他配置文件,需添加“-c配置文件路径”选项来指定路径
//需要注意的是,若服务器中已装有 httpd 等其他 Web 服务软件,应采取措施(修改端口、停用或卸载)避免冲突
[root@localhost ~]# nginx
[root@localhost ~]# netstat -anpt | grep nginx
tcp   0    0 0.0.0.0:80    0.0.0.0:*    LISTEN        7180/nginx: master
[root@localhost ~l# yum -y install elinks
[root@localhost ~]# elinks http://localhost        //使用 elinks 浏览器
//显示“Welcome to nginx!”页面,表明 Nginx 服务已经正常运行

//主程序 Nginx 支持标准的进程信号,通过 kil 或 killal 命令发送 HUP 信号表示重载配置QUIT 信号表示退出进程,KILL信号表示杀死进程
[root@localhost ~]# killall -s HUP nginx        //选项 -S HUP 等同于 -1
[root@localhost ~]# killall -s QUIT nginx        //选项 -s QUIT 等同于 -3
//当 Nginx 进程运行时,PID 号默认存放在 logs/目录下的 nginx.pid 文件中,因此若改用ki 命令,也可以根据 nginx.pid 文件中的 PID 号来进行控制

//(3)添加 Nginx 系统服务
//为了使 Nginx 服务的启动、停止、重载等操作更加方便,可以编写 Nginx 服务脚本,并使用 chkconfig 和 systemctl 工具来进行管理
[root@localhost ~l# vim /etc/init.d/nginx
#!/bin/bash
#chkconfig: - 99 20    //优先级
#description:Nginx Service Control Script
PROG="/usr/local/nginx/sbin/nginx"
PIDF="/usr/local/nginx/logs/nginx.pid"
case "$1" in
    start)
        $PROG
        ;;
    stop)
        kill -s QUIT $(cat $PIDF)
        ;;
    restart)
        $0 stop
        $0 start
        ;;
    reload)
        kill -s HUP $(cat $PIDF)
        ;;
    *)
        echo "Usage: $0 {start|stop|restart|reload}"
        exit 1
esac
exit 0
[root@localhost ~]# chmod +x /etc/init.d/nginx
[root@localhost ~]# chkconfig --add nginx
[root@localhost ~]# systemctl status nginx

备注:

systemd管理方法实现
[root@localhost ~]# cd /lib/systemd/system
[root@localhost system]# vim nginx.service
[Unit]
Description=The NGINX HTTP and reverse proxy server
After=network.target

[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
#ExecStartPre=/usr/local/sbin/nginx -t
ExecStart=/usr/local/sbin/nginx
ExecStop=/usr/sbin/nginx -s stop
ExecReload=/usr/local/sbin/nginx -s reload

[Install]
WantedBy=multi-user.target

[root@localhost system]# systemctl daemon-reload
[root@localhost system]# systemctl enable nginx
[root@localhost system]# systemctl start nginx

二、配置文件nginx.conf

        在 Nginx 服务器的主配置文件/usr/local/nginx/confinginx.conf中,包括全局配置、I/O事件配置和 HTTP 配置这三大块内容,配置语句的格式为“关键字 值;”(末尾以分号表示结束),以“#”开始的部分表示注释

1:全局配置

由各种配置语句组成,不使用特定的界定标记。全局配置部分包括Nginx服务的运行用户、工作进程数、错误日志、PID 存放位置等基本设置
#user nobody;                 //运行用户
worker processes 1;           //工作进程数量
#error log logs/error.log;    //错误日志文件的位置
#pid    logs/nginx.pid;       //PID 文件的位置
//上述配置中,worker_processes 表示工作进程的数量。如果服务器有多块 CPU 或者使用多核处理器,可以参考 CPU核心总数来指定工作进程数

2:I/O事件配置

//使用“events {}”界定标记,用来指定 Nginx 进程的 I/0 响应模型、每个进程的连接数等设置。对于 2.6及以上版本的内核,建议使用epoll 模型以提高性能;每个进程的连接数应根据实际需要来定,一般在 10000 以下(默认为 1024)
events {
    use epoll;            //使用 epoll 模型
    worker connections 4096:       //每进程处理 4096 个连接 
}
//若工作进程数为8,每个进程处理 4096 个连接,则允许 Nginx 正常提供服务的连接数已超过3万个(4096x8=32768),当然具体还要看服务器硬件、网络带宽等物理条件的性能表现

3:HTTP配置

//使用“http {}”界定标记,包括访问日志、HTTP 端口、网页目录、默认字符集、连接保持,以及后面的虚拟 Web 主机、PHP 解析等一系列设置,
//其中大部分配置语句都包含在子界定标记“server{}”内
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;      
    server {                    //web 服务的监听配置
    listen    80;            //监听地址及端口
    server name    www.bt.com;        //网站名称(FQDN)
    charset utf-8;            //网页的默认字符集
    location /{                //根目录配置
        root    html;            //网站根目录的位置
        index     index.html index.php;    //默认首页(索引页)
    }
    error_page 500 502 503 504 /50x.html;  //内部错误的反馈页面
    location =/50x.html{                //错误页面配置
        root    html; 
    }
  }
}
//listen 语句允许同时限定 IP 地址,采用“IP 地址:端口”形式。root 语句用来设置特定访问位置(如“location/"表示根目录)的网页文档路径,默认为 Nginx 安装目录下的 htm!/子目录,根据需要可改为/var/www/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 配置代码
[root@localhost ~]# vim /usr/localnginx/conf/nginx.conf
......
http {
......
    server{
        listen 80;
        server_name    www.bt.com;
        charset utf-8;
        location /{
        root    html;
        index index.html index.php;
        }
        location /status {        //访问位置为/status
            stub_status    on:        //打开状态统计功能
            access_log off,           //关闭此位置的日志记录
        }
    }
}
[root@localhost ~]# systemctl restart nginx
  • 新的配置生效以后,在浏览器中访问 Nginx 服务器的/status 网站位置,可以看到当前的状态统计信息,其中,Active connections”表示当前的活动连接数(4);而“server accepts handled requests"表示已经处理的连接信息,三个数字依次表示已处理的连接数(4)、成功的 TCP 握手次数(4)、已处理的请求数(3)

Nginx访问控制

  • Nginx 与 Apahce 一样,可以实现基于用户授权的访问控制,当客户端想要访问相应网,站或者目录时,要求用户输入用户名和密码才能正常访问,配置步骤与 Apache 基本一致
    • 生成用户密码认证文件
    • 修改主配置文件相对应目录,添加认证配置项
    • 重启服务,访问测试

1:基于授权的访问控制

        1.使用 htpasswd 生成用户认证文件,如果没有该命令,可使用 yum 安装 httpd-tools软件包,用法与 Apache 认证时方式相同,如:htpasswd -c/usr/local/nginx/passwd.db test.在/usrlocal/nginx/日录下生成了 passwd.db 文件,用户名是 test,密码输入2次。在passwd.db 中生成用户和密码的密文

[root@localhost ~]# yum install -y httpd-tools
[root@localhost ~]# htpasswd -c /usr/local/nginx/passwd.db test1
New password:
Re-type new password:
Adding password for user test
root@localhost ~]# cat /usr/local/nginx/passwd.db
test:$apr1$x.UaSXIM$RRLa2KJcKwsGBVsikGcrR/
//要想在创建
[root@localhost ~]# htpasswd /usr/local/nginx/passwd.db test2

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

[root@localhost ~]# chmod 400 /usr/local/nginx/passwd.db
[root@localhost ~]# chown nginx /usr/local/nginx/passwd.db
[root@localhost ~]#ll -d /usr/local/nginx/passwd.db
-r--------1 nginx root 43 5月 16 22:26 /usr/local/nginx/passwd.db

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

[root@localhost ~]# vim /usr/local/nginx/conf/nginx.conf
server {
    location /{
        auth basic "secret",
        auth basic user fle /usr/local/nginx/passwd.db;
        }

        4.检测语法、重启服务

[root@localhost ~]# nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successfu
[root@localhost ~]# systemctl restart nginx

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

2:基于客户端的访问控制

  • 基于客户端的访问控制是通过客户端IP 地址,决定是否允许对页面访问。Nginx 基于客户端的访问控制要比 Apache 简单
    • deny IP/IP 段:拒绝某个IP 或IP 段的客户端访问
    • allow IP/IP 段:允许某个 |P 或 IP 段的客户端访问
    • 规则从上往下执行,如匹配则停止,不再往下匹配

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

[root@localhost ~l# vim /usr/local/nginx/conf/nginx.conf    
server {
    location /{
    deny 192.168.10.1    //客户端IP
    allow all;
    }
[root@localhost ~l# systemctl restart nginx
//Deny 192.168.10.1 表示这个 |P 地址访问会被拒绝,其他 IP 客户端正常访问

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

Nginx虚拟主机

  • 利用虚拟主机,不用为每个要运行的网站提供一台单独的 Nginx 服务器或单独运行组 Nginx 进程,虚拟主机提供了在同一台服务器,同一组 Nginx 进程上运行多个网站的功能。跟 Apache 一样,Nginx 也可以配置多种类型的虚拟主机,分别是基于 IP 的虚拟主机、基于域名的虚拟主机、基于端口的虚拟主机
  • 使用 Nginx 搭建虚拟主机服务器时,每个虚拟 Web 站点拥有独立的“server{}”配置段各自监听的 IP 地址、端口号可以单独指定,网站名称也是不同的

1:基于域名的虚拟主机

(1)修改 Windows 客户机的C:WindowsiSystem32\driversletcihosts 文件,加入www.bt.com 和 www.test.com 这两个域名,它们都指向同一个服务器 IP 地址,用于实现不同的域名访问不同的虚拟主机

192.168.9.158 www.bt.com www.test.com

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

[root@localhost ~]# mkdir -p /var/www/html/btcom/        //创建www.bt.com的根目录
[root@localhost ~]# mkdir -p /var/www/html/testcom/       //创建 www.test.com 的根目录
[root@localhost ~]# echo "www.bt.com">> /var/www/html/btcom/index.html
[root@localhost ~l# echo "'www.test.com"'>>/var/www/html/testcom/index.html

(3)修改配置文件,把配置文件中的 server{}代码段全部去掉,加入2个新的 server{}段,对应2个域名

[root@localhost ~# vim /usr/local/nginx/conf/nginx.conf
server {                //加入 www.bt.com 对应的站点
    liten        80;            //监听地址
    server_namewww.bt.com;
    charset_utf-8;
    access_loglogs/www.bt.access.log;        //日志文件
    location / {
        root    /var/www/html/btcom;        //www.bt.com 的工作目录
        index      index.html index.htm;
       }
       error_page    500 502 503 504    /50x.html;
       location = 50x.html{
           root html;       
       }
}
server{        //加入 www.test.com 对应的站点
    listen    80;
    server_namewww.test.com;    //监听地址
    charset utf-8;
    access_log    logs/www.test.access.log;//日志文件
    location /{
        root    /var/www/html/testcom:        //www.test.com 的工作目录
        index    index.html index.htm;
        }
        error page 500 502 503 504     /50x.html;
        location= 50x.html{
             root    html;       
        }
}
[root@localhost ~# nginx -t        //检测配置文件的语法
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
[root@localhost ~# systemctl restart nginx

2:基于IP的虚拟主机

(1)一台主机如果有多个|P 地址,可以设置每一个 |P 对应一个站点。主机安装多个网卡可以有多个 IP,这里采用虚拟 IP的方式使主机有多个 IP

[root@www confl# ip addr
。。。
inet 192.168.9.158/24 brd 192.168.9.255 scope global dynamic ens33
。。。

//目前主机有一个网卡,IP 地址是 192.168.9.158。再配置一个虛拟 IP 为 192.168.9.110
[root@www conf# ifconfig ens33:0 192.168.9.110
[root@www confl## ip addr
...
inet 192.168.9.158/24 brd 192.168.9.255 scope global dynamic ens33
   valid lft 7178sec preferred lft 7178sec
inet 192.168.9.110/24 brd 192.168.9.255 scope global secondary ens33:0
...

(2)以/var/www/html/testcom 和/var/www/html/btcom 为两个站点的根目录,修改 Nginx的配置文件,使基于 !P 的虚拟主机生效。这里省略了和基于域名虚拟主机的相同配置代码

[root@localhost ~l# vim /usr/localnginx/conf/nginx.conf
server  {
    listen    192.168.9.158:80;        //监听 192.168.9.158
    server_name 192.168.9.158:80:
.....
}
server  {
    listen    192.168.9.110:80;        //监听 192.168.9.110
    server_name 192.168.9.110:80:
.....
}
[root@localhost ~l#systemctl restart nginx

3:基于IP的虚拟主机

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

[root@localhost ~l# vim /usr/local/nginx/conf/nginx.conf
server  {
    listen    192.168.9.158:6666;        //监听 6666端口
    server_name 192.168.9.158:6666:
.....
}
server  {
    listen    192.168.9.158:8888;        //监听 8888端口
    server_name 192.168.9.158:8888:
.....
}

(2)检测端口是否正常

[root@localhost ~#systemctl restart nginx
[root@localhost ~]#netstat -anpt | grep nginx
tcp 0    0 192.168.9.158:66660.0.0.0:*LISTEN    3838/nginx: master
tcp 0    0 192.168.9.158:88880.0.0.0:*LISTEN    3838/nginx: master
最后每个虚拟主机都可以查看是否访问不同的页面,测试配置是否成功

LNMP架构部署及应用

LAMP 平台是目前应用最为广泛的网站服务器架构,其中“A”对应着 Web 服务软件 Apache

1:构建LNMP网站平台

(1)编译安装MySQL服务

[root@localhost ~]# yum -y install ncurses-devel gcc-c++ perl-Module-install
[root@localhost ~]# tar -zxvf cmake-2.8.6.tar.gz -C /usr/local/
[root@localhost ~l# cd /usr/local/cmake-2.8.6/
[root@localhost cmake-2.8.6]# ./configure
[root@localhost cmake-2.8.6]# gmake && gmake install
[root@localhost cmake-2.8.6]# cd
[root@localhost ~]# tar -zxvf mysql-5.6.36.tar.gz -c /usr/local/
[root@localhost ~]# cd /usr/local/mysql-5.6.36/
[root@localhost mysql-5.6.36## cmake \
-DCMAKE INSTALL PREFIX=/usr/local/mysql\
-DDEFAULT CHARSET=utf8 \
-DDEFAULT COLLATION=utf8 general ci\
-DWITH EXTRA CHARSETS=all \
-DSYSCONFDIR=/etc
[root@localhost mysql-5.6.36## cmake -DCMAKE INSTALL PREFIX=/usr/local/mysql -DDEFAULT CHARSET=utf8 -DDEFAULT COLLATION=utf8 general ci -DWITH EXTRA CHARSETS=all -DSYSCONFDIR=/etc
[root@localhost mysql-5.6.36l# make && make install

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

root@localhost ~]# cp /usr/local/mysql-5.6.36/support-files/my-default.cnf /etc/my.cnf
cp:是否覆盖"/etc/my.cnf"?    y
[root@localhost~]# cp /usr/local/mysql-5.6.36/support-files/mysql.server
/etc/rc.d/init.d/mysqld
[root@localhost ~]# chmod +x /etc/rc.d/init.d/mysqld
[root@localhost ~]# chkconfig --add mysqld
[root@localhost ~]# echo "PATH=$PATH:/usr/local/mysql/bin">> /etc/profile
[root@localhost ~]# . /etc/profile

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

[root@localhost ~]# groupadd mysql
[root@localhost ~]# useradd -M -s /sbinnologin mysql -g mysql
[root@localhost ~]# chown -R mysql.mysql /usr/localmysql
[root@localhost ~# /usr/local/mysql/scripts/mysgl_install_db    --basedir=/usr/local/mysql
--datadir=/usr/local/mysql/data --user=mysql

(4)启动 mysql,并设置密码

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

2:安装PHP解析环境

新版本的 PHP(如 5.5 版本)已经自带FPM(FastCGl Process Manager,FastCG进程管理器)模块,用来对 PHP 解析实例进行管理、优化解析效率。单服务器的LNMP 架构通常使用这种方式,因此在配置 PHP 编译选项时应添加“"--enable-fpm”以启用此模块

(1)编译安装PHP

[root@localhost ~]# yum -y install gd libxml2-devel libjpeg-devel libpng-devel
[root@localhost ~]#tar -zxvf php-5.5.38.tar.gz -C /usr/local/
[root@localhost ~l#cd /usr/locallphp-5.5.38/
[root@localhost php-5.5.38]# ./configure\
--prefix=/usr/local/php5 \
--with-gd \
--with-zlib \
--with-mysql=/usr/local/mysql \
--with-mysqli=/usr/local/mysql/bin/mysql_config \
--with-config-file-path=/usr/local/php5 \
--enable-mbstring \
--enable-fpm \
--with-jpeg-dir=/usr/lib
[root@localhost php-5.5.38]# ./configure --prefix=/usr/local/php5 --with-gd --with-zlib --with-mysql=/usr/local/mysql --with-mysqli=/usr/local/mysql/bin/mysql_config --with-config-file-path=/usr/local/php5 --enable-mbstringl --enable-fpm --with-jpeg-dir=/usr/lib
[root@localhost php-5.5.38]# make && make install

(2)安装后调整

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

(3)安装ZendGuardLoader

[root@localhost ~]# tar -zxvfzend-oader-php5.5-linux-x86 64 update1.tar.gz -C /usr/local/
zend-loader-php5.5-linux-x86 64/
zend-loader-php5.5-linux-x86 64/ZendGuardLoader.so
zend-loader-php5.5-linux-x86 64/opcache.so
zend-loader-php5.5-linux-x86 64/README.txt
[root@localhost ~# cd /usr/local/zend-loader-php5.5-linux-x86 64/
[root@localhost zend-loader-php5.5-linux-x86 64]# cp ZendGuardLoader.so /usr/local/php5/lib/php/
[root@localhost zend-loader-php5.5-linux-x86 64]#vim /usr/local/php5/php.ini
....
zend extension=/usr/ocal/php5/lib/php/
ZendGuardLoader.sozend loader.enable=1

3:配置Nginx支持PHP环境

若要让 Nginx 能够解析 PHP 网页,有两种方法可以选择: 其一,充当中介,将访问 PHP页面的 Web 请求转交给其他服务器(LAMP)去处理;其二,通过使用 PHP 的FPM 模块来调用本机的 PHP 环境

(1)启用 php-fpm 进程

建立 php-fpm.conf配置文件,并修改其中的 PID 文件、运行用户、服务数(进程数量)等相关设置,然后启动 php-fpm 程序即可(默认监听本机的 9000 端口)

[root@localhost ~]# cd /usr/local/php5/etc/
[root@localhost etc]# cp php-fpm.conf.default php-fpm.conf
[root@localhost etc]# useradd -M -s /sbin/nologin php
[root@localhost etc]# vim php-fpm.conf
....
pid = run/php-fpm.pid        //确认 pid 文件位置,去掉注释
user = php            //运行用户
group= php            //运行组
pm.max children=50       //根据内存大小设置,一个进程大约 3M
pm.start servers=20    //启动时开启的进程数
pm.min_spare_servers=5    //最少空闲进程数
pm.max spare servers=35    //最多空闲进程数

[root@localhost etc]# /usr/local/sbin/php-fpm
[root@localhost etc]# netstat -anpt | grep php-fpm
tcp 0  0  127.0.0.1:9000    0.0.0.0:*   LISTEN     5798/php-fpm: maste    

在 php-fpm.conf 文件中,pid 配置行指出了 PID 信息的存放位置,对应的实际路径为/usr/local/php5/var/run/php-fpm.pid

根据上述信息,可以修改 Nginx 服务脚本,以便启动/停止 Nginx 服务器时将 php-fpm 进程也自动启停

[root@localhost etc]# vim /etc/init.d/nginx
#!/bin/bash
#chkconfig:-99 20
#description:Nginx Service Control Script
PROG="/usr/local/nginx/sbin/nginx"
PIDF="/usr/local/nginx/logs/nginx.pid"
PROG FPM="/usr/local/sbin/php-fpm"
PIDF FPM="/usr/local/php5/var/run/php-fpm.pid"
case"$1"in    
    start)
        $PROG
        $PROG FPM
        ;;
    stop)
        kill -s QUIT $(cat $PIDF)
        kill -s QUIT $(cat $PIDF FPM)
        ;;
    restart
        $0 stop
        $0 start
        ;;
    reload
        kill -s HUP $(cat $PIDF)
        kill -s HUP $(cat $PIDF FPM)
        ;;
    *)
    echo "Usage: $0 fstartlstop|restart|reload}"
    exit 1
esac
exit0

(2)配置 Nginx 支持 PHP 解析

无论是将 PHP 页面交给 LAMP 服务去解析,还是调用本机的 php-fom 进程进行解析,都需要在“"server{}”配置段中添加 location 设置,以便指定当访问.php 页面时采取何种操作

  • 第一种方法(转给其他 Web 服务器处理),使用的配置语句如下所示。例如,交给 IP 地址为 192.168.1.22 的 LAMP 服务器处理,从而实现由 Nginx 负责处理静态页面,LAMP 负责动态页面的分离效果
[root@localhost ~# vim /usr/localnginx/confinginx.conf
...
server{
    ...
    root /var/www/kgcbbs;
    location ~\.php$ {
            proxy pass http://192.168.1.22:80;
    }
    ...
}
  • 第二种方法(调用本机的 php-fpm 进程),使用的配置语句
[root@localhost ~]# vim /usr/localnginx/conf/nginx.conf
...
server{
    listen    80;
    server_name    www.bt.com
    ...
    location ~\.php$ {
            root    /var/www/kgc;
            fastcgi pass    127.0.0.1:9000;
            fastcgi index    index.php.
            include    fastcgi.conf;
    }
    ...
}
//上述两种方法重新加载Nginx服务即可生效

(3)PHP页面访问测试

//以调用 php-fpm 解析为例,可以在 PHP 文档根目录下创建一个测试页面,用以测试PHP 语句能否正常解析,以及能否连接 MySQL 数据库
[root@localhost ~]# mkdir /var/www/kgc!
[root@localhost ~# vim /var!www/kgc/test.php
<?php
$link=mysqli connect(localhost','root','123.com');
if($link)echo"<h1>恭喜你,数据库连接成功啦!!!</h1>";
mysqli close($link);
?>

在LNMP平台中部署Web应用

LNMP 平台与 LAMP 平台是非常相似的,区别主要在于所用 Web 服务软件的不同。而这与使用 PHP 开发的 Web 应用程序并无太大关系,因此 PHP 应用部署方法也是类似的

(1)PHP页面访问测试

  • Discuz!社区论坛,是一个采用PHP 与 mysql等多种数据库构建的性能优异,功能全面且安全稳定的社区论坛(BBS)软件,其官方网站为www.discuz.net
  • 将下载的 Discuz 源码文件解压,找到其中的 upload 文件夹并将其放置到 LNMP 服务器的网站根目录,然后适当调整权限(若此处不调整,也可以参考安装页面的提示再调整)以允许 Nginx、php-fpm 程序拥有必要的写入权限
[root@localhost ~]# unzip Discuz X3.3 SC UTF8.zip
[root@localhost ~]# mkdir -p /var/www/kgc/bbs
[root@localhost ~]# mv upload/* /var/www/kgc/bbs
[root@localhost ~]# chown -R php:php /var/www/kgc/bbs/

(2)创建数据库

  • Discuz 论坛中的帖子、板块等信息需要保存在数据库中,所以要针对 Discuz 创建数据库。为了降低 Web 应用程序对数据库的风险,建议设置专用的数据库及授权用户,而不要直接使用 root用户
[root@localhost ~]# mysql -uroot -p
Enter password:
mysql>create database bbs;
Query OK, 1 row affected (0.00 sec)
mysql>grant all on bbs.* to runbbs@localhost identified by 'bbs123';
Query OK, 0 rows affected (0.00 sec)

(3)安装Web应用

apache+php:php提供模块给apache,Apache负责解析php文件

Nginx没办法用php

  • cgi:通用网关接口
  • fastcgi:快速通用网关接口,php-fpm进程负责解析php文件

原文地址:https://blog.csdn.net/minly12/article/details/140720965

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!