34-部署动态服务业务
什么是LNMP
LNMP是一整套技术的组合,L=Linux、N=Nginx、M=MySQL、P=PHP
LNMP架构是如何工作的
首先Nginx服务是不能处理动态请求,那么当用户发起动态请求时,Nginx又是如何处理的呢?
当用户发起http请求,请求会被Nginx处理,如果是静态资源请求Nginx则直接返回,如果是动态请求Nginx则通过fastcgi协议转交给后端的PHP程序处理,具体如下图所示
Nginx与fastcgi详细工作流程
1.用户通过http协议发起请求,请求会先抵达LNMP架构中的Nginx
2.Nginx会根据用户的请求进行判断,这个判断是有location进行完成
3.判断用户请求的是静态页面,Nginx直接进行处理
4.判断用户请求的是动态页面,Nginx会将该请求交给fastcgi协议下发
5.fastcgi会将请求交给php-fpm管理进程,php-fpm管理进程接收到后会调用具体工作的进程warrapper
6.warrapper进程会调用php程序进行解析,如果只是解析代码php直接返回
7.如果有查询数据库操作,则有php连接数据库(用户、密码、IP)发起查询的操作
8.最终数据由MySQL->php->php-fpm->fastcgi-nginx->http->user
LNMP 架构部署
1.Nginx安装部署
配置官方yum源
[root@web01 yum.repos.d]# vim /etc/yum.repos.d/nginx.repo
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
#暂时取消epel源安装。防止产生缓存从epel源安装
[root@web01 yum.repos.d]# vim /etc/yum.repos.d/epel.repo
[epel]
name=Extra Packages for Enterprise Linux 7 - $basearch
baseurl=http://mirrors.aliyun.com/epel/7/$basearch
failovermethod=priority
#enabled=1
enabled=0
gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
#安装Nginx
[root@web01 yum.repos.d]# yum install -y nginx
[root@web01 yum.repos.d]# rpm -qa |grep nginx
nginx-1.24.0-1.el7.ngx.x86_64
[root@web01 ~]# nginx -v
nginx version: nginx/1.24.0
[root@web01 yum.repos.d]# rpm -qc nginx #查看nginx服务的配置文件
/etc/logrotate.d/nginx
/etc/nginx/conf.d/default.conf
/etc/nginx/fastcgi_params
/etc/nginx/mime.types
/etc/nginx/nginx.conf
/etc/nginx/scgi_params
/etc/nginx/uwsgi_params
#配置Nginx
#启动Nginx
2.安装PHP服务
安装方式两种:
1.通过PHP仓库安装
#配置第三方源
[root@nginx ~]# vim /etc/yum.repos.d/php.repo
[php-webtatic]
name = PHP Repository
baseurl = http://us-east.repo.webtatic.com/yum/el7/x86_64/
gpgcheck = 0
[root@nginx ~]# yum -y install php71w php71w-cli php71w-common php71w-devel php71w-embedded php71w-gd php71w-mcrypt php71w-mbstring php71w-pdo php71w-xml php71w-fpm php71w-mysqlnd php71w-opcache php71w-pecl-memcached php71w-pecl-redis php71w-pecl-mongodb --nogpgcheck
1)配置PHP仓库
# rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
# rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
2)yum安装
yum -y install php71w php71w-cli php71w-common php71w-devel php71w-embedded php71w-gd php71w-mcrypt
php71w-mbstring php71w-pdo php71w-xml php71w-fpm php71w-mysqlnd php71w-opcache php71w-pecl-memcached
php71w-pecl-redis php71w-pecl-mongodb --nogpgcheck
2.通过本地rpm包安装方式安装
1)上传rpm包 php71.tar.gz
2)本地安装
[root@web01 php71]# yum -y localinstall *.rpm #本地安装自动解决rpm包依赖问题
[root@web01 php71]# rpm -qa |grep php |wc -l
19
3.启动php服务
[root@web01 php71]# systemctl start php-fpm
[root@web01 php71]# systemctl enable php-fpm
Created symlink from /etc/systemd/system/multi-user.target.wants/php-fpm.service to /usr/lib/systemd/system/php-fpm.service.
4.查看端口
[root@web01 php71]# netstat -tunlp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1317/sshd
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1474/master
tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN 12362/php-fpm: mast
3.安装数据库
1.安装Mariadb数据库 MySQL--->Mariadb
[root@web01 php71]# yum install -y mariadb-server
2.启动数据库
[root@web01 php71]# systemctl start mariadb
[root@web01 php71]# systemctl enable mariadb
Created symlink from /etc/systemd/system/multi-user.target.wants/mariadb.service to /usr/lib/systemd/system/mariadb.service.
3.检查端口3306
[root@web01 php71]# netstat -tunlp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1317/sshd
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1474/master
tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN 12362/php-fpm: mast
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 12715/mysqld
4.修改数据库密码
[root@web01 php71]# mysqladmin password 'lzy123.com'
5.登录测试
[root@web01 php71]# mysql -uroot -p'lzy123.com'
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 3
Server version: 5.5.68-MariaDB MariaDB Server
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]> quit #quit退出登录
Bye
4.打通Nginx与php的连通
[root@web01 conf.d]# cat php.conf
server {
listen 80;
server_name php.oldboy.com;
root /php;
location / {
index index.php index.html;
}
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
[root@web01 conf.d]# mkdir -p /php
[root@web01 conf.d]# vim /php/index.php
<?php
phpinfo();
?>
Windows hosts域名做解析
测试:页面访问:php.oldboy.com
5.打通MySQL和PHP的连通
[root@web01 conf.d]# vim /php/mysql.php
<?php
$servername = "localhost";
$username = "root";
$password = "lzy123.com";
// 创建连接
$conn = mysqli_connect($servername, $username, $password);
// 检测连接
if (!$conn) {
die("Connection failed: " . mysqli_connect_error());
}
echo "小哥哥,php可以连接MySQL...";
?>
<img style='width:100%;height:100%;' src=https://www.oldboy.com/php_mysql.png>
测试:浏览器访问php.oldboy.com/mysql.php
6.部署业务wordpress
1.配置Nginx文件
[root@web01 conf.d]# vim wordpress.conf
server {
listen 80;
server_name www.wp.com;
root /code/wordpress;
location / {
index index.php index.html;
}
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
nginx -t
systemctl restart nginx
2.创建代码目录
[root@web01 conf.d]# mkdir -p /code/wordpress
3.下载wordpress代码到代码目录
wget https://cn.wordpress.org/wordpress-5.8.8-zh_CN.tar.gz
4.解压代码
tar -zxf wordpress-5.8.8-zh_CN.tar.gz
mv wordpress/* .
5.登录MySQL创建wordpress数据库
[root@web01 conf.d]# mysql -uroot -plzy123.com
#MariaDB [(none)]> create database wordpress;
Query OK, 1 row affected (0.00 sec)
#MariaDB [(none)]> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| test |
| wordpress |
+--------------------+
6.修改代码目录的权限
chown -R apache.apache /code/wordpress
7.访问wordpress页面
Windows域名解析
7.统一服务的启动用户
groupadd -g666 www
useradd -u666 -g666 -s /sbin/nologin -M www
1.修改Nginx的启动用户为www
vim /etc/nginx/nginx.conf
[root@web01 conf.d]# head -2 /etc/nginx/nginx.conf
user www;
修改后重启Nginx服务
systemctl restart nginx
2.修改PHP的启动用户为www
[root@web01 conf.d]# vim /etc/php-fpm.d/www.conf
[root@web01 conf.d]# egrep '^user|^group' /etc/php-fpm.d/www.conf
user = www
group = www
3.重启php-fpm
[root@web01 php-fpm.d]# systemctl restart php-fpm
4.检查服务是否启动
[root@web01 php-fpm.d]# ps -aux |grep nginx
root 14111 0.0 0.0 59452 1128 ? Ss 23:13 0:00 nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf
www 14112 0.0 0.1 59896 2500 ? S 23:13 0:00 nginx: worker process
root 14123 0.0 0.0 112808 968 pts/1 R+ 23:15 0:00 grep --color=auto nginx
[root@web01 php-fpm.d]# ps -aux |grep php
root 13569 0.0 0.3 150660 6380 pts/0 S+ 22:32 0:00 vim /php/mysql.php
root 14094 0.0 1.6 490156 32636 ? Ss 23:13 0:00 php-fpm: master process (/etc/php-fpm.conf)
www 14095 0.0 0.3 490156 7592 ? S 23:13 0:00 php-fpm: pool www
5.修改代码目录的权限统一改成www
[root@web01 php-fpm.d]# chown -R www.www /code/wordpress/
[root@web01 php-fpm.d]# ll -d /code/wordpress/
drwxr-xr-x 5 www www 4096 Apr 17 22:50 /code/wordpress/
测试:
登录wordpress后台:http://www.wp.com/wp-login.php
练习:部署phpshe商城项目
1.配置Nginx文件
[root@web01 conf.d]# cat phpshe.conf
server {
listen 80;
server_name www.she.com;
root /code/phpshe;
location / {
index index.php index.html;
}
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
[root@web01 conf.d]# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
[root@web01 conf.d]# systemctl restart nginx
2.创建代码目录
[root@web01 conf.d]# mkdir -p /code/phpshe/
解压代码到/code/phpshe/目录下
3.授权统一用户www
chown -R www.www /code/phpshe/
4.创建数据库
[root@web01 conf.d]#mysql -uroot -plzy123.com -e "create database phpshe"
[root@web01 conf.d]#mysql -uroot -plzy123.com -e "show databases;"
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| phpshe |
| test |
| wordpress |
+--------------------+
5.登录系统进行商城安装
6.查看报错日志,授权session。防止出现登陆页面报错
[root@web01 ~]#ll -d /var/lib/php/session
drwxrwx--- 2 root apache 6 Oct 26 2019 /var/lib/php/session
You have mail in /var/spool/mail/root
[root@web01 ~]#chown www.www /var/lib/php/session
[root@web01 ~]#ll -d /var/lib/php/session
drwxrwx--- 2 www www 6 Oct 26 2019 /var/lib/php/session
7.windows域名映射访问测试
测试登陆:http:www.she.com/