LNMP介绍及搭建

Lnmp介绍

# 什么是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.fastgi会将请求交给php-fpm管理进程, php-fpm管理进程接收到后会调用具体的工作进程wrapper

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

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

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

# nginx连接php模块:此模块为nginx的代理php服务
· ngx_http_fastcgi_module 
location / {
    fastcgi_pass  localhost:9000;
    fastcgi_index 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;
    
}
  • 图一

  • 图二

部署lnmp

前提

  • 首先将yum源缓存开启,后面需要安装mysql+php+nginx直接使用安装包即可(主要是这些包从网上下载太慢了....如)
[root@web02 ~]# vim /etc/yum.conf
[main]
cachedir=/var/cache/yum/$basearch/$releasever
keepcache=0										# 将零改成1
debuglevel=2
logfile=/var/log/yum.log
exactarch=1
obsoletes=1
gpgcheck=1
plugins=1
installonly_limit=5
bugtracker_url=http://bugs.centos.org/set_project.php?project_id=23&ref=http://bugs.centos.org/bug
_report_page.php?category=yum
distroverpkg=centos-release

1.安装nginx

# 更换官方源
[root@web01 ~]# 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

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

2.安装php

# 1.先卸载系统自带的php5.4(有些系统有残留)
[root@web01 ~]# yum remove php-mysql-5.4 php php-fpm php-common

 # 2.更改php源
 [root@web01 ~]# 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
[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 php71w-pecl-memcached php71w-pecl-redis php71w-pecl-mongodb

3.统一php和nginx的用户

# 1.创建用户和用户组(统一nginx启动用户和php启动用户)
[root@web01 ~]# groupadd www -g 666
[root@web01 ~]# useradd www -u 666 -g 666 -s /sbin/nologin -M

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

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

 
 ## 注意:
 php服务有两个配置文件
 1. php-fpm.conf   (管理php进程的相关配置文件)
 2. php.ini   	  (管理php的程序相关配置文件)
 
 # 4.修改php用户
[root@web01 ~]# vim /etc/php-fpm.d/www.conf
user = www
group = www

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

4.安装MySQL

# 1.安装MySQL
[root@web01 ~]# yum install -y mariadb-server

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

 # 3.给mysql登录用户root配置密码
 [root@web01 ~]# mysqladmin -uroot password '123'
 
 # 4.连接数据库
 [root@web01 ~]# mysql -uroot -p123

5.使用nginx连接php

修改nginx的配置文件连接php

[root@web01 wordpress]# vim /etc/nginx/conf.d/php2.conf 

# server层
server {
#监听80端口
        listen 80;
#指定域名
        server_name www.tcy.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服务(主要通过此处进行和php连接)
                fastcgi_pass 127.0.0.1:9000;
                # 默认页面时index.php
                fastcgi_index index.php;

# $document_root:站点目录
# $fastcgi_script_name=uri
#当请求过来之后,会看这一行,  在/code/wordpress目录下 wp-admin/setup-config.php,交给php解析
                fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
#下方指包含fastcgi 变量解析的文件(/etc/nginx/fastcgi_params)定义了上面变量内容
                include        fastcgi_params;
        }
}

  • 检测nginx是否能连接成功php,在站点目录下,创建一个info.php
<?php
    phpinfo();
?>

打开浏览器访问:www.tcy.com/info.php

检测nginx和数据库连接状态

[root@nginx ~]# cat /code/wordpress/mysqli.php			# 站点目录创建对应文件
<?php
    $servername = "localhost";						   # 数据库ip(本地)
    $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>

· 直接使用浏览器访问此域名,如访问成功则nginx通过php连接至nginx

简单部署wordpress

  • 博客工具(需连接数据库)
  • 官网地址:TP
  1. 将wordpress安装包放入站点目录底下
    • 注意:压缩包解压后里面还有目录,需要将所有的.php文件移动到站点目录底下才能访问
# 压缩包上传至站点目录
[root@web01 /code/wordpress]# ll
total 10840
-rw-r--r-- 1 root root 11098483 May 20 14:38 wordpress-5.0.3-zh_CN.tar.gz
[root@web01 /code/wordpress]# 

# 对压缩包解压
[root@web01 /code/wordpress]# tar -xf wordpress-5.0.3-zh_CN.tar.gz 
[root@web01 /code/wordpress]# ll
total 10844
drwxr-xr-x 5 1006 1006     4096 Jan 11  2019 wordpress
-rw-r--r-- 1 root root 11098483 May 20 14:38 wordpress-5.0.3-zh_CN.tar.gz

# 将.php文件移动到站点目录下
[root@web01 /code/wordpress]# ll wordpress
total 192
-rw-r--r--  1 1006 1006   418 Sep 25  2013 index.php
-rw-r--r--  1 1006 1006 19935 Jan  4  2019 license.txt
-rw-r--r--  1 1006 1006  6989 Jan 11  2019 readme.html
-rw-r--r--  1 1006 1006  6878 Dec 13  2018 wp-activate.php
drwxr-xr-x  9 1006 1006  4096 Jan 11  2019 wp-admin
-rw-r--r--  1 1006 1006   364 Dec 19  2015 wp-blog-header.php
-rw-r--r--  1 1006 1006  1889 May  3  2018 wp-comments-post.php
-rw-r--r--  1 1006 1006  2735 Jan 11  2019 wp-config-sample.php
drwxr-xr-x  5 1006 1006    69 Jan 11  2019 wp-content
-rw-r--r--  1 1006 1006  3669 Aug 20  2017 wp-cron.php
drwxr-xr-x 19 1006 1006  8192 Jan 11  2019 wp-includes
-rw-r--r--  1 1006 1006  2422 Nov 21  2016 wp-links-opml.php
-rw-r--r--  1 1006 1006  3306 Aug 22  2017 wp-load.php
-rw-r--r--  1 1006 1006 37296 Dec 13  2018 wp-login.php
-rw-r--r--  1 1006 1006  8048 Jan 11  2017 wp-mail.php
-rw-r--r--  1 1006 1006 17421 Oct 23  2018 wp-settings.php
-rw-r--r--  1 1006 1006 30091 Apr 30  2018 wp-signup.php
-rw-r--r--  1 1006 1006  4620 Oct 24  2017 wp-trackback.php
-rw-r--r--  1 1006 1006  3065 Sep  1  2016 xmlrpc.php
[root@web01 /code/wordpress]# mv wordpress/* ./

# 原先无用包直接丢弃
[root@web01 /code/wordpress]# mv wordpress wordpress-5.0.3-zh_CN.tar.gz /tmp

操作数据库

# 1.连接数据库
[root@web01 php]# mysql -uroot -p123

# 2.创建数据库
MariaDB [(none)]> create database wp;

# 3.查看是否创建成功
MariaDB [(none)]> show databases;

# 4.创建WordPress连接数据库的用户和密码
MariaDB [(none)]> grant all on wp.* to wp_user@'localhost' identified by '111';

# 2.给站点目录授权
[root@web01 php]# chown -R www.www /code/wordpress/

  • 搭建成功,页面可直接访问域名,无需输入uri

  • 根据数据库中创建信息,此处进行书写

  • 直接安装

  • 账号注册信息,随意定义

  • 进入登录页面

  • 博客搭建成功,下面可自由发挥

总结

  1. nginx与php相连接需要依靠fastcgi协议,也就是nginx配置文件中的fastcgi_pass 127.0.0.1:9000;
  2. php和mysql相连接是通过php开发书写代码连接

猜你喜欢

转载自www.cnblogs.com/tcy1/p/12944332.html
今日推荐