34-基于LNMP部署动态服务业务

34-部署动态服务业务

什么是LNMP
LNMP是一整套技术的组合,L=Linux、N=Nginx、M=MySQL、P=PHP
LNMP架构是如何工作的
首先Nginx服务是不能处理动态请求,那么当用户发起动态请求时,Nginx又是如何处理的呢?
当用户发起http请求,请求会被Nginx处理,如果是静态资源请求Nginx则直接返回,如果是动态请求Nginx则通过fastcgi协议转交给后端的PHP程序处理,具体如下图所示

1

Nginx与fastcgi详细工作流程

2

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/
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

atomLg

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值