zoukankan      html  css  js  c++  java
  • LNMP应用

    1.LNMP架构概述

    LNMP就是Linux+Nginx+MySQL+PHP
        Linux作为服务器的操作系统
        Nginx作为Web服务器
        PHP作为解析动态脚本语言
        MySQL即为数据库

    Nginx服务本身不能处理PHP的请求,那么当用户发起PHP动态请求,Nginx又是如何进行处理的。

    有两种方法:
    1.将PHP页面的解析请求转发给Apache处理
    2.将PHP页面的解析请求转发给php-fpm模块处理 *****
        用户->http协议->Nginx->fastcgi协议->php-fpm
        注意:fastcgi是nginx连接php-fpm之间的协议。

    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

    2.安装LNMP架构

    1.安装Nginx

    1)使用Nginx官方提供的rpm包
    sudo yum install yum-utils -y 
    cat >>/etc/yum.repos.d/nginx.repo<<EOF
    [nginx-stable]
    name=nginx stable repo
    baseurl=http://nginx.org/packages/centos/7/x86_64/
    gpgcheck=1
    enabled=1
    gpgkey=https://nginx.org/keys/nginx_signing.key
    module_hotfixes=true
    EOF
    
    2)执行yum安装
    sudo yum install -y nginx
    
    3)启动并加入开机自动启动
    systemctl start nginx && systemctl enable nginx

    2.安装MySQL

    1.下载MySQL官方扩展源
    rpm -ivh https://repo.mysql.com//mysql80-community-release-el7-3.noarch.rpm
    
    2.安装mysql8.0,文件过大可能导致下载过慢
    yum install mysql-community-server -y
    
    3.启动数据库,并加入开机自启动
    systemctl start mysqld
    systemctl enable mysqld
    
    //5.6版本
    4.由于mysql5.6默认管理员root密码为空,服务器启动后,可以直接登陆
    mysql -uroot
    ....
    mysql> 
    
    5.为了安全,必须给root设置密码
    [root@web01 scripts]# mysqladmin -u root password 123456
    //如果已经有密码,再次修改
    [root@web01 scripts]# mysqladmin -u root -p123456 password 123
    
    6.使用密码登录mysql
    mysql -uroot -p123456
    ....
    mysql> 
    
    //5.7版本
    4.由于mysql5.7默认配置了默认密码,需要过滤temporary password关键字查看对应登陆数据库密码
    grep "temporary password" /var/log/mysql.log
    
    5.登陆mysql数据库[password中填写上一步过滤的密码]
    mysql -uroot -p$(awk '/temporary password/{print $NF}' /var/log/mysql.log) 
    
    6.重新修改数据库密码
    mysql> ALTER USER 'root'@'localhost IDENTIFIED BY '123';
    
    注意:mysql是觉得不需要源码安装,所有的功能都是通过修改配置文件来实现。

     3.使用第三方扩展源安装PHP7.1

    1.移除旧版php(之前有通过Base或epel库安装过php的,必须先移除)
    yum remove php-mysql php php-fpm php-common
    
    2.安装扩展源
    yum localinstall -y http://mirror.webtatic.com/yum/el7/webtatic-release.rpm
    
    3.安装php7.1版本
    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
    
    4.启动php-fpm管理进程,并加入开机自启
    systemctl start php-fpm && systemctl enable php-fpm

     4.验证Nginx是否能正常解析php动态请求,以及php程序能否正常连接数据库

    1.创建一个测试站点
    [root@web01 www]# cat /etc/nginx/conf.d/php.conf 
    server {
        listen 80;
        server_name www.xiao.com;
        root /code/www;
        index index.php index.html;
    
        location ~ .php$ {
            root /code/www;
            fastcgi_pass 127.0.0.1:9000;
            fastcgi_index index.php;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            include fastcgi_params;
        } 
    }
    
    2.新增index.php,测试php解析是否正常工作
    [root@web01 www]# cat /code/www/index.php 
    <?php 
        phpinfo();
    ?>
    
    3.测试php是否能连接mysql数据库服务(无论是本地数据库还是远程数据库,测试方式一致)
    [root@web01 www]# cat /code/www/mysqli.php 
    <?php
        $servername = "localhost";
        $username = "root";
        $password = "123";
        
        //创建链接
        $conn = mysqli_connect($servername,$username,$password);
    
        //检测连接
        if (!$conn) {
            die("Connection failed:" . mysqli_connect_error());
        }
        echo "连接成功";        
    ?>

     

     部署wordpress个人博客

    1.部署Nginx虚拟主机站点,域名为blog.xiao.com
    [root@web01 conf.d]# cat wordpress.conf 
    server {
        listen 80;
        server_name blog.xiao.com;
        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;
        } 
    }
    
    2.下载wordpress产品,部署wordpress并授权
    #1.获取wordpress源码
    mkdir /soft
    cd /soft
    wget https://cn.wordpress.org/latest-zh_CN.tar.gz
    
    #2.解压网站源码文件,拷贝至对应站点目录,并授权站点目录
    tar xf wordpress-5.3.2-zh_CN.tar.gz
    mv wordpress /code/
    
    #和rsync nfs关联用户信息
    groupadd -g 666 www
    useradd -u 666 -g 666 -M -s /sbin/nologin www
    chown -R www.www /code/wordpress/
    
    #nginx也要修改程序用户,让通过nginx访问页面的用户具有写权限
    sed -i "/^user/c user www;" /etc/nginx/nginx.conf 
    
    #php-fpm也要修改程序用户,让通过访问php页面的用户具有写权限
    sed -i "/^user/c user =  www" /etc/php-fpm.d/www.conf 
    sed -i "/^group/c group =  www" /etc/php-fpm.d/www.conf 
    
    #重载nginx和php-fpm
    systemctl reload nginx php-fpm
    
    #3.由于wordpress产品需要数据库,所以需要手动创建数据库
    [root@web01 conf.d]# mysql -uroot -p123
    mysql> create database wordpress;
    Query OK, 1 row affected (0.02 sec)
    mysql> exit
    Bye

     部署知乎产品Wecenter

    1.部署Nginx虚拟主机站点,域名为zh.xiao.com
    [root@web01 conf.d]# cat zh.conf 
    server {
        listen 80;
        server_name zh.xiao.com;
        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;
        } 
    }
    
    2.下载wecenter产品,部署wecenter并授权
    #1.获取wecenter源码
    mkdir /soft
    cd /soft
    
    #2.解压网站源码文件,拷贝至对应站点目录,并授权站点目录
    unzip WeCenter_3-3-4.zip zh
    mv zh /code/
    
    #和rsync nfs关联用户信息
    chown -R www.www /code/zh
    
    #nginx也要修改程序用户,让通过nginx访问页面的用户具有写权限
    sed -i "/^user/c user www;" /etc/nginx/nginx.conf 
    
    #php-fpm也要修改程序用户,让通过访问php页面的用户具有写权限
    sed -i "/^user/c user =  www" /etc/php-fpm.d/www.conf 
    sed -i "/^group/c group =  www" /etc/php-fpm.d/www.conf 
    
    #重载nginx和php-fpm
    systemctl reload nginx php-fpm
    
    #3.由于wordpress产品需要数据库,所以需要手动创建数据库
    [root@web01 conf.d]# mysql -uroot -p123
    mysql> create database zh;
    Query OK, 1 row affected (0.02 sec)
    mysql> exit
    Bye
  • 相关阅读:
    POJMatrix(二维树状数组)
    HD1556Color the ball(树状数组)
    闲的没事,自挂东南枝
    高端、洋气效果
    “绝对”妹纸~position
    float元素一定要闭合
    dw cs6激活码一枚
    shell 预定义变量
    ubuntu 安装docker
    Microsonf visual c++ 14+ 离线内网安装
  • 原文地址:https://www.cnblogs.com/xmtxh/p/12309612.html
Copyright © 2011-2022 走看看