Nginx服务与LNMP部署

Nginx服务

Nginx服务概述

  • Nginx是一款轻量级、高性能的web服务软件
  • 具有占有内存少,并发能力强的特点
  • 对HTTP并发连接处理能力高,单台物理服务器可支持3w~5w个并发请求

编译安装Nginx

官网:http://www.nginx.org/

安装包:nginx-1.12.0.tar.gz

1 安装支持软件

Nginx的配置和允许需要pcre、zlib软件包的支持,应预先安装软件的开发包devel

yum -y install pcre-devel zlib-devel

2 创建运行用户、组

Nginx服务程序默认以nobody用户运行,为更加方便管理,创建专用账户

useradd -M -s /sbin/nologin nginx
-M: 不建立宿主目录
-s: 指定shell类型

3 编译安装

①查看配置帮助
./configure --help
②解压安装包并进入解压包
tar zxf nginx-1.12.0.tar.gz
cd nginx-1.12.0
③配置编译选项
./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module

--prefix=/usr/local/nginx    # 指定安装目录
--user=nginx    # 指定运行用户
--group=nginx    # 指定运行用户组
--with-http_stub_status_module    # 启用模块以支持状态统计,以便查看服务器的连接信息
④编译安装
make && make install

4 路径优化

查看当前PATH环境变量

[root@localhost ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
# 该变量的值由一系列以冒号分隔的目录名组成

将主程序Nginx添加到环境变量中,使Nginx服务器的运行更加方便

ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/
或
echo "export PATH=$PATH:/usr/local/nginx/sbin" >> /etc/profile

5 运行控制

Nginx主程序配置文件路径/usr/local/nginx/conf/nginx.conf

# 检查配置文件错误
nginx -t
# 启动Nginx服务
nginx [-c PATH]
-c: 若要改用其他配置文件,使用该选项指定
# 查看进程
[root@localhost ~]# netstat -anpt | grep nginx
tcp   0   0 0.0.0.0:80          0.0.0.0:*          LISTEN      26016/nginx: master
————————————————————————————————
# -bash: netstat: 未找到命令
yum install net-tools

通过访问IP地址可以测试Nginx服务是否正常运行

在这里插入图片描述

# 重载配置
killall -s HUP nginx
# 退出进程
killall -s QUIT nginx
————————————————————————
# -bash: killall: 未找到命令
yum install psmisc -y
# Nginx服务运行时,PID号默认存放在/usr/local/nginx/logs/nginx.pid
# 如需要使用kill命令,通过查询PID号来控制
cat /usr/local/nginx/logs/nginx.pid

使用Nginx服务脚本

为使Nginx服务的启动、停止、重载等操作更加方便,可以自己编写Nginx服务脚本;

使用chkconfigservice工具进行管理

vi /etc/init.d/nginx
————————————————————————————
#!/bin/bash
#chkconfig:- 99 20
#description:Nginx Service Control Script
PROG="/usr/local/nginx/sbin/nginx"    # 主程序路径
KILLPRO="/usr/bin/kill"
PIDFILE="/usr/local/nginx/logs/nginx.pid"   # PID存放路径
case $1 in
start)
        $PROG
        ;;
stop)
        $KILLPRO -s QUIT $(cat $PIDFILE)    # 根据PID号退出进程
        ;;
reload)
        $KILLPRO -s HUP $(cat $PIDFILE)    # 根据PID号重载进程
        ;;
restart)
        $KILLPRO -s QUIT $(cat $PIDFILE)
        $PROG
        ;;
*)
        echo "Usage: $0 {start|stop|restart|reload}" 
        exit 1
esac
exit 0
————————————————————————————
chmod +x /etc/init.d/nginx    # 添加执行权限
chkconfig --add nginx    # 添加到系统服务

配置文件nginx.conf

cat /usr/local/nginx/conf/nginx.conf
————————————————————————————
#user  nobody;    # 配置用户或者组,默认为nobody nobody
worker_processes  1;    # 允许生成的进程数,默认为1

#error_log  logs/error.log;    # 错误日志文件路径
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;    # PID文件的位置

# 指定Nginx进程的I/O响应模型,每个进程的连接数等设置
events {
    worker_connections  1024;    # 每个进程最多处理1024个连接
}

http {
    include       mime.types;    # 文件扩展名与文件类型映射表
    default_type  application/octet-stream;    #默认文件类型,默认为text/plain

    #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;    # 允许sendfile方式传输文件;默认为off
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;    # 连接超时时间

    #gzip  on;
    
# web服务的监听配置
    server {    
        listen       80;    # 监听端口;somename:8080
        server_name  localhost;    # 监听地址;网站名

        #charset koi8-r;    # 网页的默认字符集

        #access_log  logs/host.access.log  main;

        location / {
            root   html;    # 网站根目录的位置;默认/usr/lcoal/nginx/html
            index  index.html index.htm;    # 设置默认页
            #deny all    # 拒绝的IP
            #allow all    # 允许的IP
        }
		
		# 添加HTTP_STUB_STATUS状态统计模块
		location /status {    # 访问位置为/status
			stud_status on;    # 打开状态统计功能
			access_log off;    # 关闭此位置的日志记录
		}
		
        #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$ {    # 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;
    #    }
    #}
}
# 如果出现报错
tail /var/log/messages
或
ls /usr/local/nginx/logs
access.log  error.log

Nginx地址限制

通过修改配置文件,增加字段实现

  • deny IP/IP段:拒绝某个IP或IP段的客户端访问
  • allow IP/IP段:允许某个IP或IP段的客户端访问
vim /usr/local/nginx/conf/nginx.conf
# 添加相应配置项
——————————————————————————————————
···
server {
	location /{
		deny 192.168.41.130;
		allow all;
···

此时,192.168.41.130不能访问web服务器,并报错403拒绝访问

在这里插入图片描述

Nginx访问控制

目的:当客户端想要访问网站相应的网站或者目录时,要求用户输入用户名和密码才能正常访问

1 使用htpasswd命令生成用户认证文件

[root@localhost ~]# htpasswd -c /usr/local/nginx/passwd.db test
New password:
Re-type new password:
Adding password for user test\
————————————————————————————————————
# 输入两次密码,用户名为test
# -bash: htpasswd: 未找到命令
yum -y install httpd-tools

2 修改密码文件的权限与属主

chmod 400 /usr/local/nginx/passwd.db
chown nginx /usr/local/nginx/passwd.db

3 添加配置项到主配置文件nginx.conf

vim /usr/local/nginx/conf/nginx.conf
···
server {
	location /{
		auth_basic "secret";
		auth_basic_user_file /usr/local/nginx/passwd.db;
	}

4 检测语法,重启服务

nginx -t
service nginx restart

此时访问web服务器需要输入账号密码
在这里插入图片描述

Nginx访问状态统计

Nginx内置了HTTP_STUB_STATUS状态统计模块,用来反馈当前的web访问情况;

在配置编译参数时,可以通过选项来添加此模块

./configure ··· --with-http_stub_status_module ···
# 查看已安装的Nginx是否包含HTTP_STUB_STATUS模块
/usr/local/nginx/sbin/nginx -V

要使用Nginx的状态统计功能,除了启用内建模块以外,还需要修改nginx.conf配置文件

vim /usr/local/nginx/conf/nginx.conf
···
location /status {    # 访问位置为/status
	stub_status on;    # 打开状态统计功能
	access_log off;    # 关闭此位置的日志功能
}

在这里插入图片描述

Nginx虚拟主机

利用虚拟主机,不用为每个要运行的网站提供一台单独的Nginx服务器或单独运行一组Nginx进程;

虚拟主机提供了在同一台服务器,同一组Nginx进程上运行多个网站的功能;

使用Nginx搭建虚拟主机服务器时,每个虚拟WEB站点拥有独立的server{}配置段。

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

# 创建www.bt.com的根目录
mkdir -p /var/www/html/btcom
# 创建www.test.com的根目录
mkdir -p /var/www/html/testcom

# 创建默认页,并设置网页内容
vi /var/www/html/btcom/index.html
www.bt.com

vi /var/www/html/testcom/index.html
www.test.com

1 基于域名的虚拟主机

①修改windows客户机的hosts文件
C:\Windows\System32\drivers\etc\hosts
192.168.153.131 www.bt.com www.test.com
②修改配置文件
vim /usr/local/nginx/conf/nginx.conf
# 将配置文件中的server{}代码注释,加入新的代码
————————————————————————————
    server {
        listen 80;
        server_name  www.bt.com;
        charset utf-8;
        access_log logs/www.bt.access.log main;
        location / {
            root /var/www/html/btcom;
            index  index.html index.htm;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }

    server {
        listen 80;
        server_name  www.test.com;
        charset utf-8;
        access_log logs/www.test.access.log main;
        location / {
            root /var/www/html/testcom;
            index  index.html index.htm;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
————————————————————————————————————
21     log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
22                       '$status $body_bytes_sent "$http_referer" '
23                       '"$http_user_agent" "$http_x_forwarded_for"';

access_log logs/www.bt.access.log main;  # 使用了main,需要打开22行作用的注释
nginx -t    # 检测语法错误
service nginx restart
③测试,分别访问两个域名

在这里插入图片描述

2 基于IP的虚拟主机

一台主机如果安装多个网卡可以有多个IP,可以设置每一个IP对应一个站点;

现在可以通过配置虚拟IP的方式来为主机设置站点。

①配置虚拟IP
[root@localhost ~]# ip addr
inet 192.168.153.131/24 brd 192.168.153.255 scope global noprefixroute ens33
[root@localhost conf]# ifconfig ens33:1 192.168.153.132
[root@localhost conf]# ip addr
···
    inet 192.168.153.131/24 brd 192.168.153.255 scope global noprefixroute ens33
       valid_lft forever preferred_lft forever
    inet 192.168.153.132/24 brd 192.168.153.255 scope global secondary ens33:1
       valid_lft forever preferred_lft forever
···
②修改配置文件nginx.conf
vim /usr/local/nginx/conf/nginx.conf
# 只需要修改listen和server_name两行就可以
——————————————————————————————————
    server {
        listen       192.168.153.131;
        server_name  localhost;
        location / {
            root   /var/www/html/testcom;
            index  index.html index.htm;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
    
    server {
        listen       192.168.153.132;
        server_name  localhost;
        location / {
            root   /var/www/html/btcom;
            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
③重启服务,输入IP地址测试
# firewalld开启时,需要配置防火墙策略
[root@localhost conf]# firewall-cmd --add-port=80/tcp --zone=dmz
success

3 基于端口的虚拟主机

①修改配置文件nginx.conf
# 选择系统中不使用的端口,将多个端口映射到同一IP地址上
vim /usr/local/nginx/conf/nginx.conf
——————————————————————————————————
    server {
        listen       192.168.153.131:82;     # 更改端口
        server_name  localhost;
        location / {
            root   /var/www/html/testcom;
            index  index.html index.htm;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
    
    server {
        listen       192.168.153.131:81;    #再创建一个模块,设置端口
        server_name  localhost;
        location / {
            root   /var/www/html/btcom;
            index  index.html index.htm;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
②查看端口是否在运行
[root@localhost conf]# netstat -ntlp | grep nginx
tcp      0    0 0.0.0.0:81            0.0.0.0:*             LISTEN    8226/nginx: master
tcp      0    0 0.0.0.0:82            0.0.0.0:*             LISTEN    8226/nginx: master
③测试,访问两个端口
# 如果开启防火墙,需要在web服务器添加防火墙策略,开放端口
[root@localhost conf]# firewall-cmd --add-port=81/tcp --zone=dmz
success
[root@localhost conf]# firewall-cmd --add-port=82/tcp --zone=dmz
success

拓展:自建DNS服务器,配置基于域名的Nginx虚拟主机

DNS系统作用
  • 维护地址数据库,其中记录了各种主机域名与IP地址的对应关系
  • 正向解析:根据域名查IP地址
  • 反向解析:根据IP地址查域名
DNS服务器类型
  • 缓存域名服务器:只提供域名解析结果的缓存功能,目的在于提高查询速度和效率,但是没有自己控制的区域地址数据
  • 主域名服务器:维护某一个特定DNS区域的地址数据库,对其他的解析记录具有自主控制权,是指定区域中唯一存在的权威服务器、官方服务器。构建主域名服务器时,需要自行建立所负责区域的地址数据文件
  • 从域名服务器:与主域名服务器提供完全相同的DNS解析服务,通常用于DNS服务器的热备份。但是对于客户机来说,物理使用主域名服务器还是从域名服务器,查询到结果都是一样的
BIND服务控制

BIND不是唯一能够提供域名服务的DNS服务程序,但是它却是应用最钢钒的,BIND可以运行在大多数linux主机中。官网:https://www.isc.org/

# 在网关服务器上安装
yum -y install bind*
——————————————————————
# 一些软件包
bind-utils: 提供对DNS服务器的测试工具程序,如nslookup
bind-libs: 提供了bind、bind-utils需要使用的函数库
bind-chroot: 为BIND服务提供了一个伪装的根目录(/var/named/chroot),以提高安全性

BIND软件包安装成功后,会自动生成一个名为named的系统服务;

可以通过脚本文件/etc/init.d/named或者service工具控制DNS域名服务的运行.

service named status
service named start
BIND服务的配置文件
主配置文件
/etc/named.conf
# options{}表示全局配置部分
# 除了directory项通常会保留以外,其他的配置项都可以省略
# 若不指定listen-on配置项,named默认在所有接口的UDP 53端口监听服务;客户端UDP,服务端TCP
# 若不指定allow-query配置项,默认会相应所有客户机的查询请求
options {
        listen-on port 53 { 127.0.0.1; };    # 监听地址和端口;默认端口53
        directory       "/var/named";    # 区域数据文件的默认存放位置
        allow-query     { localhost; };    # 允许使用本DNS服务的网段
};

logging {
        channel default_debug {
                file "data/named.run";
                severity dynamic;
        };
};

# "zone ······ {}"表示区域配置
# 一台DNS服务器可以为多个区域提供解析,因此在named.conf文件中可以有很多个zone配置段
zone "love.com" IN {
        type master;
        file "love.com.zone";
        #allow-transfer {192.168.153.130;};    # 可选,指定从服务器
};

zone "." IN {
        type master;    # 自己创建根域,类型为master主区域;默认hint
        file "named.ca";    # 区域数据文件为named.ca
};

include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";
# 检查配置文件语法错误
named-checkconf -z /etc/named.conf
区域数据配置文件

区域数据配置文件通常位于/var/named目录下,每个区域数据文件对应一个DNS解析区域,文件名及内容由该域的管理员自行设置;区域数据文件需要自己创建或者复制已有的文件修改

1 TTL配置及SOA记录部分

$TTL 86400    # 有效解析记录的生存周期
@ IN SOA love.com. admin.love.com. (     # SOA标记、域名、管理邮箱
                        2011030301    # 更新序列号,可以是10位以内的整数
                        4H    # 刷新时间,重新下载地址数据的间隔
                        30M    # 重试延迟,下载失败后的重试间隔
                        12H    # 失效时间,超过该时间仍无法下载则放弃
                        1D    # 无效解析记录的生存周期
)

# 上述配置中,时间单位默认为秒,也可以使用以下单位:M分、H时、W周、D天
# 文件中的'@'符号表示当前的DNS区域名
# 关于更新序列号的说明:SOA记录中的更新序列号用来同步主、从服务器的区域数据,当从服务器判断区域更新时,若发现主服务器中的序列号与本地区域数据中的序列号相同,则不会进行下载


2 地址解析记录部分

@       IN      NS      www.love.com.    # NS域名服务器:DNS服务器主机地址
		IN		MX 10	mail.love.com.   # MX邮件交换:记录邮件服务器的主机地址
www     IN      A       192.168.153.131  # A地址:记录正向解析条目;告诉NS,www指向哪个IP地址
ftp		IN		CNAME	www		# 表示ftp.love.com是www.love.com的别名
# 检查区域数据文件的语法错误
# 检查DNS区域love.com的区域数据文件love.com.zone
cd /var/named
named-checkzone love.com love.com.zone

拓展:基于域名解析的负载均衡

当多台服务器同时为一个网站提供服务时,可以在区域数据文件添加同一域名对应多个IP地址的域名解析记录

www     IN      A       192.168.153.131
www     IN      A       192.168.153.132
www     IN      A       192.168.153.133

当然也有一台服务器同时承载某个DNS区域内的许多个不同域名的时候,可以在区域数据文件的最后一行添加泛域名解析记录,即使用*以匹配主机名

*     IN      A       192.168.153.131

LNMP搭建

MYSQL源码编译安装

# 需要用到的安装包
cmake-2.8.6.tar.gz
mysql-5.6.36.tar.gz

1 安装依赖包

yum -y install ncurses-devel gcc-c++ perl-Module-Install

2 编译安装cmake

# 解压安装包到指定目录
tar -zxvf cmake-2.8.6.tar.gz -C /usr/local/
# 进入解压包
cd /usr/local/cmake-2.8.6/
# 配置,这里默认配置即可
./configure
# 编译安装
gmake && gmake install

3 编译安装mysql

# 解压安装包
tar -zxvf mysql-5.6.36.tar.gz -C /usr/local/
# 进入解压目录
cd /usr/local/mysql-5.6.36/
# 基于cmake进行配置
cmake  -DCMAKE_INSTALL_PREFIX=/usr/local/mysql  -DDEFAULT_CHARSET=utf8  -DDEFAULT_COLLATION=utf8_general_ci  -DWITH_EXTRA_CHARSETS=all  -DSYSCONFDIR=/etc
# 编译安装
make && make install

4 创建配置文件

# 使用mysql自带的配置文件模板
cp /usr/local/mysql-5.6.36/support-files/my-default.cnf /etc/my.cnf
# 使用mysql自带的服务脚本
cp /usr/local/mysql-5.6.36/support-files/mysql.server /etc/rc.d/init.d/mysqld
chmod +x /etc/rc.d/init.d/mysqld
chkconfig --add mysqld

5 路径优化

echo "PATH=$PATH:/usr/local/mysql/bin">> /etc/profile
source /etc/profile

6 初始化数据库

# 创建mysql专用账户
groupadd mysql
useradd -M -s /sbin/nologin mysql -g mysql
# 更改权限
chown -R mysql:mysql /usr/local/mysql
# 初始化
/usr/local/mysql/scripts/mysql_install_db --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --user=mysql

7 启动数据库并设置数据库密码

systemctl start mysqld
mysqladmin -u root -p password 123456

PHP源码编译安装

PHP(Hypertext Preprocessor)超文本预处理器,是一种通用开源脚本语言;

  • 主要适用于Web开发领域

  • PHP是将程序嵌入到HTML(标准通用标记语言下的一个应用)文档中去执行,执行效率比完全生成HTML标记的CGI要高许多

# 需要用到的安装包
php-5.5.24.tar.gz
zend-loader-php5.5-linux-x86_64_update1.tar.gz

1 安装依赖

yum -y install gd libxml2-devel libjpeg-devel libpng-devel freetype freetype-devel zlib libpng curl-devel
2 编译安装php
# 解压安装包到指定目录
tar -zxvf php-5.5.24.tar.gz -C /usr/local/
# 进入解压包
cd /usr/local/php-5.5.24
# 配置
./configure --prefix=/usr/local/php5  --with-gd --with-zlib --with-mysql=/usr/local/mysql --with-mysqli --with-config-file-path=/usr/local/php5  --enable-mbstring  --enable-fpm  --with-jpeg-dir=/usr/lib
# 编译安装
make && make install

3 创建配置

cp /usr/local/php-5.5.24/php.ini-development /usr/local/php5/php.ini
# 配置文件中的常见配置选项
default_charset = "utf-8"    # 字符集
file_uploads = On            # 是否允许HTTP方式文件上载
upload_max_filesize = 2M     # 上载文件的最大许可大小
max_file_uploads = 20		 # 每个HTTP最多允许请求上传的文件数
post_max_size = 8M           # PHP将接受POST数据最大大小(HTTP 请求方法:GET 和 POST)
short_open_tag = On          # 允许 tags 将被识别

4 路径优化

ln -s /usr/local/php5/bin/* /usr/local/bin/
ln -s /usr/local/php5/sbin/* /usr/local/sbin/

5 安装ZendGuardLoader优化模块

Zend Optimizer用优化代码的方法来提高PHP应用程序的执行速度。

实现的原理是对那些在被最终执行之前由运行编译器(Run-Time Compiler)产生的代码进行优化。

一般情况下,执行使用Zend Optimizer的PHP程序比不使用的要快40%到100%。

①解压安装包
tar zxf zend-loader-php5.5-linux-x86_64_update1.tar.gz -C /usr/local/
② 将解压包目录下的模块文件复制到PHP程序的模块文件夹
cd /usr/local/zend-loader-php5.5-linux-x86_64
cp ZendGuardLoader.so /usr/local/php5/lib/php/
③ 修改php.ini配置文件,添加加载及启用ZendGuardLoader.so模块的配置语句
vim /usr/local/php5/php.ini
# 放在[php]标签部分
zend_extension=/usr/local/php5/lib/php/ZendGuardLoader.so
zend_loader.enable=1

LNMP测试

1 调用PHP的fpm模块处理

PHP-FPM提供了更好的PHP进程管理方式,可以有效控制内存和进程、可以平滑重载PHP配置;

在./configure的时候带 –enable-fpm参数即可开启PHP-FPM

# 调用php-fpm服务配置文件
cd /usr/local/php5/etc/
cp php-fpm.conf.default php-fpm.conf
# 启动php-fpm进程
/usr/local/php5/sbin/php-fpm

2 修改nginx配置文件

告知nginx如果接收到.php结尾的请求,交由给php-fpm进行处理

vim /usr/local/nginx/conf/nginx.conf
# 打开注释
        location ~ \.php$ {
            root           html;
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
        #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
            include        fastcgi_params;
        }
service nginx restart

3 测试

vim /usr/local/nginx/html/index.php
<?php
	phpinfo();
?>

拓展:403 Forbidden

1 考虑firewalld防火墙
firewall-cmd --add-port=80/tcp --zone=<zone>
2 考虑配置文件nginx.conf
vim /usr/local/nginx/conf/nginx.conf
# 考虑运行的用户
user  nginx nginx;
# 在location / {} 中添加index.php;
# 如果不添加,则在输入网址时需要指定文件,如192.168.153.131/index.php
       location / {
           root   html;
           index  index.php index.html index.htm;
           allow all;
       }
# 如果需要打开子目录,在server{}下添加
 autoindex on;
3 文件权限
cd /usr/local/nginx/html
chown nginx. index.php

LNMP应用—搭建Wordpress博客网站

# 需要的软件包
wordpress-4.9.4-zh_CN.zip

1 解压并拷贝到网站根目录

unzip wordpress-4.9.4-zh_CN.zip 
cp -r wordpress /usr/local/nginx/html/

2 创建数据库

mysql -u root -p
mysql> create database wordpress default charset utf8;
Query OK, 1 row affected (0.00 sec)
mysql> grant all on wordpress.* to wordpuser@'localhost' identified by '123456';
Query OK, 0 rows affected (0.00 sec)

3 访问网站,搭建系统

192.168.153.131/wordpress
192.168.153.131/wordpress/index.php    # 自动跳转

在这里插入图片描述

在这里插入图片描述

拓展:登录后不显示图片

1 修改php-fpm配置文件

/usr/local/php5/etc/php-fpm.conf
# 更改权限
user = nginx
group = nginx

2 添加index.php

vim /usr/local/nginx/conf/nginx.conf
		location / {
            root   html;
            index  index.php index.html index.htm;
            allow all;
        }

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值