Web进阶LNMP网站部署

LNMP架构工作流程

什么是LNMP

LNMP是一套技术的组合,L=Linux、N=Nginx、M=MySQL、P=PHP

工作流程

首先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 管理进程接收到后会调用具体的工作进程 warrap

6.warrap 进程会调用 php 程序进行解析,如果只是解析代码 php 直接返回

7.如果有查询数据库操作,则由 php 连接数据库(用户 密码 IP)发起查询的操作

8.最终数据由mysql->php->php-fpm->fastcgi->nginx->http->user

部署LNMP架构

1.安装nginx

[root@web01 ~]$ yum install -y nginx

2.安装php

# 1.更改yum源,系统自带epel源php版本过低
[root@web01 ~]$ wget http://us-east.repo.webtatic.com/yum/el7/webtatic-release.rpm
[root@web01 ~]$ yum localinstall webtatic-release.rpm -y
[root@web01 ~]$ ll /etc/yum.repos.d/
total 28
-rw-r--r--. 1 root root 1759 Jul 5 19:29 CentOS-Base.repo
-rw-r--r--. 1 root root 664 Jul 5 19:24 epel.repo
#下面两个源是依赖
-rw-r--r-- 1 root root 1050 Nov 1 2020 epel.repo.rpmnew
-rw-r--r-- 1 root root 1149 Nov 1 2020 epel-testing.repo
#下面三个源是php的源
-rw-r--r-- 1 root root 963 Oct 9 2014 webtatic-archive.repo
-rw-r--r-- 1 root root 865 Oct 9 2014 webtatic.repo
-rw-r--r-- 1 root root 963 Oct 9 2014 webtatic-testing.repo # 2.生成缓存
[root@web01 ~]$ yum makecache # 3.安装php
[root@web01 ~]$ yum -y install php71w php71w-cli php71w-common php71w-devel php71wembedded php71w-gd php71w-mcrypt php71w-mbstring php71w-pdo php71w-xml php71w-fpm php71w-mysqlnd php71w-opcache php71w-pecl-memcached php71w-pecl-redis php71w-peclmongodb # 4.统一用户
# 创建www用户组
[root@web01 ~]$ groupadd www -g 666
# 创建www用户
[root@web01 ~]$ useradd www -u 666 -g 666 -s /sbin/nologin -M
# 修改nginx配置文件使用www用户
[root@web01 ~]$ vim /etc/nginx/nginx.conf
user www;
# 修改php服务使用www用户
[root@web01 ~]$ vim /etc/php-fpm.d/www.conf
[www]
user = www
group = www # 5.启动php-fpm
[root@web01 ~]$ systemctl start php-fpm # 6.加入开机自启
[root@web01 ~]$ systemctl enable php-fpm # 7.检查php的进程
[root@web01 ~]$ ps -ef|grep '[p]hp-fpm'
root 8885 1 0 16:03 ? 00:00:00 php-fpm: master process (/etc/php-fpm.conf)
www 10468 8885 0 17:10 ? 00:00:01 php-fpm: pool www
www 10469 8885 0 17:10 ? 00:00:00 php-fpm: pool www
www 10470 8885 0 17:10 ? 00:00:00 php-fpm: pool www
www 10471 8885 0 17:10 ? 00:00:00 php-fpm: pool www
www 10472 8885 0 17:10 ? 00:00:00 php-fpm: pool www
www 10713 8885 0 17:43 ? 00:00:00 php-fpm: pool www
www 10767 8885 0 18:00 ? 00:00:00 php-fpm: pool www # 8.检查php端口
[root@web01 ~]$ netstat -lntup|grep 9000
tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN 8885/php-fpm: maste

3.安装数据库

# 1.安装mariadb
[root@web01 ~]$ yum install -y mariadb-server # 2.启动mariadb
[root@web01 ~]$ systemctl start mariadb # 3.开机自启mariadb
[root@web01 ~]$ systemctl enable mariadb # 4.检查MySQL端口
[root@web01 ~]$ netstat -lntup|grep 3306
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 9258/mysqld # 5.检查MySQL进程
[root@web01 ~]$ ps -ef|grep '[m]ysqld'
mysql 9093 1 0 16:08 ? 00:00:00 /bin/sh /usr/bin/mysqld_safe --basedir=/usr
mysql 9258 9093 0 16:08 ? 00:00:07 /usr/libexec/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib64/mysql/plugin --log-error=/var/log/mariadb/mariadb.log --pid-file=/var/run/mariadb/mariadb.pid --socket=/var/lib/mysql/mysql.sock # 6.设置mariadb密码为123
[root@web01 ~]$ mysqladmin -uroot password '123' # 7.客户端连接命令
[root@web01 ~]$ mysql -uroot -p123

将Nginx和PHP建立连接

1.修改nginx配置文件

[root@web01 nginx]$ vim /etc/nginx/conf.d/test_php.conf
server {
listen 80;
server_name localhost;
root /code; 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 /etc/nginx/fastcgi_params;
}
}

2.创建站点目录

[root@web01 nginx]$ mkdir /code

3.编辑php测试文件

[root@web01 nginx]$ vim /code/info.php
<?php  
phpinfo();
?>

在浏览器中访问:10.0.0.7/info.php

测试PHP连接MySQL

[root@web01 nginx]$ vim /code/mysql.php
<?php    
$servername = "localhost";    
$username = "root";    
$password = "123";   // 创建连接    
  $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://blog.driverzeng.com/zenglaoshi/php_mysql.png>

在浏览器中访问:10.0.0.7/mysql.php

部署博客软件(wordpress)

wordpress官网:https://wordpress.org

1.下载wordpress

[root@web01 code]$ wget http://test.driverzeng.com/Nginx_Code/wordpress-5.0.3-zh_CN.tar.gz

2.解压

[root@web01 code]$ tar xf latest.tar.gz
[root@web01 ~]$ ll /code/
total 10844
drwxr-xr-x 5 www www 4096 Jul 20 18:00 wordpress
-rw-r--r-- 1 root root 11098483 Jan 11 2019 wordpress-5.0.3-zh_CN.tar.gz

3.递归修改wordpress文件权限

[root@web01 code]$ chown -R www.www /code/wordpress

4.编写wordpress的nginx配置文件

[root@web01 ~]$ vim /etc/nginx/conf.d/test_php.conf
server {
listen 80;
server_name localhost;
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 /etc/nginx/fastcgi_params;
}
}

5.连接到MySQL中,创建一个给wordpress使用的库

[root@web01 wordpress]$ mysql -uroot -p123
# 创建数据库 库名wp 字符集是utf8
MariaDB [(none)]> create database wp charset utf8;
# 查看有几个库
MariaDB [(none)]> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| test |
| wp |
+--------------------+
5 rows in set (0.00 sec) #修改密码:mysql -uroot -p 123 passwd '新密码'

打开浏览器访问http://10.0.0.7

进入后台就可以自定义主题并发布博客啦~

Web进阶LNMP网站部署的更多相关文章

  1. 九.LNMP网站架构实践部署

    期中集群架构-第九章-期中架构LNMP章节====================================================================== 01. LNMP ...

  2. 《Linux就该这么学》培训笔记_ch20使用LNMP架构部署动态网站环境

    <Linux就该这么学>培训笔记_ch20使用LNMP架构部署动态网站环境 文章最后会post上书本的笔记照片. 文章主要内容: 源码包程序 LNMP动态网站架构 配置Mysql服务 配置 ...

  3. Keepalived+LVS实现LNMP网站的高可用部署

    Keepalived+LVS实现LNMP网站的高可用部署   项目需求   当我们访问某个网站的时候可以在浏览器中输入IP或者域名链接到Web Server进行访问,如果这个Web Server挂了, ...

  4. 第20章 使用LNMP架构部署动态网站环境

    章节概述: 本章节将从Linux系统的软件安装方式讲起,带领读者分辨RPM软件包与源码安装的区别.并能够理解它们的优缺点. Nginx是一款相当优秀的用于部署动态网站的服务程序,Nginx具有不错的稳 ...

  5. 用lnmp架构部署wordpress网站详细步骤

    用lnmp架构部署wordpress网站 ①.下载和上传网站代码 用winscp或者xftp, 或者xshell下执行rz命令进行上传网站的包文件. ②.解压程序代码,并将程序代码保存到站点目录,并进 ...

  6. Docker进阶之八:搭建LNMP网站平台实战

    搭建LNMP网站平台实战 LNMP是指一组通常一起使用来运行动态网站或者服务器的自由软件名称首字母缩写.L指Linux,N指Nginx,M一般指MySQL,也可以指MariaDB,P一般指PHP,也可 ...

  7. LNMP架构部署

    第1章 部署LNMP架构步骤 1.1 ①部署Linux系统(OK) 基本优化完成(ip地址设置 yum源更新 字符集设置) 安全优化完成(iptables关闭 selinux关闭 /tmp/ 1777 ...

  8. WordPress安装篇(5):源码编译安装LNMP并部署WordPress

    与YUM方式安装相比,源码编译安装方式更灵活,安装过程中能自定义功能和参数,特别是在批量部署服务器又要求软件版本及配置一致时,源码编译安装的优势很明显.本文介绍如何通过源码编译方式安装Nginx1.1 ...

  9. WordPress安装篇(4):YUM方式安装LNMP并部署WordPress

    YUM方式安装软件的优点就是简单.方便.快捷,本文介绍在Linux上如何使用YUM方式快速安装LNMP并部署WordPress.使用Linux CentOS 7.9 + Nginx 1.18 + My ...

  10. 网站部署 HTTPS 中需要做的事情

    这篇文章首发于我的个人网站:听说 - https://tasaid.com/,建议在我的个人网站阅读,拥有更好的阅读体验. 这篇文章与 博客园 和 Segmentfault 共享. 前端开发QQ群:3 ...

随机推荐

  1. LVS负载均衡 2022年4月

    1. 负载均衡技术简介 2 1.1 负载均衡类型3 1.2 LVS简介4 1.3 Keepalived简介5 2. 负载均衡搭建主要步骤 6 2.1 LVS+Keepalived的负载均衡系统搭建6 ...

  2. [UnityAI]行为树的中断机制

    参考链接: https://www.cnblogs.com/01zxs/p/9863715.html https://blog.csdn.net/AcmHonor/article/details/12 ...

  3. appium之手机操作的方法

    Appium内置方法,来操作手机.在做app自动化时,可以内置方法的基本上,对一些常用的手机操作进行方法的封装. 常用的方法有: 获取手机分辨率: driver.get_window(size) # ...

  4. el-admin登录详解

    1.进入登陆界面后,就会自动获取验证码. 2.前端访问auth/code接口获取后端生成的验证码(包括uuid,img,结果值),然后放入redis,设置2分钟过期,并返回识别码.图片url给前端. ...

  5. SSRF Server-Side Request Forgery(服务器端请求伪造)

    什么是SSRF? 犹如其名,SSRF(Server-Side Request Forgery)服务端请求伪造,攻击者可以控制服务器返回的页面,借用服务器的权限访问无权限的页面. 这是一个允许恶意用户导 ...

  6. 笔精墨妙,妙手丹青,微软开源可视化版本的ChatGPT:Visual ChatGPT,人工智能AI聊天发图片,Python3.10实现

    说时迟那时快,微软第一时间发布开源库Visual ChatGPT,把 ChatGPT 的人工智能AI能力和Stable Diffusion以及ControlNet进行了整合.常常被互联网人挂在嘴边的& ...

  7. Linux 命令之 tar 操作符

    tar -c: 建立压缩档案 -x:解压 -t:查看内容 -r:向压缩归档文件末尾追加文件 -u:更新原压缩包中的文件 这五个是独立的命令,压缩解压都要用到其中一个,可以和别的命令连用但只能用其中一个 ...

  8. 21.C++的对象模型

    程序1: #pragma warning(disable:4996) //2022年9月21日19:20:29 #include <iostream> using namespace st ...

  9. 关于VScode vue3卡顿

    在使用vscode+volar开发vue3项目时,出现代码提示缓慢的问题.通过开启Volar Takeover *模式解决. 以下摘自Vue3官网 https://cn.vuejs.org/guide ...

  10. 刷爆 LeetCode 双周赛 100,单方面宣布第一题最难

    本文已收录到 AndroidFamily,技术和职场问题,请关注公众号 [彭旭锐] 提问. 大家好,我是小彭. 上周末是 LeetCode 第 100 场双周赛,你参加了吗?这场周赛整体没有 Hard ...