环境准备
鉴于工作中用到红帽系的服务器操作系统居多,本文选择Rocky Linux 8.9版本作为部署环境,Apache、MariaDB、PHP等均通过手动安装的方式。如果您不了解Linux系统,也不熟悉LAMP,那建议您还是选择虚拟主机提供商的预装服务。
计划安装的版本如下:
- 操作系统:Rocky Linux 8.9
- Apache:2.4.37
- MariaDB:10.6
- PHP:8.3
如果个人安装操作系统进行测试,建议关闭selinux、firewalld,命令如下:
# 临时修改selinux的模式为permissive
setenforce 0
# 建议修改/etc/selinux/config,修改为SELINUX=disabled,需要重启操作系统生效
# 关闭firewalld
systemctl stop firewalld
systemctl disable firewalld
Apache安装配置
安装
Apache安装相对简单,建议直接通过yum安装即可,安装命令如下:
yum install httpd
Rocky Linux 8.9默认安装的版本是2.4.37。
配置虚拟主机
创建运行账户,不建议使用apache账户运行
useradd wptest
创建虚拟主机目录为/home/wptest/www/html
# 创建目录
mkdir -p /home/wptest/www/html
#设置目录所有者和权限
chown wptest:wptest -R /home/wptest/www/html
chmod 755 -R /home/wptest/www/html
在/etc/httpd/conf.d目录下创建文件:wptest.conf,内容如下:
<VirtualHost *:80>
ServerAdmin admin@mailabc.cn
ServerName www.mailabc.cn
ServerAlias www
DocumentRoot /home/wptest/www/html
<Directory "/home/wptest/www/html/">
Options FollowSymLinks
AllowOverride All
Require all granted
</Directory>
ErrorLog /var/log/httpd/wptest_error.log
CustomLog /var/log/httpd/wptest_access.log combined
</VirtualHost>
修改httpd运行账户为wptest,修改/etc/httpd/conf/httpd.conf配置文件:
User wptest
Group wptest
配置httpd开机自启动
systemctl enable httpd
systemctl start httpd
直接在浏览器中访问http://your_ip/可以出现apache默认的界面即表示安装完成。
MariaDB安装配置
配置MariaDB yum源
MariaDB的yum源可以直接到官方获取:https://mariadb.org/download/?t=repo-config\&d=Red+Hat+Enterprise+Linux+8\&v=10.6\&r_m=aliyun
也可以采用下面的内容:
# MariaDB 10.6 RedHatEnterpriseLinux repository list - created 2024-04-08 13:57 UTC
# https://mariadb.org/download/
[mariadb]
name = MariaDB
# rpm.mariadb.org is a dynamic mirror if your preferred mirror goes offline. See https://mariadb.org/mirrorbits/ for details.
# baseurl = https://rpm.mariadb.org/10.6/rhel/$releasever/$basearch
baseurl = https://mirrors.aliyun.com/mariadb/yum/10.6/rhel/$releasever/$basearch
module_hotfixes = 1
# gpgkey = https://rpm.mariadb.org/RPM-GPG-KEY-MariaDB
gpgkey = https://mirrors.aliyun.com/mariadb/yum/RPM-GPG-KEY-MariaDB
gpgcheck = 1
在/etc/yum.repos.d 目录创建mariadb.repo文件,输入上面内容或者从官网获取的repo文件内容。然后执行下面命令建立缓存:
yum makecache
安装MariaDB
最后采用下面的命令进行安装即可:
yum install MariaDB-server MariaDB-client
配置MariaDB
首先启动服务,并设置开机自启动:
systemctl start mariadb
systemctl enable mariadb
默认情况下,初始安装后,root账号(此root账号非操作系统root账号,是指MariaDB的root账号)密码为空,需要给root账户设置一个密码(网上五花八门的方法,很多不靠谱,这里针对的是10.6版本的MariaDB),建议按照下面的方法执行:
# root账号登录MariaDB
mysql -u root
# 登录MariaDB之后,输入下面的命令修改root密码。下面命令中your_password换成你要改的密码
alter user root@localhost identified via mysql_native_password using password('your_password');
建议删除test数据库,登录数据库之后,执行如下命令:
drop database test;
为wordpress创建数据库和账户
创建名为wptestdb的数据库(后面配置wordpress会用到):
create database wptestdb;
授权wptest用户访问wptestdb数据库,并给wptest用户设置一个密码(需要修改下面your_password密码,后面配置wordpress会用到):
grant all on blogdb.* to mailabc@localhost identified by 'your_password';
安装配置PHP
配置PHP yum源
配置EPEL yum源,并手动导入remi的yum源:
yum install epel-release
rpm -ivh http://rpms.remirepo.net/enterprise/remi-release-8.9.rpm
小技巧:可以进入 Index of /enterprise 这里找你需要的操作系统版本对应的yum源。
安装PHP8.3
按照下面命令安装:
yum install php83-php php83-php-mysqlnd php83-php-pecl-imagick php83-php-pecl-zip php83-php-gd php83-php-intl
小技巧:上面安装了很多php的插件,这些基本上都是能用到的,建议直接安装。要不然后面会有各种各样的小问题。
修改php-fpm的启动用户和组为wptest,这一步是和上面httpd配置相呼应。修改配置文件/etc/opt/remi/php83/php-fpm.d/www.conf 下面几个配置:
user wptest
group wptest
#这里如果不配置,wptest用户将无法读取/var/opt/remi/php83/run/php-fpm/www.sock 这个scoket文件。
listen.acl_users = wptest
小技巧:这一步很重要,我在这里踩坑,每次重启php-fpm服务后/var/opt/remi/php83/run/php-fpm/www.sock 文件权限都会变为root,导致wptest用户无法读取该文件。上面的配置是通过acl权限列表的方式,对该文件增加wptest用户的访问权限。
配置自启动
systemctl enable php83-php-fpm
systemctl start php83-php-fpm
测试php运行状态
在/home/wptest/www/html目录下创建phpinfo.php文件,内容如下:
<?php phpinfo(); ?>
然后在浏览器中访问该文件,如http://your_ip/phpinfo.php,如果正常返回php的版本信息页面说明配置成功。
至此,LAMP环境配置完成。
wordpress安装
下载最新版本
wget https://cn.wordpress.org/latest-zh_CN.zip
放到httpd虚拟主机目录下解压,示例中所在目录/home/wptest/www/html:
gunzip latest-zh_CN.zip
解压之后,需要把文件放到上面html直属目录。
配置
通过下面命令,创建wordpress的配置文件:
cp wp-config-sample.php wp-config.php
修改wp-config.php文件,需要定义:
-
DB_NAME:数据库名称,示例中对应wptestdb
-
DB_USER:访问数据库用户,示例中对应wptest
-
DB_PASSWORD:访问数据库用户对应的密码
/** The name of the database for WordPress /
define( 'DB_NAME', 'wptestdb' );
/* Database username /
define( 'DB_USER', 'wptest' );
/* Database password /
define( 'DB_PASSWORD', 'your_password' );
/* Database hostname /
define( 'DB_HOST', 'localhost' );
/* Database charset to use in creating database tables. /
define( 'DB_CHARSET', 'utf8' );
/* The database collate type. Don't change this if in doubt. */
define( 'DB_COLLATE', '' );
此外,下面这些也建议修改,可以 https://api.wordpress.org/secret-key/1.1/salt/ 直接生成替换掉下面内容即可:
define( 'AUTH_KEY', 'put your unique phrase here' );
define( 'SECURE_AUTH_KEY', 'put your unique phrase here' );
define( 'LOGGED_IN_KEY', 'put your unique phrase here' );
define( 'NONCE_KEY', 'put your unique phrase here' );
define( 'AUTH_SALT', 'put your unique phrase here' );
define( 'SECURE_AUTH_SALT', 'put your unique phrase here' );
define( 'LOGGED_IN_SALT', 'put your unique phrase here' );
define( 'NONCE_SALT', 'put your unique phrase here' );
初始化
下面通过浏览器访问http://your_ip/进行初始化即可。
总结
至此,wordpress部署完成。后面有时间再介绍通过nginx做反向代理、部署https服务等。
实际部署过程中可能会遇到各种问题,但最终这些问题都是可以解决的,需要保持耐心。如果你也遇到了难题,可以留言探讨。