基于Centos7.9部署编译安装LAMP分离式部署 CentOS7.9编译安装LAMPLinuxApacheMysqlPHP分离式部署环境规划节点角色操作系统 软件版本IP 地址备注Web 应用服务器CentOS 7.9 x86_64Apache/2.4.67PHP 8.2.0192.168.30.153集成 Apache 反向代理与 PHP-FPM负责处理动态请求及连接数据库数据库服务器MySQL 8.0.12192.168.30.154独立部署仅开放数据库端口供内网调用关键路径与工具汇总为方便后续操作查阅现将各组件的关键路径与工具汇总如下Apache (Web 服务器)配置文件目录/usr/local/apache/conf/网站根目录/usr/local/apache/htdocs/Discuz 站点目录/usr/local/apache/htdocs/web7.yxl.com/MySQL (数据库服务器)客户端工具路径/usr/local/mysql/bin/mysql登录命令示例/usr/local/mysql/bin/mysql -uroot -p1数据存放路径默认/usr/local/mysql/data/配置文件通常/etc/my.cnf或/usr/local/mysql/my.cnfPHP (解析器)安装主目录/usr/local/php82/PHP-FPM 启动程序/usr/local/php82/sbin/php-fpm配置文件 (php.ini)/usr/local/php82/etc/php.iniFPM 进程配置/usr/local/php82/etc/php-fpm.conf(及php-fpm.d/www.conf)Discuz (应用程序)完整程序文件路径/usr/local/apache/htdocs/web7.yxl.com/注此目录下应包含upload文件夹内的所有文件如index.php,config,data,uc_client等。压缩包存放位置压缩包包存放位置/usr/local/src/lamp/CentOS 7.9- 配置阿里镜像源两台服务器都部署#https://developer.aliyun.com/article/704987可以去这个网站找源curl-o/etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repoCentOS 7.9- 配置阿里镜像源 -epelcurl-o/etc/yum.repos.d/epel.repo https://mirrors.aliyun.com/repo/epel-7.repo清楚缓存yun clean all创建缓存yum makecache二前置基础配置两台服务器全部部署系统:CentOS 7.9 (kernel 3.10)内存建议 ≥ 2G,硬盘 ≥ 20G,务必能联网把 5 个源码包统一放到 /usr/local/src/lamp放源码的目录把discuz5.0也放入discuz包在这里下载mkdir-pv/usr/local/src/lampcd/usr/local/src/lamp关闭 SELinux否则容易 403/权限诡异setenforce0sed-is/^SELINUX.*/SELINUXdisabled//etc/selinux/config防火墙放行 80/443如果用 firewalldsystemctl stop firewalld如果你坚持开防火墙至少firewall-cmd --add-service{http,https}--permanentfirewall-cmd--reload环境准备必须先执行安装基础编译依赖yum-yinstallgcc gcc-cmakeautoconf automake libtool yum-yinstallpcre pcre-devel zlib zlib-devel openssl openssl-devel yum-yinstalllibxml2 libxml2-develcurlcurl-devel libpng libpng-devel yum-yinstallfreetype freetype-devel libjpeg libjpeg-devel yum-yinstalllibmcrypt libmcrypt-develbzip2bzip2-devel创建运行用户Apache/PHP-FPM 都用它useradd-r-M-s/sbin/nologin apache||true三、编译安装Apache在Web 应用服务器192.168.30.153上部署1、装编译基础依赖必须yum-yinstall\gcc gcc-cmake\pcre-devel openssl-devel expat-devel\bzip2-devel libxml2-devel\curl-devel libpng-devel libjpeg-devel freetype-devel\libzip-devel\wget2、编译安装 APR APR-UTILApache 依赖解压cd/usr/local/src/lamptar-zxfapr-1.7.6.tar.gztar-zxfapr-util-1.6.3.tar.gztar-jxfhttpd-2.4.67.tar.bz2 yum-yinstallbzip23、编译安装 APRcd/usr/local/src/lamp/apr-1.7.6 ./configure--prefix/usr/local/apr;echo$?make-j$(nproc)makeinstall;echo$?4、 编译安装 APR-UTILcd/usr/local/src/lamp/apr-util-1.6.3 ./configure--prefix/usr/local/apr-util --with-apr/usr/local/apr;echo$?make-j$(nproc)makeinstall;echo$?5、编译安装 Apache 2.4.67cd/usr/local/src/lamp/httpd-2.4.67/ ./configure\--prefix/usr/local/apache\--with-apr/usr/local/apr\--with-apr-util/usr/local/apr-util\--enable-so\--enable-ssl\--enable-cgi\--enable-rewrite\--enable-modulesmost\--enable-mpms-sharedall\--with-pcre\--with-zlib\--with-mpmevent;echo$?6、编译安装make-j$(nproc)makeinstall;echo$?7、修改配置文件用户组sed-is/^User daemon/User apache//usr/local/apache/conf/httpd.confsed-is/^Group daemon/Group apache//usr/local/apache/conf/httpd.conf8、启动 Apache 并设置开机自启/usr/local/apache/bin/apachectl startecho/usr/local/apache/bin/apachectl start/etc/rc.localchmod700 /etc/rc.local测试访问浏览器打开 http://服务器IP看到 It works! 说明 Apache 安装成功。四进制安装 MySQL 8.0.12在数据库服务器192.168.30.154上部署1、 解压cd/usr/local/src/lamp/tar-zxfmysql-8.0.12-el7-x86_64.tar.gz-C/usr/local/mv-v/usr/local/mysql-8.0.12-el7-x86_64 /usr/local/mysql2、# 创建用户与数据目录useradd-r-M-s/sbin/nologin mysqlmkdir-pv/data/mysql/mysql3306chown-Rmysql:mysql /data/mysql/mysql3306 /usr/local/mysqlchmod-R755/data/mysql/mysql3306ls-lhrt-d/data/mysql/mysql33063、# 配置 my.cnfcat/etc/my.cnfEOF [mysqld] basedir/usr/local/mysql datadir/data/mysql/mysql3306 socket/data/mysql/mysql3306/mysql3306.sock usermysql port3306 character-set-serverutf8mb4 default-storage-engineINNODB max_connections1000 lower_case_table_names1 [mysql] socket/data/mysql/mysql3306/mysql3306.sock EOF############# ---- ###########support-files/mysql.server 是个启动脚本它会先读 my.cnf再读脚本内的变量优先读取 1/etc/my.cnf 2/etc/mysql/my.cnf 3~/.my.cnf查看 MySQL 配置文件读取优先级最准指令#必须用 mysqld服务端不要用 mysql 客户端 mysqld --help --verbose | grep -E Default options|my\.cnf############# ---- ###########!初始化与启动【记住初始化只能初始化一次如果初始化多次你的元数据信息就被冲了必须删除数据目录重新来做】【若是生产环境有数据那么赶紧提桶跑路把4、 初始化生成临时密码—初始化会生成一个临时 root 密码务必记下/usr/local/mysql/bin/mysqld\--initialize\--usermysql\--basedir/usr/local/mysql\--datadir/data/mysql/mysql3306;echo$?如果这里报 “libnuma.so.1 / libaio.so.1 not found” yum -y install numactl-libs libaio 然后再重新执行一次上面的 --initialize。5、 复制启动脚本cp-av/usr/local/mysql/support-files/mysql.server /etc/init.d/mysqldchmodx /etc/init.d/mysqld6、 设置basedir和datadirsed-i2i\basedir/usr/local/mysql/etc/init.d/mysqldsed-i3i\datadir/data/mysql/mysql3306/etc/init.d/mysqldgrep-Enbasedir|datadir/etc/init.d/mysqldchkconfig--addmysqldchkconfigmysqld on7、 启动 MySQLsystemctl start mysqld查看进程和端口ss-tulanp|grepmysqldpsaxu|grepmysqld##### ps的输出必须注意你的basedir和datadir是上面设置的才是正确的。#####8、修改 MySQL 密码/usr/local/mysql/bin/mysql-uroot-p你的初始密码使用第4点的初始密码密码来重置密码9、进入MySQL后执行ALTERUSERrootlocalhostIDENTIFIED BY你想创建的新密码;FLUSH PRIVILEGES;exit测试MySQL新密码登录/usr/local/mysql/bin/mysql-uroot-p1-e\s输出结果如下五、编译安装PHP在Web 应用服务器192.168.30.153上部署1、编译安装 PHP 8.2.26我给你两套方案你选其一先装 PHP 额外依赖不然 ./configure 一定会少扩展yum-yinstall\oniguruma-devel\sqlite-devel✅ 方案 A更推荐/更像“企业交付”PHP-FPM Apache ProxyFCGI优点PHP 与 Apache 解耦、升级 PHP 不用动 httpdDiscuz/WP 都跑得很稳。缺点需要多配几行 httpd 的代理规则我给你现成的。解压 PHP-FPMcd/usr/local/src/lamptarxf php-8.2.0.tar.bz2cdphp-8.2.0编译安装PHP-FPM./configure\--prefix/usr/local/php82\--with-config-file-path/usr/local/php82/etc\--enable-fpm\--with-fpm-userapache\--with-fpm-groupapache\--with-openssl\--with-curl\--with-zlib\--enable-gd\--with-jpeg\--with-freetype\--with-mysqlimysqlnd\--with-pdo-mysqlmysqlnd\--enable-mbstring\--enable-xml\--enable-session\--enable-opcache\--disable-rpath;echo$?make-j$(nproc)makeinstall;echo$?配置PHP-FPM进程池调优性能将php.ini-production复制为生产环境配置cp-avphp.ini-production /usr/local/php82/etc/php.ini将php-fpm.conf和www.conf从默认模版复制出来cp-av/usr/local/php82/etc/php-fpm.conf.default /usr/local/php82/etc/php-fpm.confcp-av/usr/local/php82/etc/php-fpm.d/www.conf.default /usr/local/php82/etc/php-fpm.d/www.conf编辑 /usr/local/php82/etc/php-fpm.d/www.conf至少核对这几项vim/usr/local/php82/etc/php-fpm.d/www.confuserapache#确认运行的用户和组groupapache listen127.0.0.1:9000#通信接口PHP-FPM将本地9000端口监听等待Apache的连接listen.ownerapache listen.groupapache pmdynamic#动态进程模式pm.max_children50#最大并发进程数根据你的服务器内存调整pm.start_servers10#设置初始启动的进程数和空闲时保留的进程数保证相应速度用时节省资源pm.min_spare_servers5pm.max_spare_servers20查看所有需要确认修改的行grep-Ev^$|;/usr/local/php82/etc/php-fpm.d/www.conf启动 php-fpm#启动前检查配置文件是否有语法错误防止启动失败/usr/local/php82/sbin/php-fpm-t#启动服务/usr/local/php82/sbin/php-fpm#启动PHP-FPM服务psaxu|grepphp-fpmApache 侧启用 proxy_fcgi并把 .php 交给 PHP-FPM在 /etc/httpd/conf/httpd.conf确保加载一般编译时已带vim /usr/local/apache/conf/httpd.conf#修改httpd.conf取消注释LoadModule proxy_module和LoadModule proxy_fcfi_moduleLoadModule proxy_module modules/mod_proxy.so LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so如果不是可以用一下语句直接替换sed-is#LoadModule proxy_module modules/mod_proxy.soLoadModule proxy_module modules/mod_proxy.sog/usr/local/apache/conf/httpd.confsed-is#LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.soLoadModule proxy_fcgi_module modules/mod_proxy_fcgi.sog/usr/local/apache/conf/httpd.confgrep-Enproxy_module|proxy_fcgi_module/usr/local/apache/conf/httpd.conf测试文件vim/usr/local/apache/conf/httpd.conf#然后在你的 VirtualHost或全局 Directory 之后加FilesMatch\.php$SetHandlerproxy:fcgi://127.0.0.1:9000/FilesMatchDirectoryIndex index.php index.html#可以查看是否已经改成功grep-n-A12FilesMatch /usr/local/apache/conf/httpd.conf1PHP 解析转发到 php-fpm你要求的规则FilesMatch \.php$ SetHandler proxy:fcgi://127.0.0.1:9000 /FilesMatch2默认首页支持 index.phpplaintext DirectoryIndex index.php index.html重启 apache/usr/local/apache/bin/apachectl /usr/local/apache/bin/apachectl-krestart![在这里插入图片描述]测试Apache解析PHP动态脚本cat/usr/local/apache/htdocs/index.phpEOF ?php phpinfo(); ? EOFchrome浏览器可以看到php的版本环境变量各种配置等信息。http//192.169.30.153/index.php在这里插入图片描述✅ 方案 B更快、更“老派”但能用mod_phplibphp.so如果你想 省事一条龙就用这个缺点是 Apache 必须 prefork、且 PHP 强耦合 httpd。cd/usr/local/src/php-8.2.26 ./configure\--prefix/usr/local/php82\--with-config-file-path/usr/local/php82/etc\--with-apxs2/usr/local/apache2/bin/apxs\--with-openssl\--with-curl\--with-zlib\--enable-gd\--with-jpeg\--with-freetype\--with-mysqlimysqlnd\--with-pdo-mysqlmysqlnd\--enable-mbstring\--enable-opcache;echo$?make-j$(nproc)makeinstall;echo$?装完后 httpd.conf 会被自动插入类似LoadModule php_module modules/libphp.so你补一行DirectoryIndex index.php index.html以及稳妥在 vhost 里AddHandler php-script .php Virtual Hosts 配置基于域名的虚拟主机在Web 应用服务器192.168.30.153上部署实际生产环境建议一个虚拟主机使用一个单独的配置文件进行控制。【解耦】修改 httpd-vhosts.confcd/usr/local/apache/conf/extracp-avhttpd-vhosts.conf /opt/httpd-vhosts.conf.bakcd/usr/local/apache/conf/extratouchweb7.yxl.com.conf基于域名(name-based)的虚拟主机服务器: 192.168.30.153cat/usr/local/apache/conf/extra/httpd-vhosts.confEOF ## ---------- web7: HTML 站点 ---------- VirtualHost *:80 ServerName web7.yxl.com ServerAdmin adminyxl.com DocumentRoot /usr/local/apache/htdocs/web7.yxl.com DirectoryIndex index.html index.php Directory /usr/local/apache/htdocs/web7.yxl.com Options -Indexes FollowSymLinks AllowOverride None Require all granted /Directory ErrorLog logs/web2-error_log CustomLog logs/web2-access_log common /VirtualHost EOF创建网站目录mkdir-pv/usr/local/apache/htdocs/web7.yxl.com修改权限chown-Rapache:apache /usr/local/apache/htdocs/web7.yxl.com ll-d/usr/local/apache/htdocs/web7.yxl.comLinux 本机 /etc/hosts 配置cat/etc/hostsEOF ##### apache vhosts by yxl $(date %F_%T) ##### 192.168.30.153 web7.yxl.com ##### apache vhosts by yxl $(date %F_%T) ##### EOFping网页是否可以ping通cat/etc/hostsping-c2web7.yxl.com/dev/null;echo$?输出为0则为通Windows 客户端写 hosts 文件修改方法hosts 文件位置:C:\Windows\System32\drivers\etc\hosts⚠️ 必须用管理员权限编辑,否则保存会失败。管理员权限打开记事本1.开始菜单搜索 记事本2.右键 → 以管理员身份运行3.文件 → 打开 → 路径粘贴 C:\Windows\System32\drivers\etc\hosts(右下角文件类型选所有文件)4.末尾追加:192.168.30.153 web7.yxl.com开启 Apache 的虚拟主机配置功能并重启服务使其生效。sed-is#Include conf/extra/httpd-vhosts.confInclude conf/extra/httpd-vhosts.confg/usr/local/apache/conf/httpd.confgrep-nhttpd-vhosts /usr/local/apache/conf/httpd.conf /usr/local/apache/bin/apachectl-krestart部署Discuz在Web 应用服务器192.168.30.153上部署第一步确定 Web 根目录编译安装的 Apache 默认根目录通常在/usr/local/apache2/htdocs。为了方便管理建议你在该目录下创建子目录。第二步解压并部署程序请在终端执行以下命令部署 discuz#下载依赖包yum-yinstallbzip2wget# 1. 解压cd/usr/local/src/lampunzipDiscuz_X5.0_20260510.zip# 2. 创建目录并移动文件 (upload目录里才是程序本体)mkdir-p/usr/local/apache/htdocs/web7.yxl.commvupload/* /usr/local/apache/htdocs/web7.yxl.com/# 3. 赋予权限 (Apache运行用户通常是daemon或nobody编译安装默认多为daemon)chown-Rapache:apache /usr/local/apache/htdocs/web7.yxl.comchmod-R777/usr/local/apache/htdocs/web7.yxl.com第三步配置虚拟主机你需要编辑 Apache 配置文件。编译安装的配置文件通常在/usr/local/apache2/conf/下。1. 开启虚拟主机支持编辑主配置文件vim/usr/local/apache/conf/httpd.conf找到这一行去掉前面的#号Include conf/extra/httpd-vhosts.conf找到ServerAdmin youexample.com在下面添加ServerName localhost:802. 编辑虚拟主机配置编辑虚拟主机文件vim/usr/local/apache/conf/extra/httpd-vhosts.conf清空文件内容复制粘贴以下配置# --- Discuz 虚拟主机 --- VirtualHost *:80 ServerName web7.yxl.com ServerAdmin adminyxl.com DocumentRoot /usr/local/apache/htdocs/web7.yxl.com DirectoryIndex index.php index.html Directory /usr/local/apache/htdocs/web7.yxl.com Options -Indexes FollowSymLinks AllowOverride None Require all granted /Directory ErrorLog logs/web2-error_log CustomLog logs/web2-access_log common /VirtualHost第四步重启 Apache编译安装的服务不能用systemctl必须用绝对路径。1. 检查配置语法是否正确非常重要防止配错导致起不来/usr/local/apache/bin/apachectl-t如果显示Syntax OK继续下一步。2. 重启服务/usr/local/apache/bin/apachectl restart第五步数据库准备这一步和安装方式无关直接登录数据库操作--1. 创建 Discuz 专用数据库推荐 utf8mb4 字符集 CREATE DATABASE discuz_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;--2. 创建专用用户并授权允许从 Web 服务器 IP 连接 CREATEUSERdiscuz_user192.168.30.153IDENTIFIED BYYourStrongPassword;GRANT ALL PRIVILEGES ON discuz_db.* TOdiscuz_user192.168.30.153;--3. 刷新权限使配置生效 FLUSH PRIVILEGES;配置 MySQL 远程访问(在)默认情况下MySQL 8.0 仅监听本地回环地址 (127.0.0.1)这会导致 Web 服务器无法连接。需要在数据库服务器 (192.168.30.154) 上修改配置允许远程连接。编辑 MySQL 配置文件vim/etc/my.cnf在[mysqld]模块下添加或修改以下两行配置[mysqld] bind-address 0.0.0.0 # 监听所有网络接口。若仅允许 Web 服务器访问可改为 192.168.30.154 skip-name-resolve # 跳过 DNS 反向解析提升连接性能并避免潜在的主机名解析错误保存并重启 MySQL 服务systemctl restart mysqld修改 Discuz 数据库连接配置在 Discuz 安装界面若出现“数据库连接错误”通常是因为其配置文件中的数据库地址仍指向本地。需要将其修改为数据库服务器的实际 IP。编辑 Discuz 的默认配置文件vim/usr/local/apache/htdocs/web7.yxl.com/config/config_global_default.php定位并修改数据库服务器地址找到$_config[db][1][dbhost]配置项将其值从默认的localhost或127.0.0.1修改为数据库服务器的 IP 地址$_config[db][1][dbhost]192.168.30.154;第六步本地 Hosts 绑定测试用1. 配置本地 Hosts 文件在你的 Windows 电脑操作找到路径C:\Windows\System32\drivers\etc找到名为 hosts 的文件。右键该文件选择“打开方式” - “记事本”或者用 Notepad 等编辑器。在文件的最底部添加192.168.30.157 web7.yxl.com保存文件Ctrl S。2. 验证访问打开你 Windows 电脑上的浏览器Chrome/Edge输入http://web7.yxl.com/install该能看到 WordPress 的安装界面这里就完成这个主要是学习分离式部署。感谢阅读