一、LNMP架构解读
1.1 LNMP平台就是Linux、Nginx、MySQL、PHP的组合架构,需要Linux服务器、MySQL数据库、PHP解析环境
1.2 本案例在单台服务器上部署LNMP环境
1.3 案例架构图示
在这里插入图片描述
nginx的特长是处理静态请求效率非常强,擅长处理静态资源
apache更适合做动态处理
LNMP中,动态进程交给php中的fpm去处理
所以php需要额外安装fpm
二、实验步骤及详解
####Nginx网站服务####
1 Nginx服务基础
在各种网站服务器软件中
, 除了Apache HTTP Server 外
, 还有一款轻量级的 HTTP
服务器软件——Nginx
, 由俄罗斯的 lgor Sysoev 开发
, 其稳定、高效的特性逐渐被越来越
多的用户认可。本章将讲解nginx服务的基本构建、访问控制方式、虚拟主机的搭建
,还有应
用广泛的 LNMP 架构服务器的部署方式
,并对PHP_FPM模块如何支持PHP语言进行讨论。
Nginx
(发音为
[engine x
])专为性能优化而开发
,其最知名的优点是它的稳定性和低系
统资源消耗以及对 HTTP 并发连接的高处理能力
(单台物理服务器可支持
30 000~ 50 000个并
发请求
) 。正因为如此
,大量提供社交网络、新闻资讯、电子商务及虚拟主机等服务的
企业纷纷选择Nginx来提供Web服务。
###试验环境
: CentOS
7.6 Nginx
1.15###
1、编译安装Nginx
1.15 安装及运行控制
##试验环境
: CentOS
7.6 Nginx
1.15 关闭防火墙、核心防护###
##
1.1软件支持##
Nginx的配置及运行需要pcre
, zlib等软件包的支持
,因此应预先安装这些软件的开发包
(devel
) ,以便提供相应的库和头文件
,确保 Nginx 的安装顺利完成
[root@localhost
~# yum
-y install \
gcc \
gcc
-c
++ \
make \
pcre
-devel \
expat
-devel \
perl \
zlib
-devel
##
1.2创建运行用户、组##
Nginx服务程序默认以nobody身份运行
,建议为其创建专门的用户账号
,以便更准确地控制
其访问权限
,增加灵活性、降低安全风险。例如
,创建一个名为nginx的用户
,不建立宿主文件夹
,
也禁止登录到Shell环境。
[root@localhost
~]# useradd
-M
-s
/sbin
/nologin nginx
##
1.3编译安装Nginx##
配置Nginx的编译选项时
,将安装目录设为
/usr
/local
/nginx
,运行用户和组均设为nginx
;
启用http_stub_status_module模块以支持状态统计
,便于查看服务器的连接信息。
具体选项根据实际需要来定
, 配置前可参考
"./configure--help" 给出的说明
.
上传nginx
-1.15.9.tar
.gz至
/opt目录
[root@localhost
~]#cd
/opt
[root@localhost opt
]# tar xzvf nginx
-1.15.9.tar
.gz
[root@localhost opt
]# cd nginx
-1.15.9
[root@localhost nginx
-1.15.9]#
./configure \
--prefix
=/usr
/local
/nginx \
--user
=nginx \
--group
=nginx \
--with
-http_stub_status_module
[root@localhost nginx
-1.15.9]# make
&& make instal
##
1.3路径优化##
为了使 Nginx 服务器的运行更加方便
, 可以为主程序 nginx 创建链接文件
, 以便管理员
直接执行
"nginx" 命令就可以调用Nginx的主程序
[root@localhost nginx
-1.15.9]# ln
-s
/usr
/local
/nginx
/sbin
/nginx
/usr
/local
/sbin
/
[root@localhost nginx
-1.15.9]# ls
-l
/usr
/local
/sbin
/nginx
Irwxrwxrwx
1 root root
27 2月
28 05:17 /usr
/local
/sbin
/nginx
->
/usr
/local
/nginx
/sbin
/nginx
2、 Nginx的运行控制
##
2.1检查配置文件##
与Apache 的主程序 httpd 类似
, Nginx 的主程序也提供了
"-t" 选项用来对配置文件进行
检查
,以便找出不当或错误的配置。配置文件nginx
.conf默认位于安装目录下的conf
/子目录中。
若要检查位于其他位置的配置文件
,可使用
"-c"选项来指定路径。
[root@localhost nginx
-1.15.9]# 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
##
2.2启动、停止Nginx##
直接运行Nginx即可启动Nginx服务器
,这种方式将使用默认的配置文件
,若要改用
其他配置文件
,需添加
"-c配置文件路径"选项来指定路径。需要注意的是
,若服务器中已装
有 httpd 等其他 Web 服务软件
,应采取措施
(修改端口、停用或卸载
) 避免冲突。
##############最小安装需要 yum
-y install net
-tools
[root@localhost nginx
-1.15.9]# nginx
[root@localhost nginx
-1.15.9]# netstat
-anpt
| grep nginx
tcp
0 0.0.0.0.0:80 0.0.0.0:* LISTEN
11191/nginx
: master
最小安装需要
通过检查Nginx程序的监听状态
,或者在浏览器中访问此Web服务
(默认页面将显示
"Welcom to nginx!" ) ,可以确认 Nginx 服务是否正常运行。
[root@localhost nginx
-1.15.9]# yum
-y install lynx
[root@localhost nginx
-1.15.9]# lynx
127.0 Welcome to nginx
!
Welcome to nginx
!
If you see
this page
, the nginx web server is successfully installed
and working
.
Further
configuration is required
.
For online documentation
and support please refer to nginx
.org
.
Commercial support is available at nginx
.com
.
Thank you
for using nginx
.
主程序Nginx支持标准的进程信号
,通过kill或killall命令发送HUP信号表示重载配置
,
QUIT信号表示退出进程
, KILL信号表示杀死进程。例如
,若使用killall 命令
,重载配置、
停止服务的操作分别如下所示
(通过
"-s"选项指定信号种类
)
[root@localhost
~]# yum
-y install psmisc ###最小没有killall令需要安装
[root@localhost
~]# killall
-s HUP nginx ###选项
-s HUP等同于
-1 重新加载
[root@localhost
~]# killall
-s QUIT nginx ###选项
-s QUIT等同于
-3 停止服务
[root@localhost
~]# netstat
-anpt
| grep nginx ###过滤看下
当Nginx进程运行时
, PID 号默认存放在logs
/目录下的nginx
.pid文件中
,因此若改用
kill 命令
,也可以根据nginx
.pid文件中的PID号来进行控制。
##
2.3添加 Nginx系统服务##
为了使Nginx服务的启动、停止、重载等操作更加方便
,可以编写基于CentOs
7.6的
Nginx服务控制文件使用systemctl工具来进行管理
.CentOS7
.6系统的管理习惯
[root@localhost
~]# vi
/lib
/systemd
/system
/nginx
.service
###要刷配置参数#
[Unit
]
Description
=nginx
After
=network
.target
[Service
]
Type
=forking
PIDFile
=/usr
/local
/nginx
/logs
/nginx
.pid
ExecStart
=/usr
/local
/nginx
/sbin
/nginx
ExecReload
=/usr
/bin
/kill
-s HUP $MAINPID
ExecStop
=/usr
/bin
/kill
-s QUIT $MAINPID
PrivateTmp
=true
[Install
]
WantedBy
=multi
-user
.target
##配置参数解释##
[Unit
]
Description
=nginx ###描述
After
=network
.target ####描述服务类别,网络服务模式
[Service
]
Type
=forking ###后台运行形式
PIDFile
=/usr
/local
/nginx
/logs
/nginx
.pid ###PID文件位置 ,记录进程号
ExecStart
=/usr
/local
/nginx
/sbin
/nginx ###启动服务脚本
ExecReload
=/usr
/bin
/kill
-s HUP $MAINPID ###根据PID(nginx进程号)重载配置
ExecStop
=/usr
/bin
/kill
-s QUIT $MAINPID ###根据PID(nginx进程号)终止进程
PrivateTmp
=true
[Install
]
WantedBy
=multi
-user
.target
[root@localhost
~]# chmod
754 /lib
/systemd
/system
/nginx
.service
[root@localhost
~]# systemctl enable nginx
.service
Created symlink from
/etc
/systemd
/system
/multi
-user
.target
.wants
/nginx
.service
to
/usr
/lib
/systemd
/system
/nginx
.service
.
##
2.4检查通过systemctl命令能否正常启动、停止、重启、重载Nginx服务##
[root@localhost
~]# netstat
-anutp
| grep nginx
[root@localhost
~# systemctl start nginx
[root@localhost
~]# netstat
-anutp
| grep nginx
tcp
0 0 0.0.0.0:80 0.0.0.0:1 LISTEN
11410/nginx
: maste
[root@localhost
-]#
由各种配置语句组成
,不使用特定的界定标记。全局配置部分包括Nginx服务的运行
用户、工作进程数、错误日志、PID存放位置等基本设置
3、配置文件Nginx
.conf
在Nginx服务器的主配置文件
/usr
/local
/nginx
/conf
/nginx
.conf中
,包括全局配置、l
/O
事件配置和 HTTP 配置这三大块内容
,配置语句的格式为“关键字值
;"
(末尾以分号表示结
束
) ,以“#"开始的部分表示注释
.
##
3.1全局配置##
由各种配置语句组成
,不使用特定的界定标记。全局配置部分包括Nginx服务的运行
用户、工作进程数、错误日志、PID存放位置等基本设置
[root@localhost
~]# vi
/usr
/local
/nginx
/conf
/nginx
.conf
#user nobody; ##运行用户
worker_processes
1; ##工作进程数
#error_log logs/error.log: ###错误日志文件的位置
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid; ####PID文件的位置
上述配置中
, worker processes表示工作进程的数量。若服务器有多块CPU或者使用
多核处理器
,可以参考CPU核心总数来指定工作进程数
,如设为
8;如果网站访问量需求并不大
,一般设为
1就够用了。其他三项配置均已有注释
,表示采用默认设置
,例如
, Nginx的运行用户
实际是编译时指定的nginx
, 若编译时未指定则默认为 nobody
##
3.2 l
/O时间配置##
使用
"events ()"界定标记
,用来指定Nginx进程的
1/0响应模型、每个进程的连接数等设置。
对于
2.6及以上版本的内核
,建议使用 epoll 模型以提高性能
; 每个进程的连接数应根据实际需
要来定
, 一般在
10000 以下
(默认为
1024)
events
{
use epoll
;
worker_connections
4096;
}
若工作进程数为
8,每个进程处理
4096个连接
,则允许Nginx正常提供服务的连接数已超过
3 万个
(4096x8
-32 768) , 当然具体还要看服务器硬件、网络带宽等物理条件的性能表现。
##
3.3 HTTP配置##
使用
"http {}"界定标记
,包括访问日志、HTTP端口、网页目录、默认字符集、连接保
持
,以及后面要讲到的虚拟Web主机、PHP解析等一系列设置
,其中大部分配置语句都包含在
子界定标记
"server {}"内
#user nobody;
worker_processes
1;
#error_log logs/error.log:
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
events
{
use epoll
;
Worker_connections
4096;
}
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" "Shttp_x_forwarded_for"'; ###·去掉前面注释
access_log logs
/access
.log main
; ###·访问日志位置
,去掉前面注释
sendfile on
; ###支持文件发送
(下载
)
#tcp_nopush on;
#keepalive timeout 0;keepalive timeout 65; ##链接保持时间
#gzip on;
server
{ ###WEB服务的监听配置
isten
80; ###WEB服务的监听端口
server_name www
.51xit
.top
; ###网站名称
(FQDN
)
charset koi8
-r
; ###·网页的默认字符集
#access log logs/host.access.log main;
location
/{ ###根目录配置
root html
; ###网站根目录的位置
index index
.html index
.htm
; ###默认首页
(索引页
)
}
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$ {
# proxy_pass http://127.0.0.1;
#
}
#pass the PHP scripts to FastCGl 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
#
#servert {
# 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;
#
}
#
}
}
上述配置中
, listen语句允许同时限定 IP 地址
, 采用
"IP 地址:端口" 形式
; root语句用
来设置特定访问位置
( 如
"location /" 表示根目录
) 的网页文档路径
, 默认为Nginx 安装
目录下的html
/子目录
, 根据需要可改为
/var
/www
/html 等其他路径。
3、访问状态统计
Nginx内置了HTTP STUB STATUS状态统计模块
,用来反馈当前的Web访问情况
,
配置编译参数时可添加
--with
-http_stub_status_module来启用此模块支持
,可以使用命令
/usr
/local
/nginx
/sbin
/nginx
-V 查看已安装的 Nginx 是否包含 HTTP_STUB_STATUS模块。
要使用 Nginx 的状态统计功能
, 除了启用内建模块以外
, 还需要修改nginx
.conf配置
文件
, 指定访问位置并添加 stub_status 配置代码。
[root@localhost
~]# vi
/usr
/local
/nginx
/conf
/nginx
.conf
####省略#### 在localtion
/ 这个大模块下面 插入(添加)location
/status 模块
location
/{
root html
;
index index
.html index
.htm
;
}
location
/status
{
stub_status on
;
access_log off
;
}
####省略####
[root@localhost nginx
]# 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 nginx
]# systemctl restart nginx
##########################验证###########################################################
去电脑主页登录
http
://20.0.0.26/status
##或者
[root@localhost nginx
]# lynx
127.0.0.1/status
Active connections
:1 ###活动连接数
server accepts handled requests ###已经处理的链接信息
1 1 1
###上个数字从左到右依次表示
:已处理的连接数、成功的TCP握手次数、已处理的请求数
Reading
: 0 Writing
: 1 Waiting
: 0
########################################################################################
【Nginx访问控制】
###基于授权的访问控制###
1.1基于授权的访问控制简介
Nginx与Apahce一样
,可以实现基于用户授权的访问控制
,当客户端想要访问相应网
站或者目录时
,要求用户输入用户名和密码才能正常访问
,配置步骤与Apache基本一致。
之前我们讲过
, Apache 网页认证实现步骤概括为
:
################基于授权的访问控制##############################
[root@localhost
~]# yum
-y install httpd
-tools
[root@localhost
~]# htpasswd
-c
/usr
/local
/nginx
/.passwd
.db zzz
New password
:
Re
-type
new password
:
Adding password
for user zzz
[root@localhost
~]# chmod
400 /usr
/local
/nginx
/.passwd
.db #加个点表示隐藏文件
[root@localhost
~]# cd
/usr
/local
/nginx
/
[root@localhost nginx
]# ll
-a
总用量
8
drwxr
-xr
-x
. 11 root root
169 9月
3 12:20 .
drwxr
-xr
-x
. 13 root root
144 9月
2 19:24 ..
drwx
------. 2 nginx root
6 9月
2 19:24 client_body_temp
drwxr
-xr
-x
. 2 root root
4096 9月
3 12:13 conf
drwx
------. 2 nginx root
6 9月
2 19:24 fastcgi_temp
drwxr
-xr
-x
. 2 root root
40 9月
2 19:24 html
drwxr
-xr
-x
. 2 root root
58 9月
3 12:13 logs
-r
--------. 1 root root
42 9月
3 12:20 .passwd
.db
drwx
------. 2 nginx root
6 9月
2 19:24 proxy_temp
drwxr
-xr
-x
. 2 root root
19 9月
2 19:24 sbin
drwx
------. 2 nginx root
6 9月
2 19:24 scgi_temp
drwx
------. 2 nginx root
6 9月
2 19:24 uwsgi_temp
[root@localhost nginx
]# chown nginx
.passwd
.db
[root@localhost
~]# vi
/usr
/local
/nginx
/conf
/nginx
.conf
location
/ {
root html
;
index index
.html index
.htm
;
auth_basic
"secret";
auth_basic_user_file
/usr
/local
/nginx
/.passwd
.db
;
}
[root@localhost nginx
]# systemctl restart nginx
####################添加的内容为############
auth_basic
"secret"; #表示密码验证的方式
auth_basic_user_file
/usr
/local
/nginx
/.passwd
.db
; #认证的账号密码在什么地方
打开电脑浏览器 http
://20.0.0.26/
输入账号:zzz
输入密码:Abc123
登录验证
#########################基于客户端的访问控制###########
##配置规则
##规则从上往下执行,如匹配则停止,不再往下匹配
deny IP
/IP段
:拒绝某个IP或IP段的客户端访问
allow IP
/IP段
:允许某个IP或IP段的客户端访问
####比如:除主机
20.0.0.1之外允许其他客户端访问 可进行如下操作:
[root@localhost
~]# vi
/usr
/local
/nginx
/conf
/nginx
.conf
location
/ {
root html
;
index index
.html index
.htm
;
auth_basic
"secret";
auth_basic_user_file
/usr
/local
/nginx
/.passwd
.db
;
deny
20.0.0.1;
allow all
;
}
#######################添加的内容如下###########
deny
20.0.0.1;
allow all
;
[root@localhost nginx
]# systemctl restart nginx
###打开电脑浏览器访问 http
://20.0.0.26/ ####发现访问不了了
【Nginx虚拟主机】
利用虚拟主机,不用为每个要运行的网站提供一台单独的Nginx服务器或单独运行一
组Nginx进程,虚拟主机提供了在同一台服务器,同一组 Nginx进程上运行多个网站的功
能。跟Apache一样,Nginx也可以配置多种类型的虚拟主机,分别是基于IP的虚拟主机、
基于域名的虚拟主机、基于端口的虚拟主机。
使用Nginx搭建虚拟主机服务器时,每个虚拟Web站点拥有独立的“serverf”配置段,
各自监听的IP地址、端口号可以单独指定,当然网站名称也是不同的。
###基于域名的虚拟主机###
1、修改windos客户机的C
:\Windows\System32
]drivers\etc\hosts文件,加入
www
.51xit
.top和www
.52xit
.top这两个域名,它们都指向同一个服务器IPР地址,用于实现
不同的域名访问不同的虚拟主机。
20.0.0.26 www
.51xit
.top www
.52xit
.top
2、准备各个网站的目录和测试首页
[root@localhost
~]# mkdir
-p
/var
/www
/html
/51xit
/ ####创建www
.bt
.com的根目录
[root@localhost
~]# mkdir
-p
/var
/www
/html
/52xit
/ ####创建www
.test
.com的根目录
[root@localhost
~]# echo
"www.51xit.top" >> /var
/www
/html
/51xit
/index
.html
[root@localhost
~]# echo
"www.52xit.top" >> /var
/www
/html
/52xit
/index
.html
[root@localhost
~]# cd
/var
/www
/html
/
[root@localhost html
]# ll
总用量
0
drwxr
-xr
-x
. 2 root root
24 9月
3 16:07 51xit
drwxr
-xr
-x
. 2 root root
24 9月
3 16:07 52xit
[root@localhost html
]# cat
51xit
/index
.html
www
.51xit
.top
[root@localhost html
]# cat
52xit
/index
.html
www
.52xit
.top
3、修改配置文件,把配置文件中的server
{代码段全部去掉,加入
2个新的server
{}
段,对应
2个域名
[root@localhost
~]# vi
/usr
/local
/nginx
/conf
/nginx
.conf
###################首先将原来的server内容全部加#注释掉#############
# server {
# listen 80;
# server_name localhost;
#
# #access_log logs
/host
.access
.log main
;
#
# location / {
# root html;
# #auth_basic_user_file
/usr
/local
/nginx
/.passwd
.db
;
# #deny
20.0.0.1;
# #allow all
;
#
}
# location /status {
# stub_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$ {
# 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
80;
server_name www
.51xit
.top
;
charset utf
-8;
access_log logs
/www
.51xit
.top
.access
.log
;
location
/ {
root
/var
/www
/html
/51xit
;
index index
.html index
.htm
;
}
error_page
500 502 503 504/50x
.html
;
location
= 50x
.html
{
root html
;
}
}
server
{
listen
80;
server_name www
.52xit
.top
;
charset utf
-8;
access_log logs
/www
.52xit
.top
.access
.log
;
location
/ {
root
/var
/www
/html
/52xit
;
index index
.html index
.htm
;
}
error_page
500 502 503 504/50x
.html
;
location
= 50x
.html
{
root html
;
}
}
# another virtual host using mix of IP-, name-, and port-based configuration 在这行上面
###验证
分别用电脑浏览器访问: www
.51xit
.top 和 www
.52xit
.top
你也可以再开一台LINUX系统 做一下
/etc
/hosts 映射
然后访问www
.51xit
.top 和 www
.52xit
.top
####################基于IP的虚拟Web主机##########
主机配置两个IP地址
20.0.0.26 192.168.100.26
[root@localhost
~]# nmcli connection
NAME UUID TYPE DEVICE
ens33
35d9d64f
-7719-42e9-b846
-a1aeb356fa34 ethernet ens33
有线连接
1 ee2dccf4
-cc4a
-34bc
-9cea
-37e7d528cd27 ethernet ens36
[root@localhost
~]# cd
/etc
/sysconfig
/network
-scripts
/
[root@localhost network
-scripts
]# cp ifcfg
-ens33 ifcfg
-ens36
[root@localhost network
-scripts
]# vi ifcfg
-ens36
NAME
=ens36
UUID
=ee2dccf4
-cc4a
-34bc
-9cea
-37e7d528cd27
DEVICE
=ens36
ONBOOT
=yes
IPADDR
=192.168.100.26
NETMASK
=255.255.255.0
GATEWAY
=192.168.100.1
[root@localhost
~]# systemctl restart network
[root@localhost
~]# ifdown ens36
[root@localhost
~]# ifup ens36
#######打开电脑cmd ping一下 ping通继续
###修改配置文件
[root@localhost
~]# vim
/usr
/local
/nginx
/conf
/nginx
.conf
server
{
listen
20.0.0.26;
server_name
20.0.0.26:80;
......... ###省略部分
}
server
{
listen
192.168.100.26;
server_name
192.168.100.26:80;
............ ###省略部分
}
####验证,用电脑浏览器访问
20.0.0.26 出现
51xit
.top
192.168.100.26 出现
52xit
.top
####################基于端口的虚拟Web主机##########
只需要一个IP地址就够了
[root@localhost
~]# vim
/usr
/local
/nginx
/conf
/nginx
.conf
server
{
listen
20.0.0.26;
server_name
20.0.0.26:6666;
......... ###省略部分
}
server
{
listen
20.0.0.26;
server_name
20.0.0.26:8888;
......... ###省略部分
}
####验证,用电脑浏览器访问
20.0.0.26:
6666
20.0.0.26:
8888
【安装MySQL服务】
1、安装Mysq环境依赖包
[root@localhost
~]#yum
-y install \
ncurses \
ncurses
-devel \
bison \ ####解析器
gcc \
gcc
-c
++ \
cmake
2、创建运行用户
[root@localhost
~] useradd
-s
/sbin
/nologin mysql
3、编译安装
###上传mysql
-boost
-5.7.20.tar
.gz到opt目录下###
[root@localhost
~]cd
/opt
[root@localhost opt
]# tar xzvf mysql
-boost
-5.7.20.tar
.gz
[root@localhost opt
]#cd
/opt
/mysql
-5.7.20/
[root@localhost mysql
-5.7.20]#
cmake \
-DCMAKE_INSTALL_PREFIX
=/usr
/local
/mysql \
-DMYSQL_UNIX_ADDR
=/usr
/local
/mysql
/mysql
.sock \
-DSYSCONFDIR
=/etc \
-DSYSTEMD_PID_DIR
=/usr
/local
/mysql \
-DDEFAULT_CHARSET
=utf8 \
-DDEFAULT_COLLATION
=utf8_general_ci \
-DWITH_INNOBASE_STORAGE_ENGINE
=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE
=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE
=1 \
-DWITH_PERFSCHEMA_STORAGE_ENGINE
=1 \
-DMYSQL_DATADIR
=/usr
/local
/mysql
/data \
-DWITH_BOOST
=boost \ ####c
++库
-DWITH_SYSTEMD
=1 ####自己的id号
[root@localhost mysql
-5.7.20]#make
&& make install
######编译安装####
make
&& make install
#####数据库目录进行权限调整###
chown
-R mysql
:mysql
/usr
/local
/mysql
/
#####建立调整配置文件########
vi
/etc
/my
.cnf
[client
] 客户端
port
= 3306
default-character
-set
=utf8
socket
= /usr
/local
/mysql
/mysql
.sock
[mysql
] 应用程序
port
= 3306
default-character
-set
=utf8
socket
= /usr
/local
/mysql
/mysql
.sock
[mysqld
] 服务端
user
= mysql 程序用户
basedir
= /usr
/local
/mysql 工作目录
datadir
= /usr
/local
/mysql
/data 数据目录
port
= 3306 端口号
character_set_server
=utf8
pid
-file
= /usr
/local
/mysql
/mysqld
.pid
socket
= /usr
/local
/mysql
/mysql
.sock 通讯文件
server
-id
= 1 群集唯一编号
sql_mode
=NO_ENGINE_SUBSTITUTION
,STRICT_TRANS_TABLES
,NO_AUTO_CREATE_USER
,
NO_AUTO_VALUE_ON_ZERO
,NO_ZERO_IN_DATE
,NO_ZERO_DATE
,ERROR_FOR_DIVISION_BY_ZERO
,
PIPES_AS_CONCAT
,ANSI_QUOTES
模式,固定语法
chown mysql
:mysql
/etc
/my
.cnf
#######设置环境变量####
echo
'PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH' >> /etc
/profile
echo
'export PATH' >> /etc
/profile
source
/etc
/profile
cd
/usr
/local
/mysql
/
bin
/mysqld \
--initialize
-insecure \
--user
=mysql \
--basedir
=/usr
/local
/mysql \
--datadir
=/usr
/local
/mysql
/data
cp usr
/lib
/systemd
/system
/mysqld
.service
/usr
/lib
/systemd
/system
/
systemctl enable mysqld
systemctl start mysqld
systemctl status mysqld
netstat
-anpt
| grep
3306
mysqladmin
-u root
-p password
"abc123" ##刚开始没密码是空的直接回车,然后输入密码abc123
,
在此确认abc123
,这是在root账户下运行的
mysql
-u root
-p ##这个命令敲下,提示要输入密码
,这个就是刚才设置的密码abc123
【安装配置PHP解析环境】
1、安装环境依赖包
yum
-y install \
libjpeg \
libjpeg
-devel \
libpng libpng
-devel \
freetype freetype
-devel \ 字体样式
libxml2 \
libxml2
-devel \
zlib zlib
-devel \
curl curl
-devel \ 定位远程资源,定义web资源
openssl openssl
-devel 安全套接字程,对网络传输数据进行加密
2、编译安装
cd
/opt
yum
-y install bzip2
tar xjvf php
-7.1.10.tar
.bz2
cd php
-7.1.10
./configure \
--prefix
=/usr
/local
/php \
--with
-mysql
-sock
=/usr
/local
/mysq
--with
-mysqli
--with
-zlib \
---with
-curl\
--with
-gd \
--with
-jpeg
-dir\
--with
-png
-dir \
--with
-freetype
-dir \
--with
-openssl \
--enable
-fpm \
--enable
-mbstring \
--enable
-xml \
--enable
-session \
--enable
-ftp \
--enable
-pdo \
--enable
-tokenizer \
--enable
-zip
make
&& make install
cp php
.ini
-development
/usr
/local
/php
/lib
/php
.ini
vi
/usr
/local
/php
/lib
/php
.ini
mysqli
.default socket
=/usr
/local
/mysql
/mysql
.sock
date
.timezone
= Asia
/Shanghai
/usr
/local
/php
/bin
/php
-m
------------------------配置及优化FPM模块
-------------------------
cd
/usr
/local
/php
/etc
/
cp php
-fpm
.conf
.default php
-fpm
.conf
cd
/usr
/local
/php
/etc
/php
-fpm
.d
/
cp www
.conf
.default www
.conf
cd
/usr
/local
/php
/etc
/
vi php
-fpm
.conf
pid
= run
/php
-fpm
.pid
:user
= nginx
:group
= nginx
/usr
/local
/php
/sbin
/php
-fpm
-c
/usr
/local
/php
/etc
/php
.ini
netstat
-anpt
| grep
9000
In
-s
/usr
/local
/php
/bin
/ * /usr
/local
/bin
/
ps aux
| grep
-c
"php-fpm" #结果
下是让nginx支持PHP功能
vi
/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
/usr
/local
/nginx
/html$fastcgi_script_name
; ###注意目录名称
include fastcgi _params
;
}
vi
/usr
/local
/nginx
/html
/index
.php
<?php
phpinfo();
?>
systemctl restart nginx
在网页测试
"http://192.168.100.41/index.php"
------------下面测试数据库工作是否正常
-------------------
mysql
-u root
-p #########输入abc123密码
CREATE DATABASE bbs
;
GRANT all ON bbs
.* TO
'bbsadm'@
'%' IDENTIFIED BY 'admin123"
;
GRANT all ON bbs
.* TO
'bbsadm'@
'localhost' IDENTIFIED BY 'admin123
;
flush privileges
;
vi
/usr
/local
/nginx
/html
/index
.php ###原来的测试页内容更改如下
<?phpl
$link
=mysqli_connect('192.168.100.41','bsadm','admin123"
);
if($link
) echo "
<h1
>Success
!!</h1
>;
else echo
"Fail!!!";
?>
systemctl restart nginx
在网页测试
"http://192.168.80.193/index.php"
####LNMP应用部署####
【部署Discuz
!社区论坛Web应用
)
########以下安装论坛#########
cd
/opt
yum
-y install unzip
unzip Discuz X3
.4 SC UTF8
.zip
-d
/tmp
cd
/tmp
/dir_SC_UTF8
/
cp
-r upload
/ /usr
/local
/nginx
/html
/bbs
/
cd
/usr
/local
/nginx
/html
/bbs
/
chown
-R root
:nginx
./config
/
chown
-R root
:nginx
./data
/
chown
-R root
:nginx
./uc_client
/
chown
-R root
:nginx
./uc_server
/
chmod
-R
777./config
/
chmod
-R
777./data
/
chmod
-R
777./uc_client
/
chmod
-R
777./uc_server
/
http
://IP
/bbs
/install
/index
.php
##
数据库服务器
: localhost ###本地架设就用localhost
, 如何不是在在本机上就要填写IP地址和端口号
数据库名字
: bbs
数据库用户名
: bbsadm
数据库密码
: admin123
管理员账号
:admin
管理员密码
:admin123
##
http
://P
/bbs
/admin
.php
账户
: admin
密码
: admin123
http
://192.168.32.21/bbs
/index
.php