zoukankan      html  css  js  c++  java
  • LNMP架构应用案例----WordPress

    一、环境部署

    mysql        172.16.1.10                                  数据库

    web01      10.0.0.11      172.16.1.11             web节点

    web02      10.0.0.12      172.16.1.12            web节点

    nfs            172.16.1.13                                 共享存储

    lb             10.0.0.14         172.16.1.14          负载均衡

    二、安装部署

    1.web01  web02       安装nginx php-fpm 

    2.nfs                         安装nfs

    3.lb                           安装nginx

    4.mysql                    安装mariadb

    三、WordPress的操作部署

    1.单节点的部署

    1)web01【10.0.0.11  172.16.1.11】

    #1.准备wordpress的代码?放到某个指定的位置
    [root@web01 ~]# mkdir /code
    [root@web01 ~]# tar xf wordpress-5.2.3-zh_CN.tar.gz  -C /code/
    [root@web01 ~]# ll /code/
    drwxr-xr-x 5 oldman oldman 4096 9月   5 2019 wordpress
    #2.修改权限
    进程以什么样的方式去访问一个文件或目录,取决于该进程运行的身份对这个文件或目录拥有什么权限
    1.将 nginx php 的用户 身份 统一修改 为  www
    
        [root@web01 ~]# groupadd -g 666  www
        [root@web01 ~]# useradd -u666 -g666 www
    
        修改nginx运行身份
        [root@web01 ~]# sed -i  '/^user/c user www;'  /etc/nginx/nginx.conf
    
        修改php-fpm的运行身份
        [root@web01 ~]# sed -i '/^user/c user = www'   /etc/php-fpm.d/www.conf
        [root@web01 ~]# sed -i '/^group/c group = www'   /etc/php-fpm.d/www.conf
    
        重启nginx和php
        [root@web01 ~]# systemctl restart nginx php-fpm
     2.授权代码的权限为www
        [root@web01 ~]# chown -R www.www /code/wordpress/

    #3.配置nginx,添加一个wordpress的网站
      [root@web01 ~]# cat /etc/nginx/conf.d/blog.oldxu.com.conf
       server  {
          listen 80;
          server_name blog.ld.com;
          root /code/wordpress;
          client_max_body_size 100m;
     
          location / {
               index index.php;
          }
           location ~ .php$ {
                fastcgi_pass 127.0.0.1:9000;
                fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
                include fastcgi_params;
     }
    }
      #4.语法检查
      [root@web01 ~]# nginx -t
      #重启生效
      [root@web01 ~]# systemctl restart nginx

    2)mysql:数据库的配置【172.16.1.10】

    #1.安装并启动数据库
    [root@mysql ~]#yum install mariadb mariadb-server -y
    [root@mysql ~]#systemctl  enable  mariadb
    [root@mysql ~]#systemctl  start  mariadb
    
    #2.mysql要配置对应的用户和密码
    [root@mysql ~]#mysqladmin password  ld.com
    
    #3.创建一个存放WordPress的库
    [root@mysql ~]# mysql -uroot -pld.com
    MariaDB [(none)]>
    MariaDB [(none)]> create database wordpress;  #创建一个 wordpress的 库
    MariaDB [(none)]> show databases;   #查看所有的库
    +--------------------+
    | Database           |
    +--------------------+
    | information_schema |
    | mysql              |
    | performance_schema |
    | test               |
    | wordpress          |     <----
    +--------------------+
    5 rows in set (0.00 sec)
    
    #4.创建一个远程登录数据库的用户
    [root@mysql ~]#mysql -uroot -pld.com
    MariaDB [(none)]> grant all privileges on *.* to 'all'@'%' identified by 'ld.com';         #创建远程能连接的用户,以及密码。并进行授权
     

    3)修改web01-----------将web01上的WordPress连接的数据库地址指向 172.16.1.10-------- 

    [root@web01 ~]# vim /code/wordpress/wp-config.php
    /** WordPress数据库的名称 */
    define( 'DB_NAME', 'wordpress' );
    /** MySQL数据库用户名 */
    define( 'DB_USER', 'all' );
    /** MySQL数据库密码 */
    define( 'DB_PASSWORD', 'ld.com' );
    /** MySQL主机 */
    define( 'DB_HOST', '172.16.1.10' );

    4)配置域名劫持

    若为windows,找 C:WindowsSystem32driversetchosts
    若为macos: ,请编辑 /etc/hosts

    5)测试访问

    在浏览器上访问  blog.ld.com 然后检查是否有异常,有异常则处理异常。

    2.多节点部署

    单台web服务器能抗住的访问是有限的,配置多台web服务器能提升更高的访问速度,能够接收更多的用户请求。从而达到提高冗余和它的性能的目的。所以我们再加入另一个访问节点

    web02

    保持和web01一模一样的配置

    PS:真正的企业中,没有安装向导,没有重新安装的必要,直接拷一份过去即可。

    1)nginx+PHP环境

    # web01 执行的操作
    [root@web01 ~]# scp /etc/yum.repos.d/nginx.repo root@172.16.1.12:/etc/yum.repos.d/nginx.repo
    [root@web01 ~]# scp php.zip root@172.16.1.12:~
    
    # web02 执行的操作
    [root@web02 ~]# unzip php.zip  #解压web01推送过来的压缩包
    [root@web02 ~]# yum remove php-mysql php php-fpm php-common  -y  #若之前有安装过,则可能发生冲突,所以要先移除之前的旧版本
    [root@web02 ~]# yum localinstall php/*.rpm  #通过本地方式安装所有的rpm
    [root@web02 ~]# yum install nginx -y 

    2)nginx的配置、PHP的配置【配置文件、权限修改】

    # 推送web01 的nginx配置、php配置、至web02
    [root@web01 ~]# scp -rp /etc/nginx root@172.16.1.12:/etc/
    [root@web01 ~]# scp -rp /etc/php-fpm.d/www.conf  root@172.16.1.12:/etc/php-fpm.d/www.conf
    [root@web01 ~]# scp -rp /etc/php.ini  root@172.16.1.12:/etc/php.ini

    3)代码推送

    # 将web01上的代码推送一份至web02
    [root@web01 ~]# scp -rp /code root@172.16.1.12:/

    4)启动服务:nginx+PHP

    # 完善
    [root@web02 ~]# groupadd -g 666 www
    [root@web02 ~]# useradd -u 666 -g 666 www
    [root@web02 ~]# chown -R www.www /code/   #因为推送过来的代码权限发生了变化,所以需要做一次修改
    [root@web02 ~]# systemctl restart nginx php-fpm
    [root@web02 ~]# systemctl enable nginx php-fpm

    5)配置域名劫持

    若为windows,找 C:WindowsSystem32driversetchosts
    若为macos: ,请编辑 /etc/hosts

             10.0.0.12 blog.ld.com

    6)测试

     将web01的nginx关掉,看web02能否正常登录 

    3.nfs共享存储

    扩展多个节点,会导致静态资源的丢失:例如user上传了一份图片到了web01上,当user2进行查看时,却被分配到了web02上,而此时我们的web02并没有user1上传的图片,导致看到的资源不一致。而且太多的节点导致空间不足,这时候我们引入了nfs存储,可保证静态资源的一致,而且节省了web节点的空间,极大的解决了容量不足的问题。

    安装一台NFS服务器,配置并共享一个目录
    
    #第一步:安装nfs服务器
    思路:任何一个服务,都是  安装  配置  启动。
    #安装配置
    [root@nfs ~]# yum install nfs-utils -y
    [root@nfs ~]# vim /etc/exports
    /data/blog 172.16.1.0/24(rw,sync,all_squash,anonuid=666,anongid=666)
    #重启
    [root@nfs ~]# systemctl restart nfs
    [root@nfs ~]# systemctl enable nfs
    #初始化环境
    [root@nfs ~]# groupadd -g 666 www
    [root@nfs ~]# useradd -u666 -g666 www
    [root@nfs ~]# rm -rf /data/
    [root@nfs ~]# mkdir /data/blog -p
    [root@nfs ~]# chown -R www.www /data/blog/
    
    #第二步:找到网站静态资源存放的路径,然后进行NFS的共享。( 不是必须的 )
    地址:http://blog.ld.com/wp-content/uploads/2020/04/timg.jpeg
            
    路径:/code/wordpress/wp-content/uploads/2020/04/timg.jpeg
            
    需要共享的目录:/code/wordpress/wp-content/uploads/
    
    #第三步:在所有的web节点执行如下操作:
    [root@web02 ~]# mount -t nfs 172.16.1.13:/data/blog /code/wordpress/wp-content/uploads/
    [root@web01 ~]# mount -t nfs 172.16.1.13:/data/blog /code/wordpress/wp-content/uploads/
    #第三步:测试
    web02上传  web01查看,如果没有问题,说明共享存储对接完成。

     4.负载均衡lb

     多个web节点访问有2种方式:DNS轮询和负载均衡。

       DNS依赖web节点为公网ip,这样导致服务器不安全,而且DNS轮询机制没有健康检查的功能,体验较差

       负载均衡仅需要一台服务器对外,所有后端的节点走的是内网,这样保证了其安全性,而且它对后端的web节点有健康检查的机制。

    #1.负载均衡的blog配置:10.0.0.14
        [root@lb01 ~]# cat /etc/nginx/conf.d/proxy_blog.ld.com.conf
         upstream blog {
                      server 172.16.1.11:80;
                      server 172.16.1.12:80;
                      }
            server {
                     listen 80;
                     server_name blog.ld.com;
                          location / {
                                      proxy_pass http://blog;
                                      include proxy_params;
                            }
           }
     
           [root@lb ~ 20:54:55]# cat /etc/nginx/proxy_params
                     proxy_http_version 1.1;
                     proxy_set_header Connection "";
                     proxy_set_header Host $http_host;
                     proxy_set_header X-Real-IP $remote_addr;
                     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                     proxy_connect_timeout 30;
                     proxy_send_timeout 60;
                     proxy_read_timeout 60;
                     proxy_buffering on;
                     proxy_buffer_size 32k;
                     proxy_buffers 4 128k;
     
            #2.域名劫持
              C:WindowsSystem32driversetchosts
                     10.0.0.14    blog.ld.com
     
           #3.在浏览器访问
                 blog.ld.com
  • 相关阅读:
    软件工程第四次作业
    软件工程第三次作业-------(李利思 岳庆)
    软件工程第二次作业
    《软件工程》第一次作业
    构建之法书评
    个人阅读作业三
    对MSF八个原则的思考
    个人阅读作业2 软工方法论无用?
    代码复审
    结对编程总结 1175 1176
  • 原文地址:https://www.cnblogs.com/llddhh/p/12846712.html
Copyright © 2011-2022 走看看