目录
Nginx
特点
Nginx安装
添加Nginx服务
Nginx配置文件
全局配置
HTTP配置
状态统计页面
Nginx访问控制
授权用户
授权IP
虚拟主机
基于域名
测试
基于IP
测试
基于端口
测试
LNAMP
解析方式
LNMP转发php-fpm解析
Nginx代理LAMP解析
LNMP部署示例
实验环境
MariaDB
修改密码
授权数据库
PHP
拷贝配置文件
让bash能够读取php的命令
配置提高php解析效率的模块
配置 Nginx 支持 PHP 环境
Nginx配置
使用NFS文件系统部署Discuz论坛
Nginx
Nginx是一个高性能的开源Web服务器软件,也可以用作反向代理服务器、负载均衡器和HTTP缓存。
特点
- 可以跨平台
- 轻量化
- 并发请求(请求量),假如Apache的并发量能达到3000-5000,那么Nginx可以达到30000-50000
Nginx安装
在XShell中拖入Nginx的源代码软件包
使用systemctl stop firewalld命令关闭防火墙,使用vim /etc/sysconfig/selinux命令编辑selinux文件,将SELINUX参数改为disabled设置永久关闭内核完全机制
使用yum -y install pcre-devel zlib-devel gcc* openssl-devel命令安装nginx所需开发环境
- Zlib是一个压缩库,Nginx使用它来支持HTTP数据的gzip压缩功能。zlib-devel包含Zlib库的头文件和静态库,用于编译时链接。
- OpenSSL是一个开放源代码的加密库,提供了安全套接字层(SSL)和传输层安全(TLS)协议的实现。Nginx通常与OpenSSL一起使用来支持HTTPS协议,即加密的HTTP通信。openssl-devel包含OpenSSL库的头文件和静态库,用于编译时链接。
为了提高系统安全性,运行nginx时不使用root用户,创建一个专门运行该程序的用户。使用useradd -M -s /sbin/nologin nginx命令创建程序用户,-M:不创建家目录;-s:指定登录Shell为nologin(不能登录)
使用tar zxvf nginx-1.12.0.tar.gz命令解压源码包,cd进入源码包解压的目录下准备下一步配置安装
运行./configure脚本,自定义安装设置
[root@localhost nginx-1.12.0]# ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_ssl_module --with-http_stub_status_module
选项 | 说明 |
--prefix=/usr/local/nginx | 这指定了安装 Nginx 的根目录。在这里,Nginx 将被安装到 /usr/local/nginx 目录下。通常情况下,这是默认的安装路径,但可以根据需要修改。 |
--user=nginx --group=nginx | 这两个参数指定了 Nginx 进程运行的用户和用户组。在这里,Nginx 进程将以 nginx 用户和 nginx 组的身份运行。这是为了增强安全性,使得 Nginx 进程不以 root 用户的权限运行。 |
--with-http_ssl_module | 这个参数启用了 Nginx 的 HTTPS 支持,启用了SSL或TLS加密协议的功能。这使 Nginx 可以处理通过 HTTPS 协议传输的数据流量。 |
--with-http_stub_status_module | 这个参数启用了 Nginx 的状态页功能,允许你查看 Nginx 当前的运行状态和一些基本的性能统计信息。 |
./configure完成后,生成了MAKEFILE文件(配置参数文件)然后使用make && make install命令编译并安装
使用ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/命令创建软链接,这样在终端中也可以调用nginx的命令
可以使用nginx -t命令测试一下bash解释器能否读取nginx命令,检查配置文件是否有语法错误, 提示successful就代表语法没有错误
[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
输入nginx命令启动nginx服务,还可以使用netstat命令查询nginx有没有运行
[root@localhost ~]# nginx
[root@localhost ~]# netstat -anpt | grep nginx
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 17125/nginx: master
此时在宿主机的浏览器中访问该主机的IP地址,测试能否访问Nginx的服务器
如果要关闭Nginx服务,可以使用以下命令
命令 | 说明 |
nginx -s stop | 停止nginx服务 |
pkill -9 nginx | 杀死nginx进程来停止nginx服务 |
killall -3 nginx | 停止nginx服务 |
killall -s QUIT nginx | 停止nginx服务 |
killall -1 nginx | 重载nginx服务 |
killall -s HUP nginx | 重载nginx服务 |
添加Nginx服务
使用systemctl管理服务需要在/lib/systemd/system/目录下创建对应的服务文件
使用service管理服务需要在/etc/init.d/目录下创建对应服务脚本,这里我们使用systemctl管理
进入/lib/systemd/system/目录下,创建nginx服务的文件,添加以下内容,保存并退出,重启systemd,设为开机自启然后启动nginx
[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# 重启systemd
[root@localhost system]# systemctl daemon-reload
[root@localhost system]# systemctl enable nginx
[root@localhost system]# systemctl start nginx
- #chkconfig: 35 99 20
- 35:表示在运行级别3(多用户文本模式)和5(图形模式)下启用这个服务,使用 - 可以表示所有运行级别
- 99:表示启动服务的优先级。数字越高,启动越靠后。
- 20:表示停止服务的优先级。数字越高,停止越靠后。
Nginx配置文件
cd到/usr/local/nginx/conf/目录下,进入Nginx存放配置文件的目录,打开nginx主配置文件:vim nginx.conf
全局配置
#user nobody; 运行用户
worker_processes 2; # 进程数量,与内核数量对应
#error_log logs/error.log; # 错误日志文件的位置
#pid logs/nginx.pid; # PID 文件的位置events {worker_connections 1024; # 每个进程允许承载的连接数,与内存对应
}
HTTP配置
下方代码块讲解了部分参数的意义,以及对一些参数的修改,以便进行实验
http{日志格式,该格式的名称为"main"#log_format main '$remote_addr - $remote_user [$time_local] "$request" '# '$status $body_bytes_sent "$http_referer" '# '"$http_user_agent" "$http_x_forwarded_for"';# log_format 格式名称 '客户端IP地址 - 客户端用户名 [请求时间] "请求方式" '# '状态码 报文字节数 "HTTP请求头信息" '# '"客户端的用户代理字符串" "客户端原始IP列表,使用代理时有效"'每一个server块都对应一个站点server {listen 80; # 监听端口server_name www.test.com; # 服务名称,如果要实现虚拟主机这一项是必须填的charset utf-8; # 字符编码#access_log logs/host.access.log main;location / { # 这里的/(根)指的是nginx的安装路径,/usr/local/nginxroot html; # 在该根目录下有一个html子目录,存放网页文件index index.html index.htm; # 索引文件 }
}
状态统计页面
在location块下方,添加一个location块
该块内的功能的前提是在安装nginx时配置了--with-http_stub_status_module模块
- stub_status:当客户端访问 /status 路径时,Nginx将会返回当前服务器的状态信息
- access_log:通常情况下,Nginx会自动记录所有对于日志的访问,通过设置为off后,可以防止用户访问指定站点的访问信息写入到日志中
假设你有一个网站,其中有一个页面 /test,这个页面包含了一些敏感信息,只有内部员工才能访问。
为了确保这些敏感信息不会被记录在访问日志中,你可以使用 access_log off。来禁止记录对 /test 页面的访问
location /status { # status:访问网站url的子目录名称(http://www.test.com/status)stub_status on; # 启用该站点的状态统计功能access_log off; # 关闭访问日志记录}
保存并退出,在终端输入systemctl restart nginx这个命令来启动nginx服务
在宿主机使用浏览器访问nginx服务,可以显示出状态信息
在此处做一个快照,方便后续LNMP部署
Nginx访问控制
授权用户
使用yum -y install httpd-tools安装Apache的工具集
使用htpasswd -c /usr/local/nginx/pass.db tom命令生成用户认证文件,并创建名为tom的用户和对应加密过的密码,回车后设置密码
如果要再次创建授权的用户,需要将命令的-c选项去掉,因为认证文件已经生成过了不需要再生成,否则就会覆盖原文件:htpasswd /usr/local/nginx/pass.db jerry
为了访问的安全性,应该只设置读的权限,使用chmod 400将pass.db文件改为只能读取,而在nginx运行时应该由nginx的程序用户来调用该文件,所以将属主也改为nginx
[root@localhost ~]# ll /usr/local/nginx/pass.db
-rw-r--r-- 1 root root 86 7月 14 10:25 /usr/local/nginx/pass.db
[root@localhost ~]# chmod 400 /usr/local/nginx/pass.db
[root@localhost ~]# ll /usr/local/nginx/pass.db
-r-------- 1 root root 86 7月 14 10:25 /usr/local/nginx/pass.db
[root@localhost ~]# chown nginx /usr/local/nginx/pass.db
[root@localhost ~]# ll /usr/local/nginx/pass.db
-r-------- 1 nginx root 86 7月 14 10:25 /usr/local/nginx/pass.db
还需要在nginx配置文件中配置基本认证的功能,
[root@localhost ~]# vim /usr/local/nginx/conf/nginx.conf
修改location块内的参数
location / {root html;index index.html index.htm;auth_basic "secret"; # 定义认证区域,显示一个提示信息"secret"给客户端,当客户端尝试访问受保护的资源时,会弹出一个对话框要求输入用户名和密码。auth_basic_user_file /usr/local/nginx/pass.db; # 当客户端提供凭据pass.db中的记录匹配时,Nginx才会允许访问资源}
此时用浏览器访问Nginx服务器就会弹出身份验证的窗口
授权IP
因为规则是从上往下匹配的,如果匹配到规则就停止,不再往下匹配。
所以可以先添加deny规则 拒绝102主机访问,然后再下一条规则添加允许所有主机访问,就变成了只拒绝102主机的请求,允许其他所有主机
[root@localhost ~]# vim /usr/local/nginx/conf/nginx.conf
location / {root html;index index.html index.htm;#auth_basic "secret";#auth_basic_user_file /usr/local/nginx/pass.db;deny 192.168.10.102;allow all;}
虚拟主机
基于域名
将nginx配置文件中第一个server站点下方的被注释的server站点注释全部去掉,准备定义第二个站点,注意想要在同一主机上托管多个站点,server_name必须不同,服务器要根据server_name来判断用户访问的URL
把第一个server站点的网页位置改为/var/www/html,第二个站点网页位置改为/var/www/html/accp
再为accp站点添加访问日志,保存并退出使用nginx -t测试语法正确性
[root@localhost ~]# vim /usr/local/nginx/conf/nginx.conf
server {listen 80;server_name www.test.com;charset utf-8;access_log logs/test.com.access_log;location / {root /var/www/html/test;index index.html index.htm;#auth_basic "secret";#auth_basic_user_file /usr/local/nginx/pass.db;#deny 192.168.10.102;#allow all;}# 省略部分内容
}server {listen 80;server_name www.accp.com;access_log logs/accp.com.log;location / {root /var/www/html/accp;index index.html index.htm;}
}[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
在配置文件中配置的网页存放位置,由于我们是用源码包安装的Nginx,所以系统不会生成/var/www/html目录,所以这里需要手动创建出来两个对应目录
再使用重定向将测试的字符串覆盖到index.html文件中,如果没有该文件,重定向会在覆盖时自动生成该文件
[root@localhost ~]# mkdir -p /var/www/html/test
[root@localhost ~]# mkdir -p /var/www/html/accp
[root@localhost ~]# echo "www.test.com" > /var/www/html/test/index.html
[root@localhost ~]# echo "www.accp.com" > /var/www/html/accp/index.html
测试
因为有两个站点需要测试,所以需要向hosts文件写入对应解析,这里开启第二台虚拟机作为客户端(192.168.10.102)
将解析站点写入hosts文件
[root@localhost ~]# vim /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.10.101 www.test.com
192.168.10.101 www.accp.com
使用curl测试
[root@localhost ~]# curl www.test.com
www.test.com
[root@localhost ~]# curl www.accp.com
www.accp.com
基于IP
手动添加子接口
或使用ifconfig命令创建临时子接口
ifconfig ens33:0 192.168.10.211
ifconfig ens33:0 192.168.10.212
[root@localhost ~]# cd /etc/sysconfig/network-scripts/
[root@localhost network-scripts]# cp ifcfg-ens33 ifcfg-ens33:0
[root@localhost network-scripts]# cp ifcfg-ens33 ifcfg-ens33:1
在子接口0中修改IP和设备名
[root@localhost network-scripts]# vim ifcfg-ens33:0
IPADDR=192.168.10.211
NAME=ens33:0
DEVICE=ens33:0
在子接口1中修改IP和设备名
[root@localhost network-scripts]# vim ifcfg-ens33:1
IPADDR=192.168.10.212
NAME=ens33:1
DEVICE=ens33:1
重启网络服务,使用ip a查看地址
[root@localhost network-scripts]# systemctl restart network
[root@localhost network-scripts]# ip a
2: ens33: inet 192.168.10.101/24 brd 192.168.10.255 scope global ens33inet 192.168.10.211/24 brd 192.168.10.255 scope global secondary ens33:0inet 192.168.10.212/24 brd 192.168.10.255 scope global secondary ens33:1
修改配置文件,将两个站点的监听参数改为子接口IP : 端口号
检测语法正确性,重启nginx服务
[root@localhost ~]# vim /usr/local/nginx/conf/nginx.conf
# test站点
listen 192.168.10.211:80;
# accp站点
listen 192.168.10.212:80;
[root@localhost ~]# nginx -t
[root@localhost ~]# systemctl restart nginx
测试
来到102客户端主机使用curl测试
[root@localhost ~]# curl 192.168.10.211
www.test.com
[root@localhost ~]# curl 192.168.10.212
www.accp.com
基于端口
直接修改配置文件中的监听参数
修改完后重启服务
[root@localhost ~]# vim /usr/local/nginx/conf/nginx.conf
# test站点
listen 192.168.10.101:80;
# accp站点
listen 192.168.10.101:8001;
[root@localhost ~]# nginx -t
[root@localhost ~]# systemctl restart nginx
测试
需要注意的是,访问accp.com不加端口号访问的也不是accp.com,只有加了8001端口号才能正常访问
[root@localhost ~]# curl 192.168.10.101:80
www.test.com
[root@localhost ~]# curl 192.168.10.101:8001
www.accp.com
[root@localhost ~]# curl www.test.com
www.test.com
[root@localhost ~]# curl www.test.com:8001
www.accp.com
[root@localhost ~]# curl www.accp.com
www.test.com
[root@localhost ~]# curl www.accp.com:8001
www.accp.com
LNAMP
前面的文章说过Linux、Apache、MySQL、PHP结合构建LAMP,那么把Apache换成Nginx也可以构建LNMP
把Nginx加入到LAMP就可以构建成LNAMP
解析方式
LNMP转发php-fpm解析
在运行LAMP环境的时候,其中的PHP并没有实际运行的进程,只是安装了PHP的模块给Apache使用
由于php没有给Nginx提供模块,所以在LNMP环境下就需要额外运行一个php环境的主机,提供一个进程 ——》php-fpm,该进程负责解析动态资源请求。
就实现了:Nginx专门处理静态资源解析,php专门负责动态资源解析
Nginx代理LAMP解析
Nginx也可以通过 cgi 或 fast-cgi 连接两个程序,Nginx接收动态资源请求后需要转发给php解析,这么一来解析的速度就变慢了
可以让Nginx通过代理功能把动态请求转发给LAMP的环境,就实现了Nginx解析静态请求,LAMP解析动态请求,达到更快的解析速度(动静分离)
- cgi:通用网关接口
- fast-cgi:快速通用网关接口
LNMP部署示例
实验环境
IP地址 | 操作系统 | 主要软件及版本 |
192.168.10.101 | CentOS7.9 | Nginx |
192.168.10.102 | CentOS7.9 | php |
192.168.10.103 | CentOS7.9 | mysql |
为了方便测试,关闭3台主机的防火墙:systemctl stop firewalld
在103主机安装
MariaDB
为了快速部署,这里使用yum来安装mariadb数据库的服务端和客户端:yum -y install mariadb-server mariadb
安装完mariadb,使用systemctl start mariadb命令启动服务
修改密码
使用mysqladmin命令指定连接MySQL的用户名为root,密码设为123456
然后使用mysql -uroot -p测试密码能否进入数据库
[root@localhost ~]# mysqladmin -uroot password '123456'
[root@localhost ~]# mysql -uroot -p
授权数据库
对数据库的连接授权,授权后可以使用主机名连接
登录数据库,切换操作的数据库为mysql,授予root用户可以从任何主机访问数据库的所有权限,并设置密码为'aptech'。
为了使授权生效,需要刷新MySQL的权限缓存
%:%通配符表示所有IP地址
[root@localhost ~]# mysql -u root -p123456
use mysql; # 切换数据库为mysql
grant all on *.* to root@'%' identified by 'aptech';
flush privileges; # 刷新权限
PHP
在102主机安装
拖入php的源代码软件包
使用tar zxvf php-5.5.38.tar.gz解压该源码包
使用yum -y install gd libxml2-devel libjpeg-devel libpng-devel gcc*命令安装php所需开发环境
gd是一个用于动态创建图像的开源库。它允许你创建 GIF、JPEG、PNG 等格式的图像,以及进行简单的图像操作和合成。
libxml2是一个用于解析XML文档的函数库。
libjpeg 一个完全用C语言编写的库,包含了被广泛使用的JPEG解码、JPEG编码和其他的JPEG功能的实现
libpng 是一个用于处理 PNG 格式图像的C语言函数库,提供了 PNG 图像的读取和写入功能。
cd进入解压目录,使用./configure脚本自定义安装
[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
- mysqlnd
- 用ip地址的方式连接数据库,既可以是php和mysql装在同一个服务器,也可以装在不同的服务器。
- 用127.0.0.1本地连接不需要为连接授权,用192.168.10.101连接需要授权,哪怕连接本地数据库。
选项 | 说明 |
--prefix=/usr/local/php5 | 指定安装路径 |
--with-gd | 启用GD图形库的支持 |
--with-zlib | 启用Zlib库的支持 Zlib是一个用于数据压缩和解压的库,PHP使用它来处理压缩格式的数据。 |
--with-mysql=mysqlnd | 启用MySQL数据库的支持 |
--with-mysqli=mysqlnd | 启用mysqli的支持,并且使用mysqlnd驱动 |
--with-config-file-path=/usr/local/php5 | 指定了PHP配置文件(php.ini)的存放路径 |
--enable-mbstring | 启用多字节字符串支持。 mbstring扩展允许PHP处理多字节编码的字符串,例如UTF-8。 |
--enable-fpm | 启用了FastCGI Process Manager(FPM)支持。FPM是一个PHP FastCGI管理器 |
使用make && make install编译并安装php
拷贝配置文件
将php提供的模板配置文件拷贝到指定的安装目录下
[root@localhost php-5.5.38]# cp php.ini-development /usr/local/php5/php.ini
让bash能够读取php的命令
[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/
配置提高php解析效率的模块
拖入ZendGuardLoader压缩包
解压后进入解压目录,拷贝ZendGuardLoader.so文件到指定目录
[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/
在php配置文件中添加下列内容
[root@localhost zend-loader-php5.5-linux-x86_64]# vim /usr/local/php5/php.ini [PHP] zend_extension=/usr/local/php5/lib/php/ZendGuardLoader.so # 指定该模块位置 zend_loader.enable=1 # 启用该模块 保存并退出
配置 Nginx 支持 PHP 环境
在102主机操作
拷贝php提供的php-fpm功能配置文件,并创建用于运行php-fpm的程序用户
[root@localhost ~]# cd /usr/local/php5/etc/
[root@localhost etc]# ls
pear.conf php-fpm.conf.default
[root@localhost etc]# cp php-fpm.conf.default php-fpm.conf
[root@localhost etc]# useradd php # 创建程序用户
修改php-fpm的配置文件,将运行用户改为刚刚创建的php
[root@localhost etc]# vim php-fpm.conf
在末行模式下搜索:/user
修改150、151行的内容
user = php
group = php
再找到164行,修改监听IP为自己本机的IP地址,用于处理本机接受的动态解析请求
listen = 192.168.10.102:9000
再找到第230行、235行、240行、245行,将子进程的数量改为50
pm.max_children = 50 # 最大子进程数量
pm.start_servers = 20 # 启动时初始子进程数量
pm.min_spare_servers = 5 # 最小空闲子进程数量
pm.max_spare_servers = 35 # 最大空闲子进程数量
保存并退出,使用php-fpm命令启动服务,使用netstat命令也可以看到监听的IP也变为102
[root@localhost etc]# php-fpm
[root@localhost etc]# netstat -anpt | grep php
tcp 0 0 192.168.10.102:9000 0.0.0.0:* LISTEN 106322/php-fpm: mas
Nginx配置
转到101主机
恢复之前做的快照
这里直接使用前面文章开头的Nginx安装过的环境
现在实现让101主机的主机连接到102主机的php-fpm服务
在大概72行,取消location块的注释,修改为以下内容
[root@localhost ~]# vim /usr/local/nginx/conf/nginx.conf
在44、45行修改内容
location / {root /var/www/html;index index.html index.htm index.php;}location ~ \.php$ {root /var/www/html; # 指定网页存放位置fastcgi_pass 192.168.10.102:9000;# 指定cgi接口监听ip和端口号fastcgi_index index.php;
# 指定索引文件格式fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;include fastcgi.conf;
# 指定配置文件}
如果nginx是开启状态,需要先关闭,然后再开启nginx
[root@localhost conf]# nginx -s stop # 关闭nginx
[root@localhost conf]# nginx
来到102主机
使用mkdir -p命令递归创建存放网页文件的目录,创建test.php动态网页文件,调用phpinfo()函数显示php版本信息内容
如果解析的是静态文件,将文件放到101主机,如果解析的是动态文件,将文件放到102主机的/var/www/html
[root@localhost html]# cd /var/www/html
[root@localhost html]# vim test.php
<?php
phpinfo();
?>
记得关闭防火墙systemctl stop firewalld
此时访问192.168.10.101/test.php可以测试解析动态页面,显示php版本信息
再新建一个test02.php文件,测试数据库是否能够连接
[root@localhost html]# vim test02.php
<?php
$link=mysqli_connect('192.168.10.103','root','123456');
if($link) echo "<h1>数据库连接成功</h1>";
mysqli_close($link);
?>
使用NFS文件系统部署Discuz论坛
nfs:网络文件系统,作用是远程共享目录或文件给其他主机
转到103主机
安装支持nfs文件系统的软件包
[root@localhost ~]# yum -y install nfs-utils
[root@localhost ~]# yum -y install unzip
将Discuz开源论坛系统压缩包拖入XShell,使用unzip命令解压该压缩包
进入解压出的upload目录,移动upload目录内所有文件到共享给其他主机访问的目录
[root@localhost ~]# unzip Discuz_X3.3_SC_UTF8.zip
[root@localhost ~]# cd upload/
[root@localhost upload]# mv * /opt/share/
登录mysql,创建名为bbs的数据库,授予用户runbbs对bbs数据库的所有权限,并设置密码为aptech,然后刷新权限
创建程序用户,将共享目录内的文件权限属主和属组都分配给php用户
[root@localhost upload]# mysql -uroot -paptech
# 创建属于论坛的数据库,名为bbs
create database bbs;
grant all on bbs.* to runbbs@'%' identified by 'aptech';
flush privileges;[root@localhost share]# useradd php
[root@localhost share]# chown -R php:php *
创建共享目录,启动共享目录对应的服务
[root@localhost ~]# mkdir /opt/share
[root@localhost ~]# systemctl start nfs
[root@localhost ~]# systemctl start rpcbind
转到101主机
安装让系统支持nfs的软件包
使用mount命令挂载103主机的共享目录
[root@localhost ~]# yum -y install nfs-utils
[root@localhost ~]# mount 192.168.10.103:/opt/share /var/www/html/
当103主机的共享目录存放了文件,在挂载过共享目录后,cd进入指定挂载的目标目录(/var/www/html)下就可以看到共享目录中存放的文件
转到102主机
安装让系统支持nfs的软件包
使用mount命令挂载103主机的共享目录
[root@localhost html]# yum -y install nfs-utils
[root@localhost ~]# mount 192.168.10.103:/opt/share /var/www/html/
使用浏览器访问192.168.10.101/install 进入论坛安装页面,根据提示安装论坛系统
安装完成后,访问192.168.10.101,Web服务器会自动跳转到论坛首页,完成部署