LNMP架构概述

有梦就能实现 2020-06-01

web架构

# 需记住的端口()
ftp:21
ssh:22
telnet:23
rsync:873
http:80
php:9000
mysql:3306
...

LNMP架构概述

  • Linux
  • Nginx
  • MySQL
  • PHP (代码解析器)

代码解析器各类代码:

  • PHP (php代码)
  • tomcat (Java代码)
  • Resin (Java代码)
  • Python (python代码)

LNMP架构的工作流程

[LNMP架构概述

# 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->use

部署LNMP

1. 安装nginx

## 可以先打开缓存(keepcache),然后把部署完的包打包,给下一台机子的时候就可以使用本地安装了
[ ~]# vim /etc/yum.conf 
keepcache=1

# 1.更换官方源
[ ~]# 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

# 2.安装nginx
[ ~]# yum install -y nginx

2. 安装php

# 1.先卸载系统自带的php5.4 (一般centos6里面会有,7没有)
[ ~]# yum remove php-mysql-5.4 php php-fpm php-common

# 2.更改php源
[ ~]# 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

# 3.安装php
[ ~]# 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-memcachedphp71w-pecl-redis php71w-pecl-mongodb

3.统一Nginx和php的用户

注意:

php服务有两个配置文件

1.php-fpm.conf (管理php进程的相关配置文件)

2.php.ini (管理php的程序相关配置文件)

# 1.创建用户和用户组
[ ~]# groupadd www -g 666
[ ~]# useradd www -u 666 -g 666 -s /sbin/nologin -M

# 2.让nginx使用www用户
[ ~]# vim /etc/nginx/nginx.conf
...
user www;
...

# 3.启动nginx并加入开机自启
[ ~]# systemctl start nginx
[ ~]# systemctl enable nginx

# 4.修改php用户
[ ~]# vim /etc/php-fpm.d/www.conf
user = www
group = www

# 5.启动php并加入开机自启
[ ~]# systemctl start php-fpm
[ ~]# systemctl enable php-fpm

4.安装部署mariadb(MySQL)

# 1.安装mariadb
[ ~]# yum install mariadb-server -y

# 2.启动服务,并加入开机自启
[ ~]# systemctl start mariadb
[ ~]# systemctl enable mariadb

# 3.给root用户密码
[ ~]# mysqladmin -uroot password ‘123‘

# 4.连接数据库
[ ~]# mysql -uroot -p123
MariaDB [(none)]>

5.使用nginx连接php

模块ngx_http_fastcgi_module

作用:nginx服务代理php服务

############### nginx服务代理php服务

例如:
location / {                  # 一般写~/.php$,下面还需加一个目录。
    fastcgi_pass  localhost:9000;
    fastcgi_index index.php;
                       # 这个目录基本都写变量($document_root) index.php的一个变量
    fastcgi_param SCRIPT_FILENAME /home/www/scripts/php$fastcgi_script_name;
    fastcgi_param QUERY_STRING    $query_string;
    fastcgi_param REQUEST_METHOD  $request_method;
    fastcgi_param CONTENT_TYPE    $content_type;
    fastcgi_param CONTENT_LENGTH  $content_length;
}


# 具体如何配置可以看/etc/nginx/conf.d/default.conf里面是怎么配置这个模块的
    ...
    location ~ \.php$ {
        root           html;
        fastcgi_pass   127.0.0.1:9000;       # 代理后端的php服务本地IP和端口
        fastcgi_index  index.php;            # 寻找的php页面
        fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;  # root和fastcgi_index的变量
        include        fastcgi_params;      # 包含fastcgi_params里面的所有变量解析文件
        ...

5.1 修改nginx的配置文件连接php

# 修改配置文件
[ ~]# vim /etc/nginx/conf.d/php.conf 
server {
        listen 80;
        server_name www.php.com;
# 当输入域名,没有接任何uri的时候,会走location /
        location / {
# 站点目录:/code/wordpress
                root /code/wordpress;
# index.php的代码,如果没有index.php,那么就找index.html页面
                index index.php index.html;
        }

# 当访问到区分大小写,以php结尾的url时
        location ~ \.php$ {
                # 站点目录
                root /code/wordpress;
                # 代理后端的php服务
                fastcgi_pass 127.0.0.1:9000;
                # 默认页面时index.php
                fastcgi_index index.php;
#当请求过来之后,会看这一行,  在/code/wordpress目录下 wp-admin/setup-config.php,交给php解析 (变量)
                fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
#包含fastcgi 变量解析文件
                include        fastcgi_params;
        }
}

5.2 检测nginx是否能连接成功php

# 1.域名解析

# 2.创建站点目录
[ ~]# mkdir -p /code/wordpress

# 3.在站点目录下,创建一个info.php,写入php代码
[ ~]# vim /code/wordpress/info.php
<?php
   phpinfo();
?>

# 4.访问域名
# 5.成功后把info.php文件删了,据说这个文件很危险

www.php.com/info

[LNMP架构概述

代表连接成功,然后php通过开发写的代码连接mysql

6.部署wordpress

#### 这个是搭建博客的工具

操作MySQL

# 1.连接数据库
[ php]# mysql -uroot -p123                  
# 2.创建数据库
MariaDB [(none)]> create database wp;                
# 3.查看是否创建成功
MariaDB [(none)]> show databases;
# 4.创建WordPress连接数据库的用户和密码
MariaDB [(none)]> grant all on wp.* to ‘localhost‘ identified by ‘111‘;
# 5.给站点目录授权
[ php]# chown -R www.www /code/wordpress/


# 6.在这个目录下解压你想要的博客主题样式     /code/wordpress/wp-content/themes

](https://imgchr.com/i/Y7yvQK)
[LNMP架构概述

](https://imgchr.com/i/Y76ESP)
LNMP架构概述

[LNMP架构概述

](https://imgchr.com/i/Y7yORx)
LNMP架构概述

然后就是登入了

LNMP架构概述

搭建完成

相关推荐