CentOS 7 编译安装 LAMP-WordPress 环境

一、服务器架构

1、架构图

在这里插入图片描述

2、服务器

IP 主机名 功能
192.168.1.6 dns.server 内网 DNS 解析服务器
192.168.1.7 web.server LAMP 环境
192.168.1.8 nfs.server 静态文件 NFS 服务器
192.168.1.9 backup.server 数据备份服务器

3、软件版本

本文所使用的安装包已打包上传至 csdn 资源库:lamp_wordpress_4.7.3.zip

软件名称 版本
Linux CentOS 7.9
Apache httpd 2.4
MySQL 5.6.31
PHP 7.2.17
WordPress 4.7.3

二、服务器标准环境配置

1、更改主机名

# 四台主机分别设置主机名
hostnamectl set-hostname dns.server
hostnamectl set-hostname web.server
hostnamectl set-hostname nfs.server
hostnamectl set-hostname backup.server

2、关闭防火墙,SELinux

systemctl stop firewalld.service && systemctl disable firewalld.service
setenforce 0 && sed -i 's/enforcing/disabled/g' /etc/selinux/config

3、配置 YUM 源

rm -rf /etc/yum.repos.d/*
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
yum clean all && yum makecache

4、基本工具安装

yum install -y vim wget net-tools bash-completion
source /usr/share/bash-completion/bash_completion

三、DNS 服务器搭建

1、安装命令

[root@dns ~]# yum install -y bind

2、修改配置

修改 /etc/named.conf 文件,添加 any;,表示允许所有地址访问本 DNS 服务器
在这里插入图片描述

修改 /etc/named.rfc1912.zones,追加以下内容,liuli.com 为自定义的域名

zone "liuli.com" IN {
    
    
        type master;
        file "liuli.com";
        allow-update {
    
     none; };
};

创建域名文件 liuli.com, 该文件名必须与 /etc/named.rfc1912.zonesfile 定义的文件名一致

[root@dns ~]# cd /var/named/
[root@dns named]# cp -p named.localhost liuli.com

在域名文件 liuli.com 追加需要解析的记录值

$TTL 1D
@       IN SOA  @ rname.invalid. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      @
        A       127.0.0.1
        AAAA    ::1
# 将 blog.liuli.com 解析到 192.168.1.7 服务器上
blog    A       192.168.1.7

验证配置正确性

[root@dns named]# named-checkzone liuli.com liuli.com 
zone liuli.com/IN: loaded serial 0
OK

3、启动服务

[root@dns named]# systemctl start named.service && systemctl enable named.service
Created symlink from /etc/systemd/system/multi-user.target.wants/named.service to /usr/lib/systemd/system/named.service.

4、window 客户端配置

DNS服务器添加自己搭建的 DNS 服务器 IP 地址
在这里插入图片描述
使用 nslookup 命令查看解析结果
在这里插入图片描述

四、NFS 服务器搭建

1、安装 nfs

[root@nfs ~]# yum install -y rpcbind nfs-utils

2、添加共享目录

创建共享目录 /nfs/share

[root@nfs ~]# mkdir -p /nfs/share

编辑配置文件 /etc/exports,添加以下内容

/nfs/share	*(rw,sync,no_root_squash)

3、启动服务

[root@nfs ~]# systemctl start rpcbind.service && systemctl enable rpcbind.service
[root@nfs ~]# systemctl start nfs.service && systemctl enable nfs.service
Created symlink from /etc/systemd/system/multi-user.target.wants/nfs-server.service to /usr/lib/systemd/system/nfs-server.service.

4、web.server 挂载 nfs

web.server 服务器的 /www 目录 ,挂载 nfs 分区,以保证该目录空间充足

# 先安装命令
[root@web ~]# yum install -y rpcbind nfs-utils

# 查看 nfs 服务是否正常
[root@web ~]# showmount -e 192.168.1.8
Export list for 192.168.1.8:
/nfs/share *

# 挂载命令
[root@web ~]# mkdir /www/
[root@web ~]# mount -t nfs 192.168.1.8:/nfs/share /www/

# 查看挂载后的磁盘
[root@web ~]# df -Th |  grep nfs4
192.168.1.8:/nfs/share  nfs4       17G  1.6G   16G   10% /www

五、LAMP 服务器搭建

1、Mysql 安装

软件版本 安装目录 数据目录 端口
mysql-5.6.31 /usr/local/mysql /usr/local/mysql/data 3306
  • 依赖软件安装
[root@web ~]# yum install -y git gcc gcc-c++ cmake pcre-devel ncurses-devel openssl-devel libcurl-devel bison autoconf
  • 创建 mysql 账号
[root@web ~]# groupadd mysql
[root@web ~]# useradd -r -g mysql -s /sbin/nologin mysql
  • 解压源码包
[root@web ~]# wget https://cdn.mysql.com/archives/mysql-5.6/mysql-5.6.31.tar.gz
[root@web ~]# tar -zxvf mysql-5.6.31.tar.gz
[root@web ~]# cd mysql-5.6.31/
  • cmake 配置
cmake . \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql/ \
-DMYSQL_DATADIR=/usr/local/mysql/data \
-DENABLED_LOCAL_INFILE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DMYSQL_TCP_PORT=3306 \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DWITH_EXTRA_CHARSETS=all \
-DMYSQL_USER=mysql

参数说明

-DCMAKE_INSTALL_PREFIX 		// 指定安装目录
-DMYSQL_DATADIR 			// 数据目录
-DENABLED_LOCAL_INFILE		// 开启加载外部文件,1 开启 0 关闭
-DWITH_INNOBASE_STORAGE_ENGINE	// 将 InnoDB 存储引擎静态编译到服务器
-DMYSQL_TCP_PORT			// 端口
-DDEFAULT_CHARSET			// 字符集
-DDEFAULT_COLLATION			// 字符集校验规则
-DWITH_EXTRA_CHARSETS		// 拓展字符集
-DMYSQL_USER				// 用户身份
  • make 编译安装
[root@web mysql-5.6.31]# make && make install
  • 初始化数据库
# 将目录权限赋予 mysql 用户
[root@web mysql-5.6.31]# chown -R mysql:mysql /usr/local/mysql/
[root@web mysql-5.6.31]# rm -f /etc/my.cnf
[root@web mysql-5.6.31]# cd /usr/local/mysql/
# 执行初始化脚本
[root@web mysql]# scripts/mysql_install_db --user=mysql
# 复制启动脚本
[root@web mysql]# cp support-files/mysql.server /etc/init.d/mysql.server
  • 启动服务
[root@web mysql]# service mysql.server start
Starting MySQL..... SUCCESS!
  • 添加环境变量
[root@web mysql]# echo 'export PATH=$PATH:/usr/local/mysql/bin/' >> ~/.bashrc 
[root@web mysql]# source ~/.bashrc
  • 设置数据库 root 密码
[root@web mysql]# mysqladmin -u root password '123456Aa.'

登录 mysql

[root@web mysql]# mysql -uroot -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.6.31 Source distribution

Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| test               |
+--------------------+
4 rows in set (0.00 sec)

3、httpd 安装

版本 安装路径
httpd-2.4.37 /usr/local/apache2
  • 依赖软件安装
# 安装 apr
[root@web ~]# wget https://archive.apache.org/dist/apr/apr-1.5.2.tar.gz
[root@web ~]# tar -zxvf apr-1.5.2.tar.gz
[root@web ~]# cd apr-1.5.2/
[root@web apr-1.5.2]# ./configure && make && make install

# 安装 apr-util
[root@web ~]# wget https://archive.apache.org/dist/apr/apr-util-1.5.4.tar.gz
[root@web ~]# tar -zxvf apr-util-1.5.4.tar.gz
[root@web ~]# cd apr-util-1.5.4/
[root@web apr-util-1.5.4]# ./configure --with-apr=/usr/local/apr/bin/apr-1-config && make && make install
  • 解压源码包
[root@web ~]# wget http://archive.apache.org/dist/httpd/httpd-2.4.37.tar.gz
[root@web ~]# tar -zxvf httpd-2.4.37.tar.gz
[root@web ~]# cd httpd-2.4.37/
  • configure 配置
./configure \
--enable--modules=all \
--enable--mods-shared=all \
--enable-so \
--enable-rewrite \
--with-pcre \
--enable-ssl \
--with-mpm=prefork \
--with-apr=/usr/local/apr/bin/apr-1-config \
--with-apr-util=/usr/local/apr/bin/apu-1-config

参数说明

--enable--modules=all 		// 加载所有支持的模块
--enable--mods-shared=all 	// 共享方式加载大部分常用模块
--enable-so 				// 启动动态模块加载功能
--enable-rewrite 			// 启用 url 地址重写功能
--with-pcre 				// 支持正则表达式
--enable-ssl 				// 编译 ssl 模块,支持 https
--with-mpm=prefork 			// 插入并行处理模块
--with-apr=/usr/local/apr/bin/apr-1-config 		// 指定 apr 路径
--with-apr-util=/usr/local/apr/bin/apu-1-config // 指定 apr-util 路径
  • make 编译安装
[root@web httpd-2.4.37]# make && make install
  • 添加环境变量
[root@web apache2]# echo 'export PATH=$PATH:/usr/local/apache2/bin/' >> ~/.bashrc
[root@web apache2]# source ~/.bashrc
  • 启动服务
# 复制启动脚本
[root@web apache2]# cp /usr/local/apache2/bin/apachectl /etc/init.d/httpd
[root@web apache2]# service httpd start

输入地址验证,出现该页面表示安装成功
在这里插入图片描述

4、PHP 安装

  • 依赖软件安装
[root@web ~]# yum install -y libxml2-devel libjpeg-devel libpng-devel freetype-devel
  • 解压源码包
[root@web ~]# wget https://www.php.net/distributions/php-7.2.17.tar.gz
[root@web ~]# tar -zxvf php-7.2.17.tar.gz
[root@web ~]# cd php-7.2.17/
  • configure 配置
./configure \
--with-apxs2=/usr/local/apache2/bin/apxs \
--with-mysqli \
--with-pdo-mysql \
--with-zlib \
--with-curl \
--enable-zip \
--with-gd \
--with-freetype-dir \
--with-jpeg-dir \
--with-png-dir \
--enable-sockets \
--with-xmlrpc \
--enable-soap \
--enable-opcache \
--enable-mbstring \
--enable-mbregex \
--enable-pcntl \
--enable-shmop \
--enable-sysvmsg \
--enable-sysvsem \
--enable-sysvshm \
--enable-calendar \
--enable-bcmath
  • make 编译安装
[root@web php-7.2.17]# make && make install

查看是否生成 libphp7.so 文件,存在则安装成功

[root@web php-7.2.17]# ls /usr/local/apache2/modules/libphp7.so 
/usr/local/apache2/modules/libphp7.so

5、httpd 配置

  • 打开配置文件 /usr/local/apache2/conf/httpd.conf,修改添加以下内容:
ServerName localhost:80		# 添加主机名
LoadModule negotiation_module modules/mod_negotiation.so	# 此模块打开注释
Include conf/extra/httpd-languages.conf						# 扩展配置文件支持
# 在 LoadModule php7_module modules/libphp7.so 行后,添加下面两行内容,开启对 php 文件支持,
AddHandler php7-script .php
AddType text/html .php
# 添加默认首页
<IfModule dir_module>
    DirectoryIndex index.php index.html
</IfModule>
  • 打开配置文件 /usr/local/apache2/conf/extra/httpd-languages.conf,修改添加以下内容:
# 将默认语言改为 zh-CN
DefaultLanguage zh-CN
# 将 zh-CN 提到第一个
LanguagePriority zh-CN en ca cs ··· ···
  • 测试页面
[root@web ~]# rm -f /usr/local/apache2/htdocs/index.html
[root@web ~]# vim /usr/local/apache2/htdocs/index.php
<?php
    phpinfo();
?>
  • 重启服务
[root@web ~]# service httpd restart

输入地址验证,出现该页面表示安装成功
在这里插入图片描述

6、wordpress 部署

  • 下载 wordpress 安装包
[root@web ~]# mkdir -p /www/blog
[root@web ~]# wget https://cn.wordpress.org/wordpress-4.7.3-zh_CN.tar.gz
[root@web ~]# tar -zxvf wordpress-4.7.3-zh_CN.tar.gz -C /www/blog/
[root@web ~]# chown -R daemon:daemon /www/blog/wordpress/
  • 配置虚拟主机

打开配置文件 /usr/local/apache2/conf/httpd.conf

# Virtual hosts
Include conf/extra/httpd-vhosts.conf

# 默认配置为拒绝所有请求,修改 Require all denied 改为 Require all granted
<Directory />
    AllowOverride none
    Require all granted
</Directory>

打开虚拟主机配置文件 /usr/local/apache2/conf/extra/httpd-vhosts.conf,添加一个虚拟主机块

<VirtualHost *:80>
    DocumentRoot "/www/blog/wordpress"
    ServerName blog.liuli.com
    ErrorLog "logs/blog.liuli.com-error_log"
    CustomLog "logs/blog.liuli.com-access_log" common
</VirtualHost>
  • 重启服务
[root@web ~]# service httpd restart
  • 创建数据库 blog
mysql> create database blog default charset utf8;
Query OK, 1 row affected (0.00 sec)
  • 浏览器安装博客

输入域名 http://blog.liuli.com/,进入安装界面

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

六、Backup 服务器搭建

web.server 服务器的 /www 目录进行实时备份,以保证网站的数据安全。

1、安装 rsync、inotify工具

[root@web ~]# yum install -y rsync
[root@web ~]# yum install -y epel-release
[root@web ~]# yum install -y inotify-tools
# 备份服务器也要安装 rsync
[root@backup ~]# yum install -y rsync

2、配置免密登录

# 生成一对公/私密钥,直接按回车确认
[root@web ~]# ssh-keygen 
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:TF/lP3mkY61pyKftAloYipaKPVnJRca3WtdTdmXh/8I [email protected]
The key's randomart image is:
+---[RSA 2048]----+
|     .        ..=|
|      + .    o+..|
|     o ... ..o.o.|
|      .o+...o  =o|
|   . = +S+.  .+o=|
|    B o . o. + ++|
| o =     o .o E .|
|. =     .   .= . |
|   .        .oo  |
+----[SHA256]-----+

# 使用命令将公钥发送到 backup.server 主机
[root@web ~]# ssh-copy-id [email protected]

配置完之后 rsync 工具可以免密码同步数据

3、同步脚本

编辑 inotify_www.sh 实时同步脚本

#! /usr/bin/env bash
# Auth: liuli
# Version: v1.0, 2021/10/25
# Sys: CentOS 7.9
# Features: 实现 /wwww/ 目录数据实时同步至 backup.server 上

inotifywait -mrq -e create,delete,modify,attrib,move /www/ | while read events
do
    rsync -az --delete /www/ [email protected]:/www/
    echo "`date +%F%T`:出现事件 $events" >> /var/log/rsync.log 2>&1
done

后台运行该脚本

[root@web ~]# nohup sh inotify_www.sh &

Guess you like

Origin blog.csdn.net/qq_39680564/article/details/120939446