ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

服务器硬件、部署LNMP动态网站、部署wordpress、配置web与数据库服务分离、配置额外的web服务器

服务器硬件、部署LNMP动态网站、部署wordpress、配置web与数据库服务分离、配置额外的web服务器

目录

day01

项目实战目标

单机安装基于LNMP结构的WordPress网站

基本环境准备

配置nginx

配置数据库服务

部署wordpress

web与数据库服务分离

准备数据库服务器

迁移数据库

配置额外的web服务器


day01

项目实战目标

主机名IP地址
client01192.168.88.10/24
web1192.168.88.11/24
web2192.168.88.12/24
web3192.168.88.13/24
database192.168.88.21/24
nfs192.168.88.31/24
haproxy01192.168.88.5
haproxy02192.168.88.6

单机安装基于LNMP结构的WordPress网站

基本环境准备

  • 创建虚拟机,并配置防火墙、SELINUX、主机名、IP地址、yum
  • 配置ansible管理环境

虚拟机ip与名称:web1 192.168.88.11

# 1. 创建工作目录[root@pubserver ~]# mkdir -p project01/files[root@pubserver ~]# cd project01/# 2. 创建主配置文件、主机清单文件、yum配置文件[root@pubserver project01]# vim ansible.cfg [defaults]inventory = inventoryhost_key_checking = false[root@pubserver project01]# vim inventory [webservers]web1 ansible_host=192.168.88.11[all:vars]ansible_ssh_user=rootansible_ssh_pass=a[root@pubserver project01]# vim files/local88.repo [BaseOS]name = BaseOSbaseurl = ftp://192.168.88.240/dvd/BaseOSenabled = 1gpgcheck = 0[AppStream]name = AppStreambaseurl = ftp://192.168.88.240/dvd/AppStreamenabled = 1gpgcheck = 0[rpms]name = rpmsbaseurl = ftp://192.168.88.240/rpmsenabled = 1gpgcheck = 0
  • 配置yum服务
[root@pubserver project01]# vim 01-upload-repo.yml ---- name: config repos.dhosts: alltasks:- name: delete repos.dfile:path: /etc/yum.repos.dstate: absent- name: create repos.dfile:path: /etc/yum.repos.dstate: directorymode: '0755'- name: upload local88copy:src: files/local88.repodest: /etc/yum.repos.d/[root@pubserver project01]# ansible-playbook 01-upload-repo.yml 

配置nginx

  • 配置web1服务
[root@pubserver project01]# vim 02-config-web1.yml ---- name: config web1hosts: webserverstasks:- name: install pkgs   # 安装软件包yum:name:- nginx- mysql-server- php-mysqlnd- php-fpm- php-jsonstate: present- name: start service   # 循环启动多个服务service:name: "{{item}}"state: startedenabled: yesloop:- nginx- php-fpm- mysqld[root@pubserver project01]# ansible-playbook 02-config-web1.yml
  • 编写php文件,并访问http://192.168.88.11/测试
[root@web1 ~]# vim /usr/share/nginx/html/index.php<?phpphpinfo();?>

  • 测试完成后,删除文件
[root@web1 ~]# rm -f /usr/share/nginx/html/index.php 

配置数据库服务

  • 安装Wordpress网站,需要数据库,创建数据库并授权
# 1. 编写用于创建数据库和用户的脚本[root@pubserver project01]# vim files/config_mysql.sh#!/bin/bashmysql -e "create database wordpress character set utf8mb4"mysql -e "create user wpuser01@localhost identified by 'wordpress'"mysql -e "grant all privileges on wordpress.* to wpuser01@localhost"# 2. 通过ansible的script模块执行脚本[root@pubserver project01]# vim 03-config-mysql.yml ---- name: config mysqlhosts: web1tasks:- name: create databasescript: files/config_mysql.sh[root@pubserver project01]# ansible-playbook 03-config-mysql.yml# 3. 测试账号,如果可以成功登陆mysql,则数据库和用户创建正确[root@web1 ~]# mysql -uwpuser01 -pwordpress -hlocalhost wordpress

部署wordpress

  • 复制程序文件到nginx工作目录
# 1. 拷贝wordpress到web1[root@myhost ~]# scp /linux-soft/s2/zzg/project01_soft/wordpress-6.1.1-zh_CN.tar.gz 192.168.88.11:/root/# 2. 解压并复制文件到nginx文档目录[root@web1 ~]# tar xf wordpress-6.1.1-zh_CN.tar.gz  [root@web1 ~]# cp -r wordpress/* /usr/share/nginx/html/# 3. php程序是由php-fpm处理的,php-fpm以apache身份运行[root@web1 ~]# ps aux | grep php-fpmroot        5655  0.0  0.4 395620 19056 ?        Ss   12:13   0:00 php-fpm: master process (/etc/php-fpm.conf)apache      5670  0.0  0.3 412108 13812 ?        S    12:13   0:00 php-fpm: pool www# 4. 为了让php-fpm程序能对html目录进行读写操作,需要为他授予权限[root@web1 ~]# chown -R apache:apache /usr/share/nginx/html/
  • 访问http://192.168.88.11/,根据提示进行初始化

注意:注销登陆后,如果再次登陆,需访问http://192.168.88.11/wp-login.php

web与数据库服务分离

准备数据库服务器

  • 初始化:配置防火墙、SELINUX、主机名、IP地址

         创建虚拟机并登陆   database  192.168.88.21

  • 修改ansible配置环境
[root@pubserver project01]# vim inventory [webservers]web1 ansible_host=192.168.88.11[dbs]database ansible_host=192.168.88.21[all:vars]ansible_ssh_user=rootansible_ssh_pass=a
  • 配置数据库服务器
# 1. 修改yum配置[root@pubserver project01]# ansible-playbook 01-upload-repo.yml # 2. 安装数据库服务,并创建数据库及用户[root@pubserver project01]# vim files/config_mysql2.sh#!/bin/bashmysql -e "create database wordpress character set utf8mb4"mysql -e "create user wpuser01@'%' identified by 'wordpress'"mysql -e "grant all privileges on wordpress.* to wpuser01@'%'"[root@pubserver project01]# vim 04-config-database.yml---- name: config databasehosts: dbstasks:- name: install mysql    # 安装数据库服务yum:name: mysql-serverstate: present- name: start service    # 启动数据库服务service:name: mysqldstate: startedenabled: yes- name: create databasescript: files/config_mysql2.sh[root@pubserver project01]# ansible-playbook 04-config-database.yml 

迁移数据库

  • 发布停服更新通知

  • 注意:默认的wordpress对中文标题支持有bug,需要修改源码修复bug。或者更改【固定链接】配置,如下:

  • 迁移数据库
# 1. 在源服务器上备份数据库中的数据。备份数据库wordpress中的数据到wordpress.sql文件[root@web1 ~]# mysqldump wordpress > wordpress.sql# 2. 将备份文件拷贝到新数据库服务器[root@web1 ~]# scp wordpress.sql 192.168.88.21:/root/# 3. 在新数据库服务器上,导入数据。将wordpress.sql中的数据导入到wordpress数据库中[root@database ~]# mysql wordpress < wordpress.sql # 4. 修改php网站,将数据库服务器地址,指向新数据库服务器[root@web1 ~]# vim /usr/share/nginx/html/wp-config.php ...略...31 /** Database hostname */32 define( 'DB_HOST', '192.168.88.21' );...略...# 5. 停止web1上的数据库服务,wordpress网站仍然可以访问[root@web1 ~]# systemctl stop mysqld[root@web1 ~]# yum remove -y mysql-server# 6. 停止database上的数据库服务,wordpress将不能访问
  • 查询数据库中的内容
[root@database ~]# mysql   # 打开mysql命令行mysql> show databases;     # 查看有哪些数据库mysql> use wordpress;      # 切换到wordpress数据库mysql> show tables;        # 查看wordpress库中有哪些表mysql> select * from wp_posts\G  # 查看wp_posts表中的内容

配置额外的web服务器

  • 初始化:配置防火墙、SELINUX、主机名、IP地址

      创建虚拟机并登陆  web2 192.168.88.12   web3 192.168.88.13

  • 修改ansible配置
[root@pubserver project01]# vim inventory [webservers]web1 ansible_host=192.168.88.11web2 ansible_host=192.168.88.12web3 ansible_host=192.168.88.13[dbs]database ansible_host=192.168.88.21[all:vars]ansible_ssh_user=rootansible_ssh_pass=a
  • 配置web服务
# 1. 配置yum[root@pubserver project01]# ansible-playbook 01-upload-repo.yml # 2. 配置web服务器[root@pubserver project01]# vim 05-config-webservers.yml ---- name: config webservershosts: webserverstasks:- name: install pkgs    # 安装软件包yum:name:- nginx- php-mysqlnd- php-fpm- php-jsonstate: present- name: start service   # 循环启动多个服务service:name: "{{item}}"state: startedenabled: yesloop:- nginx- php-fpm[root@pubserver project01]# ansible-playbook 05-config-webservers.yml
  • 将web1的html目录打包并下载
[root@pubserver project01]# vim 06-fetch-web1.yml ---- name: copy webhosts: web1tasks:- name: compress html    # 压缩html目录到/root下archive:path: /usr/share/nginx/htmldest: /root/html.tar.gzformat: gz- name: download html    # 下载压缩文件fetch:src: /root/html.tar.gzdest: files/flat: yes[root@pubserver project01]# ansible-playbook 06-copy-web.yml 
  • 释放html压缩包到web2和web3上
[root@pubserver project01]# vim 07-deploy-web23.yml---- name: deploy web2 and web3hosts: web2,web3tasks:- name: unarchive to web    # 解压文件到指定位置unarchive:src: files/html.tar.gzdest: /usr/share/nginx/[root@pubserver project01]# ansible-playbook 07-deploy-web23.yml
  • 访问http://192.168.88.12/和http://192.168.88.13/将会得到与http://192.168.88.11/相同的页面
返回列表