LNMP LNMP架构概述

1 什么是LNMP

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

1.2 LNMP架构是如何工作的

首先 Nginx 服务是不能处理动态请求,那么当用户发起动态请求时, Nginx 又是如何进行处理的。
当用户发起 http 请求,请求会被 Nginx 处理,如果是静态资源请求 Nginx 则直接返回,如果是动态请求 Nginx 则通过 fastcgi 协议转交给后端的 PHP 程序处理,具体如下图所示

1.3 Nginx与Fast-CGI工作流程

14248468-d748fdac327fb43c.webp.jpg

比喻:
Nginx: 拉货的货车
FastCGI: 高速公路
php-fpm: 每个路道的收费站
wrapper: 搬货的师傅
systemctl start php-fpm: 管理整个高速工作所有的收费站

1.用户通过 http 协议发起请求,请求会先抵达 LNMP 架构中的 Nginx
2.Nginx 会根据用户的请求进行判断,这个判断是有 Location 进行完成
3.判断用户请求的是静态页面, Nginx 直接进行处理
4.判断用户请求的是动态页面, Nginx 会将该请求交给 fastcgi 协议下发
5.fastgi 会将请求交给 php-fpm 管理进程, php-fpm 管理进程接收到后会调用具体的工作进程 warrap
6.warrap 进程会调用 php 程序进行解析,如果只是解析代码 php 直接返回
7.如果有查询数据库操作,则由 php 连接数据库(用户 密码 IP)发起查询的操作
8.最终数据由 mysql->php->php-fpm->fastcgi->nginx->http->user

2 第二章 LNMP安装部署

2.1 创建www统一用户

[root@web01 ~]# groupadd www -g 666
[root@web01 ~]# useradd www -s /sbin/nologin -M -u 666 -g 666
[root@web01 ~]# id www
uid=666(www) gid=666(www) 组=666(www)

2.2 使用官方仓库安装nginx

[root@web01 ~]# cat /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

[nginx-mainline]
name=nginx mainline repo
baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key

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

2.3 启动Nginx并加入开机自启动

[root@web01 ~]# systemctl start nginx
[root@web01 ~]# systemctl enable nginx

2.4 使用第三方拓展源安装php7.1

[root@web01 ~]# yum remove php-mysql-5.4 php php-fpm php-common
[root@web01 ~]# rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
[root@web01 ~]# rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
[root@web01 ~]# 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

2.5 配置php-fpm用户与nginx用户保持一致

方法一:
[root@web01 ~]# sed -i '/^user/c user = www' /etc/php-fpm.d/www.conf
[root@web01 ~]# sed -i '/^group/c group = www' /etc/php-fpm.d/www.conf
方法二
[root@web01 /etc/nginx/conf.d]# vim /etc/php-fpm.d/www.conf 
user = www
group = www

2.6 启动php-fpm并加入开机自启动

[root@web01 ~]# systemctl start php-fpm.service 

[root@web01 ~]# systemctl enable php-fpm.service

3 第三章 安装Mariadb数据库(客户端 服务端都要安装数据库)

[root@web01 ~]# yum install mariadb-server mariadb -y

3.1 启动Mariadb数据库并加入开机自启动

[root@web01 ~]# systemctl start mariadb
[root@web01 ~]# systemctl enable mariadb

3.2 配置Mariadb账号密码

[root@web01 ~]# mysqladmin password 'oldboy123'
[root@web01 ~]# mysql -uroot -poldboy123

方法二 进入数据库 (安全)
[root@web01 ~]# mysql -uroot -p
Enter password:

3.3 mysql基础命令

1.查看当前mysql有哪些用户
MariaDB [(none)]> select user,host from mysql.user;
+------+-----------+
| user | host      |
+------+-----------+
| root | 127.0.0.1 |
| root | ::1       |
|      | localhost |
| root | localhost |
|      | web01     |
| root | web01     |
+------+-----------+
2.查看当前有哪些数据库
show databases;
3.进入一个数据库
use mysql;
4.查看一个库下的表
show tables;
5.查看当前数据库里有那些用户
select user,host from mysql.user;
6.mysql 数据库用户的概念
user | host 
7.创建一个数据库
create database zhong

3.4 退出

exit

4 第四章 LNMP环境配置

官网:http://nginx.org/

4.1 Fastcgi语法

设置 fastcgi 服务器的地址,该地址可以指定为域名或 IP 地址,以及端口

Syntax: fastcgi_pass address;
Default: —
Context: location, if in location

#语法示例
fastcgi_pass localhost:9000;
fastcgi_pass unix:/tmp/fastcgi.socket;

4.2 设置 fastcgi 默认的首页文件,需要结合 fastcgi_param 一起设置

Syntax: fastcgi_index name;
Default: —
Context: http, server, location

4.3 通过 fastcgi_param 设置变量,并将设置的变量传递到后端的 fastcgi 服务器

Syntax: fastcgi_param parameter value [if_not_empty];
Default: —
Context: http, server, location

#语法示例
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /code$fastcgi_script_name;

4.4 最终Nginx连接FastCGI服务器配置如下

[root@web01 /etc/nginx/conf.d]# vim php.conf 
server {
    server_name php.mysun.com;
    listen 80;
    root /code;
    index index.php index.html;

    location ~ \.php$ {
        root /code;
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
}

4.5 在/code目录下创建info.php文件并访问测试 (没有目录就创建)

[root@web01 ~]# mkdir /code
[root@web01 ~]# chown -R www:www /code/
[root@web01 ~]# cat /code/info.php
<?php
    phpinfo();
?>

4.6 检查nginx语法并重启

[root@web01 ~]# 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 ~]# systemctl restart nginx

4.7 绑定hosts然后在浏览器访问

http://php.mysun.com/info.php

14248468-afbdb80c1c011970.webp.jpg

5 第五章 测试php和数据库访问是否正常

[root@web01 /code]# vim mysql.php
<?php
    $servername = "localhost";
    $username = "root";
    $password = "oldboy123";

    // 创建连接
    $conn = mysqli_connect($servername, $username, $password);

    // // 检测连接
    if (!$conn) {
        die("Connection failed: " . mysqli_connect_error());
    }
    echo "php 连接 MySQL 数据库成功";
?>
[root@web01 ~]# chown -R www:www /code/

5.1 通过浏览器访问数据库页面

http://hp.mysun.com/mysql.php

14248468-3a48ddeaf5e0131e.webp.jpg

666 总结

要想连接PHP和 Mysql 要先启动服务

1. 启动Mariadb数据库并加入开机自启动
[root@web01 ~]# systemctl start mariadb
[root@web01 ~]# systemctl enable mariadb

2.启动php-fpm并加入开机自启动

[root@web01 ~]# systemctl start php-fpm.service 

[root@web01 ~]# systemctl enable php-fpm.service

6 第六章 部署博客Wordpress

6.1 配置Nginx虚拟主机站点

[root@web01 /etc/nginx/conf.d]# mv php.conf wordpress.conf
[root@web01 /etc/nginx/conf.d]# vim wordpress.conf 
server {
    server_name blog.mysun.com;
    listen 80;
    root /code/wordpress;
    index index.php index.html;

    location ~ \.php$ {
        root /code/wordpress;
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
}

6.2 重启nginx

[root@web01 /etc/nginx/conf.d]# systemctl restart nginx 

6.3 下载解压wordpress到代码目录

注:代码要找到存放路径,也可以直接拉进来

[root@web01 ~]# mkdir /code
[root@web01 ~]# cd /code/
[root@web01 /code]# wget https://cn.wordpress.org/wordpress-4.9.4-zh_CN.tar.gz
[root@web01 /code]# tar xf wordpress-4.9.4-zh_CN.tar.gz 
[root@web01 /code]# chown -R www:www /code/wordpress

6.4 建wordpress数据库

[root@web01 ~]# mysql -uroot -poldboy123
MariaDB [(none)]> create database wordpress;
MariaDB [(none)]> exit

6.5 浏览器访问wordpress并部署

14248468-dd38100064951e77.webp.jpg
14248468-917f136b8d1f2221.webp.jpg
14248468-63fc1d8feb9a6d81.webp.jpg
14248468-fd5a927bf9abb1fe.webp.jpg
14248468-bf85028664bb24e3.webp.jpg
14248468-9cf599089d9c11f7.webp.jpg
14248468-e9d90ec2658dd12d.webp.jpg

7 部署问答网站Wecenter

7.1 配置Nginx虚拟站点

注明:(wordpress.conf)是已经写好的模板

[root@web01 /etc/nginx/conf.d]# cp wordpress.conf zh.conf
[root@web01 /etc/nginx/conf.d]# vim zh.conf 
server {
    server_name zh.mysun.com;
    listen 80;
    root /code/zh;
    index index.php index.html;

    location ~ \.php$ {
        root /code/zh;
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
}

7.2 检测语法 重启服务

[root@web01 /etc/nginx/conf.d]# nginx -t
[root@web01 /etc/nginx/conf.d]# systemctl restart nginx

7.3 下载解压wecenter并授权 注明( zh 代码要下载的)

[root@web01 /code]#
[root@web01 /code]# unzip WeCenter_3-3-2.zip -d zh
[root@web01 /code]# chown -R www:www /code/

7.4 创建wecenter数据库

[root@web01 ~]# mysql -uroot -poldboy123
MariaDB [(none)]> create database zh;
MariaDB [(none)]> show databases;   #查看数据库

MariaDB [(none)]> exit

7.5 浏览器访问

14248468-45af6dbf2723e166.webp.jpg
14248468-ba367727e768d79e.webp.jpg
14248468-31c7fb7b33531170.webp.jpg
14248468-f70702b0f513d8fd.webp.jpg

8 总结 要想打开网页 要现把相关服务启动起来

启动Nginx并加入开机自启动
[root@web01 ~]# systemctl start nginx
启动php-fpm并加入开机自启动
[root@web01 ~]# systemctl start php-fpm.service 
启动Mariadb数据库并加入开机自启动
[root@web01 ~]# systemctl start mariadb
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,406评论 6 503
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,732评论 3 393
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,711评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,380评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,432评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,301评论 1 301
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,145评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,008评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,443评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,649评论 3 334
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,795评论 1 347
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,501评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,119评论 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,731评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,865评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,899评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,724评论 2 354

推荐阅读更多精彩内容