分布式LNMP部署

文章目录

部署分布式WordPress站点

实验环境

主机名 主机IP 角色身份
web01 10.0.0.7 web服务器
web02 10.0.0.8 web服务器
nfs 10.0.0.31 实现网络文件共享
db01 10.0.0.51 数据内容存放

实验拓扑图

任务需求

1)web01和web02主机提供NGINXweb功能

2)部署站点WordPress、Wecenter 两个网站

3)数据要分离,静态资源放在nfs上,数据内容放在db01上

任务实施

搭建数据库mysql
1、安装数据库
php 复制代码
#将上传的数据库rpm包进行安装
yum -y localinstall mysql57/*
[root@db01 ~]# systemctl start mysqld
2、修改初始化密码
shell 复制代码
[root@db01 ~]# mysqladmin -uroot -p$(awk '/temporary password/{print}' /var/log/mysqld.log ) passwd 'Jy123.com'
3、为站点创建数据库
php 复制代码
[root@db01 ~]# mysql -uroot -pJy123.com
mysql> create database wordpress;
Query OK, 1 row affected (0.00 sec)
mysql> create database wecenter;
创建WordPress的用户和授权
mysql> CREATE USER 'wpadm'@'%' IDENTIFIED BY 'Jy123.com';
Query OK, 0 rows affected (0.00 sec)

mysql> GRANT ALL PRIVILEGES ON wordpress.* TO 'wpadm'@'%';
Query OK, 0 rows affected (0.00 sec)
创建wecenter的用户和授权
mysql> CREATE USER 'weadm'@'%' IDENTIFIED BY 'Jy123.com';
Query OK, 0 rows affected (0.00 sec)

mysql> GRANT ALL PRIVILEGES ON wecenter.* TO 'weadm'@'%';
Query OK, 0 rows affected (0.00 sec)

mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)

完成两个数据库用户的创建和授权

#注释:
      grant 固定字段 授权
      all 定义权限,表示所有的权限
      on  固定字段
      库名.表名  *通配所有
      to   固定字段
      username@客户端     %通配所有
      identified by '密码'  固定字段,配置前面username的密码   
4、为wecenter站点数据库
php 复制代码
[root@db01 ~]# mysql -uroot -pJy123.com
mysql> create database wecenter;
Query OK, 1 row affected (0.00 sec)

mysql> grant all on wecenter.* to weadm@'%' identified by'Jy123.com';
Query OK, 0 rows affected, 1 warning (0.00 sec)

#注释:
      grant 固定字段 授权
      all 定义权限,表示所有的权限
      on  固定字段
      库名.表名  *通配所有
      to   固定字段
      username@客户端     %通配所有
      identified by '密码'  固定字段,配置前面username的密码   

5、重启数据库

plain 复制代码
[root@db01 ~]# systemctl restart mysqld
[root@db01 ~]# systemctl enable mysqld
[root@db01 ~]# systemctl status mysqld
搭建nfs网络文件系统
服务端
php 复制代码
#语法:
      共享目录的路径    客户端地址(挂载属性)
             共享目录的路径 就是需要提供给客户使用的目录
             客户端地址   IP  域名   *通配所有
      挂载属性
          ro
          rw
          all_squash  指定客户端只有访问到nfs服务端,身份都是nfs的程序用户
          anonuid     指定程序用户的uid
          anongid     指定程序用户的gid

1、编辑配置文件
[root@nfs ~]# vim   /etc/exports    #默认是空的
/data/web  *(rw,all_squash,anonuid=666,anongid=666)

2、创建对应的用户、组以及目录,并修改目录归属
[root@nfs ~]# groupadd -g666 www
[root@nfs ~]# useradd -g666 -u666 -M -s /sbin/nologin www
[root@nfs ~]# mkdir -p /data/web
[root@nfs ~]# chown -R www.www /data/web/
[root@nfs ~]# systemctl start nfs rpcbind
[root@nfs ~]# systemctl enable nfs rpcbind
Created symlink from /etc/systemd/system/multi-user.target.wants/nfs-server.service to /usr/lib/systemd/system/nfs-server.service.

 3、检查是否搭建成功
[root@nfs ~]# showmount -e
Export list for nfs:
/data/web *
客户端:web01和web02一样的操作
php 复制代码
#1、测试是否可以访问
[root@web01 ~]# showmount -e 10.0.0.31  【服务端的IP】 
Export list for 10.0.0.31:
/data/web *

#2、将nfs挂载到本地
临时挂载
[root@web01 ~]# mkdir /web
[root@web01 ~]# mount 10.0.0.31:/data/web /web

永久挂载
#web01和web02的操作
echo  "10.0.0.31:/data/web    /web   nfs    defaults  0  0" >> /etc/fstab
    
注释:
    如果web中有数据就执行下面的操作
    1、mv   /web/*   /opt
    挂载完毕之后
    2、mv  /opt*   /web
安装Nginx和PHP
1、web01和web02安装Nginx,一样的操作
php 复制代码
yum安装 nginx1.14 php7.1 mysql5.7

1、使用官方yum源进行安装Nginx
[root@web01 ~]# cat  /etc/yum.repos.d/nginx.repo
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/7/$basearch/
gpgcheck=0
enabled=1
[root@web01 ~]# yum -y install nginx

2、创建程序用户
[root@web01 ~]# groupadd www -g 666
[root@web01 ~]# useradd www -u 666 -g 666 -s /sbin/nologin -M

3、修改配置文件
[root@web01 nginx]# sed -i '/^user/c user www;' /etc/nginx/nginx.conf
[root@web01 nginx]# cat /etc/nginx/nginx.conf |head -10
user www;
worker_processes  auto;

error_log  /var/log/nginx/error.log notice;
pid        /var/run/nginx.pid;


events {
    worker_connections  1024;
2、web01和web02安装PHP,一样的操作
1、使用第三方扩展 epel 源安装 php7.1
bash 复制代码
1、使用第三方扩展 epel 源安装 php7.1
#1.移除旧版php
[root@web01 nginx]# yum remove php-mysql-5.4 php php-fpm php-common -y
2、安装扩展源(epel-release-7、webtatic-release)
bash 复制代码
# 下载epel-release-7-14.noarch.rpm(归档版本,稳定可用)
wget https://archives.fedoraproject.org/pub/archive/epel/7/x86_64/Packages/e/epel-release-7-14.noarch.rpm
# 安装该rpm包
rpm -Uvh epel-release-7-14.noarch.rpm
注意:webtatic 仓库已经停止维护,对 CentOS 7 的支持也已终止,建议尽量避免使用
rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
3、配置第三方源,使用 Remi 仓库
bash 复制代码
安装Remi-release-7
rpm -Uvh https://rpms.remirepo.net/enterprise/remi-release-7.rpm
安装yum-utils(提供yum-config-manager工具)
yum install -y yum-utils
启用Remi的PHP 7.4仓库(根据需要替换为5.6/7.2/8.0等)
yum-config-manager --enable remi-php71

清理缓存
[root@web01 nginx]# yum clean all
[root@web01 nginx]# yum makecache
4、安装php7.1版本
bash 复制代码
[root@web01 nginx]# 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
5 、替换php-fpm运行的用户和组,启动服务
bash 复制代码
[root@web01 php-fpm.d]# sed -i '/^user/c user = www' /etc/php-fpm.d/www.conf
[root@web01 php-fpm.d]# sed -i '/^group/c group = www' /etc/php-fpm.d/www.conf


[root@web01 php-fpm.d]# systemctl start php-fpm
[root@web01 php-fpm.d]# systemctl enable php-fpm
Created symlink from /etc/systemd/system/multi-user.target.wants/php-fpm.service to /usr/lib/systemd/system/php-fpm.service.
部署WordPress网页
web01和web02是一样的操作
编辑配置文件
bash 复制代码
[root@web01 conf.d]# cat wordpress.conf
server{
    server_name  wordpress.jy.com;
        root  /web/wordpress;
        listen 80;
        index index.php index.html;


      #设置大小可以上传图片
      client_max_body_size 90M;

      location ~ \.php$ {
      # 定义php页面的路径,如果跟默认的root一样,可以不写
      # 定义php-fpm的访问方式
      fastcgi_pass   127.0.0.1:9000;
      # 定义php的索引文件名,跟站点默认index要匹配
      fastcgi_index  index.php;
      # 定义fastcgi的解析路径
      fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
      include        fastcgi_params;
      }

}
部署wecenter网页
web01和web02是一样的操作
编辑配置文件
bash 复制代码
[root@web01 ~]# cat /etc/nginx/conf.d/wecenter.conf
server{
    server_name  wecenter.jy.com;
        root  /web/wecenter;
        listen 80;
        index index.php index.html;


      #设置大小可以上传图片
      client_max_body_size 90M;

      location ~ \.php$ {
      # 定义php页面的路径,如果跟默认的root一样,可以不写
      # 定义php-fpm的访问方式
      fastcgi_pass   127.0.0.1:9000;
      # 定义php的索引文件名,跟站点默认index要匹配
      fastcgi_index  index.php;
      # 定义fastcgi的解析路径
      fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
      include        fastcgi_params;
      }
启动Nginx、PHP服务
shell 复制代码
systemctl start nginx php-fpm
systemctl enable nginx php-fpm
修改host文件,域名访问
plain 复制代码
物理机修改
路径:C:\Windows\System32\drivers\etc
10.0.0.7  wecenter.jy.com    wordpress.jy.com
10.0.0.8  wecenter.jy.com    wordpress.jy.com
访问WordPress完成网页注册
访问wecenter完成网页注册

这里使用web02的IP进行访问,因为我们同时在web01和web02部署了两个域名一样的网站,目前没有上负载均衡,所以使用域名访问的话只能看到web01的,或者可以在完全注册完成之后,把web01的Nginx PHP暂停访问测试,web02是否可以正常访问

测试web02服务能否访问
bash 复制代码
1、暂停web01的Nginx和PHP
[root@web01 ~]# systemctl stop nginx  php-fpm
[root@web01 ~]#

使用浏览器访问域名

相关推荐
Wang's Blog6 小时前
RabbitMQ: 声明式配置简化管理
分布式·rabbitmq
叫致寒吧6 小时前
zookeeper与kafka
分布式·zookeeper·云原生
赵得C6 小时前
2025下半年软件设计师考前几页纸
java·开发语言·分布式·设计模式·性能优化·软考·软件设计师
西***63477 小时前
全场景覆盖・全流程智控:分布式解决方案让多功能厅 “不止于多”
分布式
踏浪无痕7 小时前
Nacos到底是AP还是CP?一文说清楚
分布式·后端·面试
踏浪无痕7 小时前
深入JRaft:Nacos配置中心的性能优化实践
分布式·后端·面试
青春不流名7 小时前
如何在Kafka中使用SSL/TLS证书认证
分布式·kafka·ssl
hanyi_qwe8 小时前
ZooKeeper+Kafka
分布式·zookeeper·kafka
2501_939909058 小时前
Zookeeper及Kafka
分布式·zookeeper·云原生