wordpress博客系统部署 wordpress博客系统部署本次搭建使用的源码编译方式部署环境centos7阿里源apr-1.6.5apr-util-.1.6.3httpd-2.4.68mysql-5.6.51php-7.2.17wordpress-5.6.17源码下载curl-oapr-1.6.5.tar.gz https://mirrors.aliyun.com/apache/apr/apr-1.6.5.tar.gzcurl-omysql-5.6.51.tar.gz https://mirrors.aliyun.com/mysql/MySQL-5.6/mysql-5.6.51.tar.gzcurl-oapr-util-.1.6.3.tar.bz2 https://mirrors.aliyun.com/apache/apr/apr-util-1.6.3.tar.bz2curl-ohttpd-2.4.68.tar.bz2 https://mirrors.aliyun.com/apache/httpd/httpd-2.4.68.tar.bz2curl-ophp-7.2.17.tar.xz https://www.php.net/distributions/php-7.2.17.tar.xzcurl-owordpress-5.6.17 https://cn.wordpress.org/wordpress-5.6.17-zh_CN.tar.gz安装源码编译的插件yuminstall-ygcc-c cmake ncurses-devel autoconf安装MySQL安装需求软件版本安装目录数据目录端口mysql-5.6.51/usr/local/mysql/usr/local/mysql/data3306创建用户与解压创建用户useradd-r-s/sbin/nologin mysql解压tar-zxvfmysql-5.6.51.tar.gz编译配置配置解析-DCMAKE_INSTALL_PREFIX/usr/local/mysql/# 安装路径-DMYSQL_DATADIR/usr/local/mysql/data# 数据目录-DENABLED_LOCAL_INFILE1# 开启加载外部文件功能1开启0关闭-DWITH_INNOBASE_STORAGE_ENGINE1# 将InnoDB存储引擎静态编译到服务器-DMYSQL_TCP_PORT3306\# 端口-DDEFAULT_CHARSETutf8mb4\# 字符集-DDEFAULT_COLLATIONutf8mb4_general_ci\# 字符校验规则-DWITH_EXTRA_CHARSETSall\# 扩展字符集-DMYSQL_USERmysql# 用户身份mysqlcmake脚本使用cmake脚本不容易出错编写方便cmake.\-DCMAKE_INSTALL_PREFIX/usr/local/mysql/\-DMYSQL_DATADIR/usr/local/mysql/data\-DENABLED_LOCAL_INFILE1\-DWITH_INNOBASE_STORAGE_ENGINE1\-DMYSQL_TCP_PORT3306\-DDEFAULT_CHARSETutf8mb4\-DDEFAULT_COLLATIONutf8mb4_general_ci\-DWITH_EXTRA_CHARSETSall\-DMYSQL_USERmysql编译故障排查配置失败了生成了两个日志文件两处错误都提到了ssl查询了一下需要补环境Call Stack (most recent call first): cmake/ssl.cmake:260 (FATAL_SSL_NOT_FOUND_ERROR) CMakeLists.txt:483 (MYSQL_CHECK_SSL) -- Configuring incomplete, errors occurred! See also /root/mysql-5.6.51/CMakeFiles/CMakeOutput.log. See also /root/mysql-5.6.51/CMakeFiles/CMakeError.log.使用cat查看具体原因catCMakeError.log|openssl重点分析上面的提到的SSL错误/root/mysql-5.6.51/CMakeFiles/CMakeTmp/CheckSymbolExists.c:2:25: fatal error: openssl/sha.h: No such file or directory #include openssl/sha.h解决方案主要是openssl错误的需要补openssl-devel开发包解决 openssl/sha.h 缺失问题yuminstall-yopenssl-devel# 解决 pthread 及其他基础库缺失问题yum groupinstall-yDevelopment Toolsyuminstall-yglibc-devel libstdc-devel清理缓存不然会再次报错cd/root/mysql-5.6.51rm-rfCMakeCache.txt CMakeFiles/重新执行 CMake 配置cdmysql-5.6.51 ./cmake.sh看到下面这个结果就成功了CMake Warning: Manually-specified variables were not used by the project: MYSQL_USER -- Build files have been written to: /root/mysql-5.6.51编译安装时间会比较久make make install编译完成-- Installing: /usr/local/mysql/sql-bench/test-create -- Installing: /usr/local/mysql/sql-bench/test-insert -- Installing: /usr/local/mysql/sql-bench/test-select -- Installing: /usr/local/mysql/sql-bench/test-transactions -- Installing: /usr/local/mysql/sql-bench/test-wisconsin修改目录所属者现在mysql安装目录所属者是root修改成mysqlchown/usr/local/mysql初始化初始化前清空之前的配置rm-f/etc/my.cnf清空完之后初始化cd/usr/local/mysql ./scripts/mysql_install_db--usermysql看到这两个OK就成功了2026-07-1312:03:21103561[Note]InnoDB: Shutdown completed;log sequence number1625977OK Fillinghelptables...2026-07-1312:03:210[Warning]TIMESTAMP with implicit...2026-07-1312:03:21103583[Note]InnoDB: Starting shutdown...2026-07-1312:03:23103583[Note]InnoDB: Shutdown completed;log sequence number1625987OK拷贝启动服务脚本cpsupport-files/mysql.server /etc/init.d/mysql启动数据库启动前看看3306端口是否被占用netstat-nltp|grep3306#还没有注册环境变量不能使用systemctl命令启动servicemysql start修改密码./bin/mysqladmin-uroot password123#可以登录就设置成功了./bin/mysql-uroot-p123全局注册mysql环境vim/etc/profile#最后一行添加exportPATH/usr/local/mysql/bin/:$PATH重载环境source/etc/profile随便一个地方登录mysql登录成功即可mysql uroot-p123安装Apache需求版本安装路径httpd-2.4.68/usr/local/安装apr解压tar-zxvfapr-1.6.5.tar.gz编译配置与安装cdapr-1.6.5 ./configuremakemakeinstall看到这个就成功了/usr/bin/install -c -m 644 build/apr_rules.out /usr/local/apr/build-1/apr_rules.mk /usr/bin/install -c -m 644 /root/apr-1.6.5/build/apr_common.m4 /usr/local/apr/build-1 /usr/bin/install -c -m 644 /root/apr-1.6.5/build/find_apr.m4 /usr/local/apr/build-1 /usr/bin/install -c -m 755 apr-config.out /usr/local/apr/bin/apr-1-config安装apr-utils解压#解压不了需要安装bzip2yuminstallbzip2tar-xfapr-util-.1.6.3.tar.bz2配置cdapr-util-1.6.3/ ./configure --with-apr/usr/local/apr/bin/apr-1-config --with-expat/usr看到这个就成功了config.status: creating include/private/apu_config.h config.status: executing default commands安装makemakeinstall问题如果出现了下面这个错误是缺少了expat-devel库xml/apr_xml.c:35:19: fatal error: expat.h: No such file or directory #include expat.h ^ compilation terminated. make[1]: *** [xml/apr_xml.lo] Error 1 make[1]: Leaving directory /root/apr-util-1.6.3 make: *** [all-recursive] Error 1解决方案直接安装expat-devel库即可yuminstall-yexpat-devel重新编译安装即可看到这个就成功过了/usr/bin/install -c -m 644 aprutil.exp /usr/local/apr/lib /usr/bin/install -c -m 755 apu-config.out /usr/local/apr/bin/apu-1-confighttpd安装解压tar-xfhttpd-2.4.68.tar.bz2配置配置详情--enable-modulesall# 加载所有支持模块--enable-mods-sharedall# 共享方式加载大部分常用的模块--enable-so# 启动动态模块加载功能--enable-rewrite# 启用url地址重写功能--enable-ssl# 编译ssl模块支持https--with-pcre# 支持正则表达式--with-apr/usr/local/apr/bin/apr-1-config# 指定依赖软件apr路径--with-apr-util/usr/local/apr/bin/apu-1-config --with-mpmprefork# 插入式并行处理模块称为多路处理模块Prefork 是类UNIX平台上默认的MPM配置./configure\--enable-modulesall\--enable-mods-sharedall\--enable-so\--enable-rewrite\--with-pcre\--enable-ssl\--with-mpmprefork\--with-apr/usr/local/apr/bin/apr-1-config\--with-apr-util/usr/local/apr/bin/apu-1-config\--with-expatbuiltin看到这个就成功了Server Version: 2.4.68 Install prefix: /usr/local/apache2 C compiler: gcc -stdgnu11 CFLAGS: -g -O2 -pthread CPPFLAGS: -DLINUX -D_REENTRANT -D_GNU_SOURCE LDFLAGS: LIBS: C preprocessor: gcc -E编译安装makemakeinstall查看是否成功lsls/usr/local/apache2/#出现这些目录代表编译安装成功bin build cgi-bin conf error htdocs icons include logsmanmanual modules问题故障现象如果出现了下面的错误是因为链接期出错了编译httpd链接libaprutil-1.so找不到真正的 Expat 库函数实现之前编译 apr-util 时没有正确把 Expat 静态/动态链接进去swd_common.lo /usr/local/apr/lib/libaprutil-1.la /usr/local/apr/lib/libapr-1.la -lrt -lcrypt -lpthread -ldl -lcrypt /usr/local/apr/lib/libaprutil-1.so: undefined reference to XML_GetErrorCode /usr/local/apr/lib/libaprutil-1.so: undefined reference to XML_SetEntityDeclHandler /usr/local/apr/lib/libaprutil-1.so: undefined reference to XML_ParserCreate /usr/local/apr/lib/libaprutil-1.so: undefined reference to XML_SetCharacterDataHandler /usr/local/apr/lib/libaprutil-1.so: undefined reference to XML_ParserFree /usr/local/apr/lib/libaprutil-1.so: undefined reference to XML_SetUserData /usr/local/apr/lib/libaprutil-1.so: undefined reference to XML_StopParser /usr/local/apr/lib/libaprutil-1.so: undefined reference to XML_Parse /usr/local/apr/lib/libaprutil-1.so: undefined reference to XML_ErrorString /usr/local/apr/lib/libaprutil-1.so: undefined reference to XML_SetElementHandler collect2: error: ld returned 1 exit status make[2]: *** [htpasswd] Error 1 make[2]: Leaving directory /root/httpd-2.4.68/support make[1]: *** [all-recursive] Error 1 make[1]: Leaving directory /root/httpd-2.4.68/support make: *** [all-recursive] Error 1解决方案重新编译安装apr-utils编译时指定expat编译apr-utilscdapr-util-1.6.3/#清理编译的缓存makeclean#编译配置指定expat./configure --with-apr/usr/local/apr/bin/apr-1-config --with-expat/usr#重新编译makemakeinstall编译httpdcdhttpd-2.4.68#清理编译的缓存makeclean#编译配置指定expat./configure --enable-modulesall --enable-mods-sharedall --enable-so --enable-rewrite --with-pcre --enable-ssl --with-mpmprefork --with-apr/usr/local/apr/bin/apr-1-config --with-apr-util/usr/local/apr/bin/apu-1-config --with-expatbuilti#重新编译makemakeinstall访问测试由于没有关闭防火墙需要开放80端口,不然无法访问firewalld-cmd --add-port80/tcpcd/usr/local/apache2/bin#启动服务./httpd浏览器192.168.100.141看到It works!就成功了配置注册systemd创建systemctl脚本vim/usr/lib/systemd/system/httpd.service[Unit]DescriptionThe Apache HTTP ServerAfternetwork.target remote-fs.target nss-lookup.targetDocumentationman:httpd(8)man:apachectl(8)[Service]Typeforking# 填安装路径ExecStart/usr/local/apache2/bin/apachectl startExecStop/usr/local/apache2/bin/apachectl stopExecReload/usr/local/apache2/bin/apachectl gracefulPrivateTmpfalse[Install]WantedBymulti-user.target重载systemdsystemctl daemon-reload测试systemctl status httpd systemctl start httpd systemctl restart httpdPHP安装安装依赖yuminstall-ylibcurl-devel libxml2-devel libjpeg-devel libpng-devel freetype-devel解压tar-xvfphp-7.2.17.tar.xz配置配置详情./configure\--with-apxs2/usr/local/apache2/bin/apxs\# 指定apxs路径,apxs是一个为Apache HTTP服务器编译和安装扩展模块的工具--with-mysqli\# 以下三个是php的扩展用于连接mysql数据库的--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配置./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看到这个就成了Thank you for using PHP. config.status: creating php7.spec config.status: creating main/build-defs.h config.status: creating scripts/phpize config.status: creating scripts/man1/phpize.1 config.status: creating scripts/php-config config.status: creating scripts/man1/php-config.1 config.status: creating sapi/cli/php.1 config.status: creating sapi/phpdbg/phpdbg.1 config.status: creating sapi/cgi/php-cgi.1 config.status: creating ext/phar/phar.1 config.status: creating ext/phar/phar.phar.1 config.status: creating main/php_config.h config.status: executing default commands编译安装makemakeinstall有libphp7.so模块就成了ls/usr/local/apache2/modules/libphp7.so配置php主配置文件vim/usr/local/apache2/conf/httpd.conf#配置服务名ServerName localhost:80#配置语言支持LoadModule negotiation_module modules/mod_negotiation.so Include conf/extra/httpd-languages.conf# 添加.php文件处理方式AddHandler php7_module .php AddType application/x-httpd-php .phpFilesMatch\.php$SetHandler application/x-httpd-php/FilesMatch#支持php主页IfModule dir_moduleDirectoryIndex index.php index.html/IfModule检查有没有语法错误/usr/local/apache2/bin/apachectl-t子配置文件vim/usr/local/apache2/conf/extra/httpd-languages.conf#默认语言中文DefaultLanguage zh-CN测试php主页编写rm-f/usr/local/apache2/htdocs/index.htmlvim/usr/local/apache2/htdocs/index.php?php phpinfo()?测试由于之前配置过systemd可以直接重启systemctl restart httpd浏览器访问:192.168.100.141看php信息页面就可以了部署wordpress安装配置解压tar-zxvfwordpress-5.6.17-zh_CN.tar.gz拷贝文件到apache目录cp-Rwordpress/* /usr/local/apache2/htdocs/创建数据库mysql-uroot-p123create database wordpress charset utf8;权限更改chown-Rdaemon.daemon /usr/local/apache2/htdocs/访问设置如果访问不了检查端口是否开放浏览器192.168.100.141照着填mysql连不上问题配置数据那一步使用localhost怎么都连不上mysql而使用127.0.0.1就可以连上原因为什么环回地址可以连上因为环回地址走的tcp连接不走socket连接在mysql的连接方式上这两者是不同的为什么localhost就连不上因为我在配置apache的systemd中加上了PrivateTmptrue这个配置会启动沙箱隔离而mysql的socket文件放在/tmp/mysql.sock,apache沙箱隔离又单独有tmp沙箱里的tmp只有空壳子没有连接文件才会导致连不上解决方案PrivateTmptrue 改为falsevimvim/usr/lib/systemd/system/httpd.servicePrivateTmpfalse