WordPress 的安装部署(openEuler)
环境
操作系统:openEuler 欧拉 20.03 LTS SP1、22.03 LTS
适用架构:ARM64(鲲鹏、飞腾)、AMD64(海光、兆芯)
前言
Wordpress 是最流行的内容管理系统之一,也是常用的 CMS(内容管理系统)程序之一。Wordpress 可以多种方式安装,本次讲解同样非常流行的软件环境 LEMP(Linux + Nginx + MySQL + PHP)或 LAMP(Linux + Apache + MySQL + PHP)。
数据库
这里使用 MariaDB。
sudo dnf install mariadb mariadb-server
允许开机启动并立即启动。
sudo systemctl enable mariadb --now
MySQL 的安装与此类似,执行 dnf 安装命令时,将 mariadb-server 改为 mysql-server 就可以了。需要了解更多内容,请参考《MySQL 8.0 的安装部署》,https://my.oschina.net/chipo/blog/4341579
创建对应数据库及帐号用于安装 WordPress 使用。
sudo mysql
创建 Wordpress 运行需要的数据库和帐号,这里使用的数据库名 wdpsdb,用户名 wdpsusr,密码 wdpswd 可以根据自己需要修改。
CREATE USER 'wdpsUsr'@'localhost' IDENTIFIED BY 'wdpsWd';
GRANT ALL PRIVILEGES ON *.* TO 'wdpsUsr'@'localhost';
CREATE DATABASE wdpsDb DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
GRANT ALL ON wdpsDb.* TO 'wdpsUsr'@'localhost' IDENTIFIED BY 'wdpsWd';
需要注意,这里使用的默认安装的 MariaDB 10。
成功创建完成后,输入以下命令,更新变更。
flush privileges;
退出数据库管理界面。
quit
PHP
要显示动态内容,正常运行 Wordpress 我们需要安装 PHP,安装命令如下:
sudo dnf install php php-fpm php-opcache php-cli php-mysqlnd php-curl php-dom php-exif php-fileinfo php-gd php-hash php-json php-mbstring php-mysqli php-openssl php-pcre php-xml libsodium
修改一下 PHP 的上传限制,不然,WordPress 的一些超过 2M 的主题或者图片,会无法上传。
sudo nano /etc/php.ini
查找 post_max_size = 2M 改为:100M
查找 upload_max_filesize,默认为 2M 改为:100M
解决上传超时
默认是 30 秒 改为:max_execution_time = 0
0 代表不限制
max_input_time = 600 ;每个 PHP 页面接收数据所需的最大时间,默认 60 秒
memory_limit = 128M ;每个 PHP 页面所吃掉的最大内存,默认 128M,其实默认就够用了。
另外要确认上传的 <form> 里没有类似下面的这行 < input type="hidden"name="MAX_FILE_SIZE" value="1000000"> 这样也是限制上传大小用的
如果是 apache 2 需要修改:
/etc/httpd/conf.d/php.conf 中的 LimitRequestBody 524288 将 524288(=512×1024)改大,比如 5M(=5×1024×1024)这样上传就不会出现如上问题,上传不响应,上传显示该页无法现实也将得到解决。
允许开机启动,并立即启动服务。
sudo systemctl enable php-fpm --now
至此,PHP 及可能用到的扩展安装完成。
方法 1、 Nginx
Nginx 是一个开源的,非常流行,使用非常广泛的网页服务器软件。我们可以通过以下命令安装 Nginx。
sudo dnf install nginx
修改一下文件上传的限制。
sudo nano /etc/nginx/nginx.conf
在 http {} 段中加入 “client_max_body_size 20m;”,其中 20m 为允许最大上传的大小。
允许开机启动,并立即启动。
sudo systemctl enable nginx --now
启动完成后,可以输入以下命令查看 nginx 运行状态
systemctl status nginx
方法 2、Apache
默认情况下,PHP 安装时会依赖这个软件包,也就是会同时安装,不需要单独设置。如果要手动安装,请执行以下命令。
sudo dnf install httpd
允许开机启动,并立即启动。
sudo systemctl enable httpd --now
防火墙
默认情况,openEuler 20.03 TLS 中使用 firewall 管理防火墙。防火墙需要允许 http (80) 和 https (443) 通讯,可以通过以下命令配置:
sudo firewall-cmd --add-service=http --permanent
或者
sudo firewall-cmd --zone=public --add-port=80/tcp --permanent
重启防火墙。
sudo firewall-cmd --reload
可以通过 http://localhost 或本机的其他 IP 访问,您将看到 openEuler 默认的 Nginx 或 Apache 欢迎页面。
Nginx 或 Apache 可以正常工作了。
Wordpress
安装之前,我们需要先从 https://cn.wordpress.org/ 下载。
1、Nginx 的 web 文件目录
cd /usr/share/nginx/html
2、Apache 的 web 文件目录
cd /var/www/html/
使用 curl 命令下载最新版本的 wordpress。下载压缩包。
sudo curl -O https://cn.wordpress.org/latest-zh_CN.tar.gz
下载完成后,通过 tar 命令解压软件包。这里以 Nginx 为例。
sudo tar -xzvf latest-zh_CN.tar.gz && sudo mv wordpress/* /usr/share/nginx/html && sudo rm -rf wordpress
为避免任何权限问题,我们可以将域文档根目录的所有权使用 chown 命令更改为 apache 或 nginx 用户:
sudo chown -R nginx:nginx /usr/share/nginx/html
赋权,
sudo chmod -R 777 /usr/share/nginx/html
sudo systemctl restart nginx
至此,配置完成,下一步我们将进入 Wordpress 运行配置界面。
SELINUX
如果遇到访问网页时提示 “Access denied”,尝试关闭 selinux(需要重启服务器)
sudo nano /etc/selinux/config
设置内容修改为,SELINUX=disabled
或者配置 selinux 上下文:
chcon -R -t httpd_sys_content_t /path/to/phpfiles
访问主页
通过浏览器访问主页,比如,http://localhost,系统会自动跳转至 WordPress 配置页面。输入配置信息就好了。如果失败请手工修改配置文件。
手工生成配置文件。
使用 cp 命令复制出一份配置文件 wp-config.php
。
sudo cp wp-config-sample.php wp-config.php
编辑配置文件,
sudo nano wp-config.php
内容如下
// ** MySQL 设置 - 具体信息来自您正在使用的主机 ** //
/** WordPress 数据库的名称 */
define( 'DB_NAME', 'database_name_here' );
/** MySQL 数据库用户名 */
define( 'DB_USER', 'username_here' );
/** MySQL 数据库密码 */
define( 'DB_PASSWORD', 'password_here' );
/** MySQL 主机 */
define( 'DB_HOST', 'localhost' );
/** 创建数据表时默认的文字编码 */
define( 'DB_CHARSET', 'utf8' );
/** 数据库整理类型。如不确定请勿更改 */
define( 'DB_COLLATE', '' );
Primary script unknown
PHP 环境可能会遇到这个恼人的问题:
- 浏览器访问 php 文件,报错。
- 查看 /var/log/nginx/error.log ,有 “Primary script unknown”,类似如下:
FastCGI sent in stderr: "Primary script unknown" while reading response header from upstream,
client: 127.0.0.1, server: _, request: "GET /info.php HTTP/1.1", upstream: "fastcgi://unix:/run/php-fpm/www.sock", host: "127.0.0.1"
原因有两个,一个是 php-fpm 找不到 php 文件,另一个是 php-fpm 没有权限读取和执行文件。
1. 找不到文件问题
nginx 的站点配置文件 /etc/nginx/default.d/php.conf 中 php 段要这样:
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
location ~ \.php$ {
#root 路径配置必须要有,而且必须要写对(别笑,真的能写错)
root /usr/share/nginx/html;
fastcgi_pass php-fpm;
fastcgi_index index.php;
#SCRIPT_FILENAME用$document_root,而不是具体路径
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
2. 权限问题
也是坑最多的。
1) 进程用户
nginx.conf 里的 user 配置要跟 php-fpm.d/www.conf 一致,比如都用 nginx。
/etc/nginx/nginx.conf :这个一般不用改,默认就是 nginx。
user nginx;
worker_processes auto;
/etc/php-fpm.d/www.conf :
; Unix user/group of processes
; Note: The user is mandatory. If the group is not set, the default user's group
; will be used.
user = nginx
group = nginx
nginx 和 php-fpm 进程 / 监听信息:
ps -ef|grep php-fpm
root 19107 0.0 0.1 207644 5852 ? Ss 1月02 0:03 php-fpm: master process (/usr/local/etc/php-fpm.conf)
phpuser 19108 0.0 0.1 207644 7108 ? S 1月02 0:00 php-fpm: pool www
phpuser 19109 0.0 0.1 207644 7112 ? S 1月02 0:00 php-fpm: pool www
root 24676 0.0 0.0 56660 1024 ? Ss 13:08 0:00 nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf
phpuser 24677 0.0 0.7 84680 29976 ? S 13:08 0:00 nginx: worker process
phpuser 24678 0.0 0.7 84324 29236 ? S 13:08 0:00 nginx: worker process
tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN 19107/php-fpm: mast
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 24676/nginx: master
tcp6 0 0 :::80 :::* LISTEN 24676/nginx: master
如果修改了 nginx 运行用户还必须要改些目录权限:
chown -R phpuser:phpuser /var/log/nginx
chown -R phpuser:phpuser /var/cache/nginx
chown -R phpuser:phpuser /usr/share/nginx/html
还有 logrotate.d/nginx,create 640 nginx adm
这行要改:
create 640 phpuser adm
2) 目录和文件权限
php 文件不必非得设为 777,让人怪担心的,只要是 nginx 和 php-fpm 运行用户可读写执行即可,一般可以 770 。
php 文件目录和文件样例:
drwxrwx--- 6 phpuser phpuser 4.0K 2019-01-03 13:09 /usr/share/nginx/html
-rwxrwx--- 1 phpuser phpuser 40 2019-01-03 13:09 /usr/share/nginx/html/phpinfo.php
这里有个深坑,对于使用其他目录放置 php 文件的很可能中招,就是 /path/to/phpfiles 的每一层目录都要允许 phpuser 访问,缺一层就会 Permission denied。
本例,/usr/share/nginx/html 之上的每一层目录,所有者都是 root,都有 o+rx ,即所有人都有读取和执行权限(读取和执行权限是目录访问的根本),因此 phpuser 可以访问到 html 目录。
drwxr-xr-x. 13 root root 155 2018-07-10 15:42 /usr
drwxr-xr-x. 86 root root 4.0K 2018-12-17 07:33 /usr/share/
drwxr-xr-x 4 root root 40 2018-12-17 08:06 /usr/share/nginx/
drwxrwx--- 6 phpuser phpuser 4.0K 2019-01-03 13:11 /usr/share/nginx/html/
测试方法:
sudo -u phpuser ls -l /usr/share/nginx/html/
3. 最后
echo "<p align='center'>Good Luck :)</p><?php phpinfo(); ?>" > /usr/share/nginx/html/phpinfo.php
在浏览器中输入 https://example.com
(你自己的域名),你会看到如下配置界面:
这里就输入站点名称,管理帐号名称及密码,email 等内容后,点击 “安装 WordPress” 完成安装。
登录
进入控制台
设置域名。如果是互联网访问,请修改 DNS 的解析。本地访问,请修改 hosts 文件。
sudo vi /etc/hosts
在 “设置” 中,填写好域名。
至此,我们完成了 Wordpress 的安装,来看下默认的效果界面。
地址输入:https://example.com
,效果如下:
(这里的域名仅做验收使用,实际情况下需要你配置自己的域名)
剩下的事情就是登录 Wordpress 的管理界面,安装你喜欢的主题。
开始你的 Wordpress 之旅吧。
写在最后
本教程详细讲解了如何在 openEuler 上搭建 LEMP 环境运行 WordPress 的方法,通过本教程你应该学会了如何使用 Wordpress 建站。
如果你有不清楚的地方,欢迎留言讨论。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了