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
  • 相关阅读:
    Android AHandle AMessage
    android java 与C 通过 JNI双向通信
    android 系统给应用的jar
    UE4 unreliable 同步问题
    UE4 difference between servertravel and openlevel(多人游戏的关卡切换)
    UE4 Run On owing Client解析(RPC测试)
    UE4 TSubclassOf VS Native Pointer
    UE4 内容示例网络同步Learn
    UE4 多人FPS VR游戏制作笔记
    UE4 分层材质 Layerd Materials
  • 原文地址:https://www.cnblogs.com/llddhh/p/12846712.html
Copyright © 2011-2022 走看看