美文网首页
LNMP 架构

LNMP 架构

作者: 小屁孩云熙 | 来源:发表于2021-12-30 19:13 被阅读0次

    1. LNMP 架构

    L   -- Linux
    N   -- Nginx    处理用户的静态请求
    M   -- MySQL    存储用户的字符串数据信息
    P   -- PHP      处理动态请求;负责和数据库建立关系
    
    • 注意
    01. selinux 关闭
    02. /tmp 1777 权限,mysql服务无法启动 (编译安装)
    

    2. LNMP 架构部署

    2.1 Nginx 部署

    2.2 MariaDB 部署

    2.2.1 安装

    yum install mariadb mariadb-server -y
    

    2.2.2 初始化

    mysql_install_db --help
    --basedir=path      指定 mysql 程序目录
    --datadir=path      指定 数据信息 保存目录
    --user=mysql        指定 用户管理数据目录 700
    
    信息输出:
    创建用户密码信息
    
    # 扩展
    # 01. 给本地数据库设置密码
    mysqladmin -u root password 'xxxx'
    # 02. 给远程数据库设置密码
    mysqladmin -u root -h web01 password 'xxx'
    

    2.2.3 启动服务

    systemctl start mariadb
    systemctl enable mariadb
    

    2.2.3 设置密码

    mysqladmin -u root password 'xxx'
    

    2.2.4 连接数据库

    mysql -u root -pxxx
    

    2.3 PHP 部署安装

    2.3.1 更新 yum 源,卸载系统自带的 PHP 软件

    yum remove php-mysql php php-fpm php-common -y
    
    rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
    rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
    

    2.3.2 安装 PHP 软件(7.1)

    yum 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-mongodb php71w-pecl-redis -y
    

    2.3.3 编写配置文件

    vim /etc/php-fpm.d/www.conf
    
    user = www
    group = www
    
    # 保证 Nginx 进程的管理用户和 PHP 服务进程的管理用户保持一致
    

    2.3.4 启动服务

    systemctl start php-fpm
    systemctl enable php-fpm
    

    3. LNMP 架构原理

    image-20211228155859652.png

    4. 实现 LNMP 之间建立关系

    4.1 实现 Nginx 和 PHP 之间建立关系

    4.1.1 编写 Nginx 配置文件

    location ~ \.php$ {
        root /html/blog;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_pass 127.0.0.1:9000;
        include fastcgi_params;
    }
    
    systemctl restart nginx
    

    4.1.2 编写动态资源文件

    vim test.php
    
    <?php
        phpinfo();
    ?>
    

    4.1.3 访问测试

    4.2 实现 PHP 和 MySQL 之间建立关系

    4.2.1 编写 PHP 代码文件

    test_mysql.php

    <?php
        $servername = "localhost";
        $username = "root";
        $password = "123456";
        $conn = mysqli_connect($servername,$username,$password);
        if ($conn) {
            echo "successful!\n";
        }
        else {
            die("connection failed:".mysqli_connect_error());
        }
    ?>
    

    4.2.2 访问测试

    5. 部署搭建网站页面(代码上线)

    5.1 获取代码信息 (git)

    使用开源的网站代码

    www 网站页面:http://www.dedecms.com/

    bbs 网站页面:https://www.discuz.net/

    blog 网站页面:https://cn.wordpress.org/

    知乎 网站页面:http://www.wecenter.com/downloads/

    5.2 将代码解压,放入到站点目录中

    5.3 修改站点目录权限

    chown -R www.www /html/blog
    

    5.4 创建数据库 和 用户

    create database wordpress charset utf8;
    show databases;
    
    grant all on wordpress.* to wordpress@'localhost' identified by '123456';
    show grants for wordpress@'%';
    select user,host from mysql.user;
    

    5.5 网站页面初始化

    5.6 问题解决

    5.6.1 上传文件报 413 错误

    1. 修改 Nginx 配置文件
    vim blog.conf
    
    server {
        client_max_body_size 50m;   -- 指定用户上传数据的大小限制(默认为1M)
    }
    
    1. 修改 php.ini 配置文件
    upload_max_filesize = 50M   -- 使PHP接收用户上传的更大的数据(默认2M)
    

    5.6.2 如何让 LNMP 架构和存储服务器建立关系

    1. 找出图片存储的目录
    # 01. 根据图片链接地址获取图片存储位置
    http://blog.yunxuanedu.com/wp-content/uploads/2021/12/hj.gif
    
    # 02. 先定位数据存放站点目录
    find /html/blog -type f -mmin -5    # 最今 5 分钟内 的文件
    inotifywait -mrq /html/blog
    
    1. 使 Web 服务器 和 存储服务器建立关系
    # 01. 检查存储服务是否正常
    
    # 02. 编写存储服务配置文件
    [root@nfs01 ~]# cat /etc/exports
    /data/blog  172.16.1.0/24(rw,sync,anonuid=1005,anongid=1005)
    /data/www  172.16.1.0/24(rw,sync,anonuid=1005,anongid=1005)
    /data/bbs  172.16.1.0/24(rw,sync,anonuid=1005,anongid=1005)
    [root@nfs01 ~]# showmount -e 172.16.1.31
    Export list for 172.16.1.31:
    /data/bbs  172.16.1.0/24
    /data/www  172.16.1.0/24
    /data/blog 172.16.1.0/24
    
    # 03. 将 Web 服务器上的数据迁移
    [root@web01 uploads]# ll
    total 0
    drwxr-xr-x 3 www www 16 Dec 29 16:34 2021
    [root@web01 uploads]# mv 2021/ /tmp/
    [root@web01 uploads]# ll
    total 0
    [root@web01 uploads]# pwd
    /html/blog/wp-content/uploads
    
    # 04. 挂载目录
    [root@web01 uploads]# mount -t nfs 172.16.1.31:/data/blog /html/blog/wp-content/uploads
    [root@web01 uploads]# df -h
    Filesystem               Size  Used Avail Use% Mounted on
    /dev/mapper/centos-root   28G  2.0G   26G   8% /
    devtmpfs                 475M     0  475M   0% /dev
    tmpfs                    487M     0  487M   0% /dev/shm
    tmpfs                    487M   20M  467M   5% /run
    tmpfs                    487M     0  487M   0% /sys/fs/cgroup
    /dev/sda1                473M  125M  349M  27% /boot
    172.16.1.31:/data         28G  1.9G   26G   7% /mnt
    tmpfs                     98M     0   98M   0% /run/user/0
    172.16.1.31:/data/blog    28G  1.9G   26G   7% /html/blog/wp-content/uploads
    
    # 05. 数据迁移到挂载目录下
    [root@web01 ~]# mv /tmp/2021 /html/blog/wp-content/uploads
    [root@web01 ~]# cd /html/blog/wp-content/uploads
    [root@web01 uploads]# ll
    total 0
    drwxr-xr-x 3 www www 16 Dec 29 16:34 2021
    
    # 06. 访问测试
    

    5.6.3 如何让 LNMP 架构和 数据库服务器建立关系

    5.6.3.1 为什么 不将数据库 服务在web站点服务器上运行
    1. 方便集群资源共享,保证集群节点服务器数据一致
    2. 节省硬件成本和维护成本
    3. 安全可靠等
    5.6.3.2 数据迁移流程
    1. 在本地进行数据备份
    # 全库备份
    mysqldump -uroot -p123456 --all-database > /tmp/web_back.sql
    
    1. 将备份数据迁移至数据库服务器
    2. 恢复数据
    mysql -uroot -pxxx < /tmp/web_back.sql
    
    1. 修改数据库用户信息
    # 优化 - 删除无用的用户信息
    delete from mysql.user where user="";
    
    # 新建用户
    grant all on wordpress.* to wordpress@'172.16.1.%' identified by '123456';
    flush privileges;   -- 刷新权限,若授权后测试未生效
    
    1. 修改 Web 服务器 代码文件信息
    vim wp-config.php
    
    1. 停止 Web 服务器上的数据库

    5.6.4 域名变动后,无法正常访问新域名,会跳到旧域名问题

    1. 修改 wordpress 后天设置信息,将后台中旧域名修改为新域名
    2. 修改 数据库 中的数据信息

    相关文章

      网友评论

          本文标题:LNMP 架构

          本文链接:https://www.haomeiwen.com/subject/osqwqrtx.html