zoukankan      html  css  js  c++  java
  • 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='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开发书写代码连接
  • 相关阅读:
    adb命令之adb install
    GNU make and Makefile
    Makefile经典教程(掌握这些足够)
    Android.mk简介
    PhoneFactory.getDefaultPhone must be called from Looper thread
    Android源码目录结构
    软件部通用技术类网站名录
    β测试
    α测试
    白盒测试
  • 原文地址:https://www.cnblogs.com/tcy1/p/12944332.html
Copyright © 2011-2022 走看看