小阿轩yx-Nginx 网站服务

news2024/11/24 11:49:29

小阿轩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
[root@localhost ~]# tar zxf nginx-1.12.0.tar.gz
[root@localhost ~# 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@locahostnginx-1.12.0]#In-s /usr/localnginx/sbin/nginx/usr/local/sbin/
[root@localhost nginx-1.12.0]#ls -l /usr/local/sbin/nginx
Irwxrwxrwx 1 root root 27 5月16 16:50 /usr/local/sbin/nginx->/usr/localinginx/sbin/nginx

Nginx 的运行控制

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

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

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

通过 ki 或 kilall 命令发送

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

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

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

添加 Nginx 系统服务

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

[root@localhost ~]# vim /etc/init.d/nginx#!
/bin/bash
#chkconfig:-99 20
#description:Nginx Service Control Script
PROG="/usr/local/nginxsbin/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|stoplrestart|reload}'
    exit 1
esac
exit 0
[root@localhost ~]# chmod +x /etc/init.dinginx
[root@localhost ~# chkconfig --add nginx
[root@localhost ~]# systemctl status nginx
nginx.service -SYSV: Nginx Service Control Script
    Loaded: loaded (/etc/rc.d/init.d/nginx; bad; vendor preset: disabled)
    Active: inactive (dead)
    Docs: man:systemd-sysv-generator(8)

配置文件 nginx.conf

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

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

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

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

全局配置部分包括Nginx 服务

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

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

IO 事件配置

使用“events {}”界定标记

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

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

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

events {
    //使用 epoll 模型
    use epoll;
    //每进程处理 4096个连接
    worker connections 4096;
}
HTTP 配置

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

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

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

http {
    include mime.types;
    default type application/octet-stream,
    log_format main '$remote addr-$remote user I$time local] "$request"' 
                    '$status $body bytes sent "$http referer"'
                    '$http user agent""$http x forwarded for"';
//访问日志位置
access_log logs/access.og main;
//支持文件发送(下载)
sendfile on;
#tcp nopush on;
#keepalive timeout 0;
//连接保持超时
keepalive timeout 65;
#gzip on;
    //Web 服务的监听配置
    server {
        //监听地址及端口
        listen 80;
        //网站名称(FQDN)
        server name:www.bt.com;
        //网页的默认字符集
        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 语句允许同时限定 |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 配置代码

[root@localhost ~]# vim /usr/local/nginx/conf/nginx.conf

http {
    server {
        listen       80;
        server_name  localhost;
        charset utf-8;
        location / {
            root   html;
            index  index.html index.htm;
        }
        location /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 基本一致

概括为几个步骤

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

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

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

注:httpd-tools提供了htpasswd命令

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

修改密码文件权限为 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

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

[root@localhost ~]# vim /usr/local/nginx/conf/nginx.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;
            auth_basic "secret";
            auth_basic_user_file /usr/local/nginx/passwd.db;
        }

检测语法、重启服务

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

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

基于客户端的访问控制

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

规则

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

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

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

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

Nginx 虚拟主机

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

提示:将参数还原 

location / {
        root   html;
        index  index.html index.htm;
        #auth_basic "secret";
        #auth_basic_user_file /usr/local/nginx/passwd.db;
        #deny 192.168.10.3;
        #allow all;
        }

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

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

基于域名的虚拟主机

设置客户端域名解析

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

192.168.10.101 www.benet.com
192.168.10.101 www.accp.com

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

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

修改配置文件

[root@localhost ~]# vim /usr/local/nginx/conf/nginx.conf
    
    //加入 www.benet.com 对应的站点
    server {
        //监听地址
        listen       80;
        server_name www.benet.com;
        //日志文件
        access_log logs/www.benet.com.access.log;
        charset utf-8;
        location / {
            //www.benet.com的工作目录
            root   /var/www/html/benet;
            index  index.html index.htm;
        }

        error_page 500 502 503 504 /50x.html;
        location = 50x.html {
                root html;
        }
    }
    
    //加入 www.accp.com
    server {
        //监听地址
        listen       80;
        server_name www.accp.com;
        //日志文件
        access_log logs/www.accp.com.access.log;
        charset utf-8;
        location / {
            //www.accp.com的工作目录
            root   /var/www/html/accp;
            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/confinginx.conf test is successful
[root@localhost ~]# systemctl restart nginx

测试

基于 IP 的虚拟主机

为服务器设置多个IP地址

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

 再配置一个虚拟IP为192.168.9.110

[root@www conf# ifconfig ens33:0 192.168.9.110
[root@www conf# 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
//省略内容

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

​​​​​​​root@localhost~# vim /usr/local/nginx/confinginx.conf
server {
    //监听 192.168.9.158
    listen192.168.9.158:80;
    server_name 192.168.9.158:80:
//省略内容
}

server {
    //监听 192.168.9.110
    listen 192.168.9.110:80;
    server name192.168.9.110:80;
//省略内容
}

 重启服务

[root@localhost ~]# systemctl restart nginx

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

基于端口的虚拟主机

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

[root@localhost ~]# vim /usr/local/nginx/conf/nginx.conf 
    server {
        listen       192.168.10.101:8080;
        server_name  www.benet.com;
.....
    }

    server {
        listen       192.168.10.101:8888;
        server_name www.accp.com;
.....
    }

 重启服务 

[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

分别访问 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)”。

[root@localhost ~]# tar -zxvf mysql-5.6.36.tar.gz
[root@localhost ~]# cd 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]# make && make install

注:

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

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

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

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

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

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

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

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

初始化数据库

[root@localhost ~]# groupadd mysql 
[root@localhost ~]# useradd -M -s /sbin/nologin mysql -g mysql
[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,并设置密码

[root@localhost ~]# systemctl start mysqld 
[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是一个压缩和解压模块
[root@localhost ~]#tar -zxvf php-5.5.38.tar.gz
[root@localhost ~]#cd php-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

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

[root@localhost php-5.5.38]# ./configure \

--prefix=/usr/local/php5 \

--with-gd \

--with-zlib \

--with-mysql=mysqlnd \

--with-mysqli=mysqlnd \

--with-config-file-path=/usr/local/php5 \

--enable-mbstring \

--enable-fpm \

--with-jpeg-dir=/usr/lib

备注:可简化参数为

./configure \

--prefix=/usr/local/php5 \

--with-mysql=mysqlnd \

--with-mysqli=mysqlnd \

--with-config-file-path=/usr/local/php5 \

--enable-mbstring \

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

安装后调整

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

安装 ZendGuardLoader

[root@localhost ~]# tar -zxvf zend-loader-php5.5-linux-x86_64_update1.tar.gz
[root@localhost ~]# cd 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/local/php5/lib/php/ZendGuardLoader.so 
zend_loader.enable=1
配置 Nginx 支持 PHP 环境

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

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

启用 php-fpm 进程

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

[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 
user = php
group = php 
##最多子进程数
pm.max_children = 50
##启动时开启的进程数
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
[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) 
  pkill nginx 
  pkill php-fpm
  ;; 
restart) 
  $0 stop 
  $0 start 
  ;; 
reload) 
  kill -s HUP $(cat $PIDF) 
  kill -s HUP $(cat $PIDF_FPM)
  ;; 
*) 
  echo "Usage: $0 {start|stop|restart|reload}" 
  exit 1 
esac 
exit 0
[root@localhost ~]# systemctl daemon-reload
[root@localhost ~]# systemctl restart nginx

配置 Nginx 支持 PHP 解析

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

[root@localhost ~]# vim /usr/local/nginx/conf/nginx.conf 

Server{ 
    root /var/www/kgc/bbs; 
    location ~ \.php$ { 
        proxy_pass http://192.168.10.101:80; 
    } 
}

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

[root@localhost ~]# vim /usr/local/nginx/conf/nginx.conf 
Server{ 
listen 80; 
server_name www.bt.com; 

    	 location / {
            root   /var/www/html;
            index  index.html index.htm index.php;
        }

        location ~ \.php$ {
            root           /var/www/html;
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            include        fastcgi.conf;
        }
}

备注:

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

PHP 页面访问测试

[root@localhost ~]# mkdir -p /var/www/html/
[root@localhost ~]# vim /var/www/html/test1.php 
<?php 
phpinfo();
?>
[root@localhost ~]# vim /var/www/html/test2.php 
<?php 
$link=mysqli_connect('127.0.0.1','root','pwd123'); 
if($link) echo "<h1>恭喜你,数据库连接成功啦!!!</h1>"; 
mysqli_close($link); 
?>

在 LNMP 平台中部署 Web 应用

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

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

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

访问 Web 应用系统

小阿轩yx-Nginx 网站服务

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1873984.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Electron录制应用-打包静态文件问题【命令行ffmpeg导不出视频】

问题描述 在开发环境下,所有功能都运行正常,但一旦进行打包并运行生产环境的版本,导出mp4视频的功能就失效了。没有文件生成,也没有任何错误提示。 排查问题 为了找到问题的根源,我首先决定通过日志来追踪。我使用了winston和winston-daily-rotate-file这两个强大的日志…

南昌服务器托管让数据存储更安全

南昌&#xff0c;作为长江中游地区的重要中心城市&#xff0c;近年来经济发展迅速&#xff0c;产业结构不断优化。随着大数据、云计算、人工智能等新一代信息技术的快速发展&#xff0c;南昌的信息化建设步伐不断加快&#xff0c;为企业提供了良好的发展环境。在这样的背景下&a…

【算法】单调队列 - 基础与应用-滑动窗口最大值

题目 给定一个数组 nums&#xff0c;有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。 返回滑动窗口中的最大值。 思路 暴力&#xff1a;遍历一遍的过程中每次从窗口找到最大的数组&#…

【android 9】【input】【9.发送按键事件3——Inputchannel的创建过程】

系列文章 本人系列文章-CSDN博客 目录 系列文章 目录 1.简介 1.1 主要步骤 1.2 时序图 2.源码分析 2.1 WindowManagerImpl的addView 2.2 WindowManagerGlobal的addView 2.3 ViewRootImpl 2.4 getWindowSession 2.5 WMS中的openSession 2.6 Session 2.7 class W 2.…

ASUS/华硕幻14 2023 GA402X系列 原厂Windows11-22H2系统

安装后恢复到您开箱的体验界面&#xff0c;带原机所有驱动和软件&#xff0c;包括myasus mcafee office 奥创等。 最适合您电脑的系统&#xff0c;经厂家手调试最佳状态&#xff0c;性能与功耗直接拉满&#xff0c;体验最原汁原味的系统。 原厂系统下载网址&#xff1a;http:…

Android 14 独立编译 Setting apk

我们在setting 目录下是用 mm 会报错。 所以应该在 源码主目录 采用 make Settings 进行编译 很多时候如果在apk 目录下 mm 单独编译会出错&#xff0c; 都可以才用这种方式进行编译。

【51单片机入门】点亮数码管

文章目录 前言仿真图如何去绘制一个数字示例代码选择某个数码管显示某个数字 示例代码总结 前言 在嵌入式系统的世界中&#xff0c;单片机扮演着至关重要的角色。51单片机&#xff0c;作为最早的微控制器之一&#xff0c;至今仍被广泛应用在各种设备中。本文将介绍如何使用51单…

FTP 文件传输协议:概念、工作原理;上传下载操作步骤

目录 FTP 概念 工作原理 匿名用户 授权用户 FTP软件包 匿名用户上传下载实验步骤 环境配置 下载 上传 wget 授权用户上传下载步骤 root用户登录FTP步骤 监听 设置端口号范围 修改用户家目录 匿名用户 授权用户 FTP 概念 FTP&#xff08;File Transfer Prot…

如何保护应用?可快速部署的WAF服务器分享

Web应用攻击是安全事件和数据泄露的主要原因。相关统计表明&#xff0c;超过四分之三的网络犯罪直指应用及其漏洞。为保护数量日益增长的应用安全&#xff0c;Web应用防火墙(WAF)因此而生。本文则聚焦于WAF服务器&#xff0c;了解它的性能与具体的实践应用。   新加坡网络安全…

鸿蒙HarmonyOS自定义组件开发和使用

自定义组件的介绍 在开发和使用自定义组件直接&#xff0c;我们需要了解什么是自定义组件&#xff1f; 在ArkUI中&#xff0c;UI显示的内容均为组件&#xff0c;由框架直接提供的称为系统组件&#xff0c;由开发者定义的称为自定义组件。在进行 UI 界面开发时&#xff0c;通常…

scatterlist的相关概念与实例分析

概念 scatterlist scatterlist用来描述一块内存&#xff0c;sg_table一般用于将物理不同大小的物理内存链接起来&#xff0c;一次性送给DMA控制器搬运 struct scatterlist {unsigned long page_link; //指示该内存块所在的页面unsigned int offset; //指示该内存块在页面中的…

CentOS7环境下DataX的安装、使用及问题解决

DataX概述 DataX 是阿里巴巴开源的一个异构数据源离线同步工具&#xff0c;致力于实现包括关系型数据库(MySQL、Oracle等)、HDFS、Hive、ODPS、HBase、FTP等各种异构数据源之间稳定高效的数据同步功能。 为了解决异构数据源同步问题&#xff0c;DataX将复杂的网状的同步链路变…

SAP PP学习笔记24 - 生产订单(制造指图)的创建

上面两章讲了生产订单的元素。 SAP PP学习笔记22 - 生产订单&#xff08;制造指图&#xff09;的元素1-CSDN博客 SAP PP学习笔记23 - 生产订单&#xff08;制造指图&#xff09;的元素2 - 决济规则(结算规则)-CSDN博客 这一章讲生产订单的创建。比如 - 生产订单的流程&#…

端口扫描攻击检测及防御方案

端口扫描数据一旦落入坏人之手&#xff0c;可能会成为更大规模恶意活动的一部分。因此&#xff0c;了解如何检测和防御端口扫描攻击至关重要。 端口扫描用于确定网络上的端口是否开放以接收来自其他设备的数据包&#xff0c;这有助于网络安全团队加强防御。但恶意行为者也可以…

ETAS工具导入DEXT生成Dcm及Dem模块(一)

文章目录 前言Cfggen之前的修改ECU关联DcmDslConnectionDiagnostic ProtocolDiagnostic Ecu Instance PropsCommonContributionSetEvent修改communication channel总结前言 诊断模块开发一般是先设计诊断数据库,OEM会释放对应的诊断数据库,如.odx文件或.cdd文件。如果OEM没有…

博士最多8年?硕士6年清退?教育局可没这么说!

哈哈哈&#xff0c;教育部可没说过博士最多八年&#xff0c;教育部说的是 博士研究生教育的最长修业年限&#xff0c;一般为6-8年 并且 对于“因研究未结束而无法正常毕业的博士”&#xff0c;目前高校可以按规定统筹利用科研经费、学费收入、社会捐助等资金&#xff0c;设…

使用minio搭建oss

文章目录 1.minio安装1.拉取镜像2.启动容器3.开启端口1.9090端口2.9000端口 4.访问1.网址http://:9090/ 5.创建一个桶 2.minio文件服务基本环境搭建1.创建一个文件模块2.目录结构3.配置依赖3.application.yml 配置4.编写配置类MinioConfig.java&#xff0c;构建minioClient5.Fi…

【Python】已解决:Python正确安装文字识别库EasyOCR

文章目录 一、分析问题背景二、可能出错的原因三、错误代码示例四、正确代码示例五、注意事项 已解决&#xff1a;Python正确安装文字识别库EasyOCR 一、分析问题背景 在使用Python进行图像处理和文字识别时&#xff0c;EasyOCR是一个流行的库&#xff0c;它基于PyTorch&…

一大波客户感谢信来袭,感谢认可!

“自美的置业数据中台项目启动以来&#xff0c;贵公司实施团队与服务运营始终以专业、敬业、合作的态度扎根用户、服务用户、与用户共成长。在此&#xff0c;我司表示由衷的感谢&#xff01;” 这是携手美的置业以来&#xff0c;我们收到的第二封客户感谢信。 △ 以上为美的置…

Vue2组件传值(通信)的方式

1.父传后代 ( 后代拿到了父的数据 ) 1. 父组件引入子组件&#xff0c;绑定数据 <List :str1‘str1’></List> 子组件通过props来接收props:{str1:{type:String,default:}}***这种方式父传子很方便&#xff0c;但是父传给孙子辈分的组件就很麻烦&#xff08;父》子…