利用甲骨文云免费资源部署WordPress网站——搭建软件环境并安装WordPress

前面我们搭建好了 WordPress 网站需要的硬件设施,并做了基础配置和一些准备工作,现在我们就搭建软件环境,然后部署 WordPress 网站。

友情提示:本文教程以 Oracle Linux 10 实例为例,如果您的实例为 Ubuntu 系统或其它系统,请务必仔细核对相关命令。

连接到实例

打开终端,输入如下命令:

ssh -i /home/documents/example.key opc@121.122.131.132

其中:/home/documents/example.key 是您的私有密钥的绝对路径,opc 是 Oracle Linux 实例的登录名,如果您的实例为 Ubuntu 系统,请使用 ubuntu ,121.122.131.132 是您的实例的公共 IPv4 地址。

首次登录实例以后,请先更新一下软件源:
sudo dnf update

创建 WordPress 数据库

添加 MySQL 官方仓库:

sudo dnf install https://dev.mysql.com/get/mysql97-community-release-el10-1.noarch.rpm

安装 MySQL:

sudo dnf install mysql

连接 HeatWave 数据库:

mysql --host 10.0.1.111 -u username -p

其中:username 为您在甲骨文云后台创建 HeatWave 数据库时设定的用户名,10.0.1.111 为您的 HeatWave 数据库的专用 IP 地址,可以在这里找到:甲骨文云左上角导航菜单 -> 数据库 -> 数据库系统 -> 您的 HeatWave 数据库 -> 连接 选项卡 -> 主要端点

连接过程中需要您输入创建 HeatWave 数据库时设定的密码。 创建 WordPress 数据库:

create database wp-database character set utf8mb4;

查看刚刚创建的 WordPress 数据库:

show databases;

退出 HeatWave 数据库:

exit;

安装 Apache:

sudo dnf install httpd

查看 Apache 版本:

httpd -v

启用 Apache 并设置为开机自启动:

sudo systemctl enable --now httpd

查看 Apache 运行状态:

sudo systemctl status httpd

配置防火墙

查看防火墙运行状态,预期输出为:running

sudo firewall-cmd --state

如果防火墙未运行,启用防火墙并设置为开机自启动:

sudo systemctl enable --now firewalld

开放 80 端口:

sudo firewall-cmd --add-service=http --permanent

开放 443 端口:

sudo firewall-cmd --add-service=https --permanent

重新加载防火墙:

sudo firewall-cmd --reload

确认开放的端口,预期输出:services 中包含 http 和 https

sudo firewall-cmd --list-all

安装 PHP 及其扩展

查看可安装的 PHP 及其扩展:

sudo dnf list available php\*

安装 PHP 及其扩展:

sudo dnf install php8.4 php8.4-mysqlnd php8.4-pecl-zip php8.4-gd php8.4-intl

查看 PHP 版本:

php -v

查看 PHP 加载的模块:

php -m

修改 PHP 配置文件:

sudo nano /etc/php.ini

按 ctrl+w 查找如下参数并修改:

max_execution_time = 300 (最大查询执行时间)

• max_input_vars = 3000 (最大输入变量)

• memory_limit = 256M (内存限制)

• post_max_size = 16M (最大 POST 请求数据大小)

• upload_max_filesize = 16M (最大文件上传大小)

按 ctrl+x 后输入 y 保存并退出。

启用 PHP-FPM 并设置为开机自启动:

sudo systemctl enable --now php-fpm

查看 PHP-FPM 运行状态:

sudo systemctl status php-fpm

下载 WordPress 安装文件

进入到 Apache 文件根目录:

cd /var/www

下载 WordPress 最新版安装文件压缩包:

sudo wget https://wordpress.org/latest.tar.gz

解压缩安装文件压缩包:

sudo tar -xzf latest.tar.gz

重命名 WordPress 目录为您的站点名称:

sudo mv wordpress your-site

删除无用的安装文件压缩包:

sudo rm latest.tar.gz

创建 WordPress 子主题

可选,但是建议创建。因为应用子主题,可以避免在修改主题文件时破坏默认的主题文件,也可以避免在 WordPress 升级以后修改好的主题文件丢失。

创建子主题目录:

sudo mkdir -p /var/www/your-site/wp-content/themes/your-child-theme

创建子主题 CSS 文件:

sudo nano /var/www/your-site/wp-content/themes/your-child-theme/style.css

CSS 文件内容示例:

/*
Theme Name: your-child-theme
Template: twentytwentyfive
Author: Niuma
Author URI: https://niuma.win
Description: A child theme for Twenty Twenty-Five.
Version: 1.0
License: GNU General Public License v2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html
Text Domain: your-child-theme
*/

创建子主题 PHP 文件:

sudo nano /var/www/your-site/wp-content/themes/your-child-theme/functions.php

PHP 文件内容示例:

<?php
function your-child-theme_enqueue_styles() {
    wp_enqueue_style('parent-style', get_template_directory_uri() . '/style.css');
    wp_enqueue_style('child-style', get_stylesheet_directory_uri() . '/style.css', array('parent-style'));
}
add_action('wp_enqueue_scripts', 'your-child-theme_enqueue_styles');

配置 WordPress 文件权限

修改 WordPress 文件和目录的所有者和组:

sudo chown -R apache:apache /var/www/your-site

配置 SELinux 策略,使其在安装 WordPress 时可读写:

sudo semanage fcontext -a -t httpd_sys_rw_content_t "/var/www/your-site(/.*)?"

允许 WordPress 连接远程数据库:

sudo setsebool -P httpd_can_network_connect_db on

允许 WordPress 发送邮件(SMTP):

sudo setsebool -P httpd_can_sendmail on

允许 WordPress 向外发起 HTTP 请求:

sudo setsebool -P httpd_can_network_connect on

应用 SELinux 策略:

sudo restorecon -R /var/www/your-site

配置 SSL 证书(可选)

Cloudflare 为托管在它上面的域名,提供最多免费15年的源站证书服务,如果您的域名托管在Cloudflare ,刚好可以使用这个服务为 WordPress 网站配置 SSL 证书。

生成 Cloudflare 源站证书

登录到 Cloudflare 控制台 -> 进入到您的域名 -> 在左侧的导航栏展开 SSL/TLS -> 点击进入到 源服务器 -> 选择 Origin 证书 选项卡 -> 点击 创建证书 -> 选中 使用 Cloudflare 生成私钥和 CSR ,私钥类型 默认 RSA(2048) ,主机名确认列出了您的域名 *.example.com 和 example.com ,证书有效期 选择 15年 ,然后点击 创建 按钮 -> 此时页面会显示 源证书 和 私钥 ,把它们保存好以便我们安装到 WordPress 服务器,然后点击 确认 按钮。 在左侧导航栏 SSL/TLS 中,点击进入到 概述 -> 点击页面右上角的 配置 按钮 -> 加密模式 选择 完整(严格),然后点击 保存 按钮 。 将源站证书保存到 WordPress 服务器。

保存源证书:

sudo nano /etc/pki/tls/certs/your-site.pem

将 Cloudflare 生成的 源证书 内容粘贴进来,然后按 ctrl+x 输入 y 后保存退出。

保存私钥:

sudo nano /etc/pki/tls/private/your-site.key

将 Cloudflare 生成的 私钥 内容粘贴进来,然后按 ctrl+x 输入 y 后保存退出。

安装 Apache SSL 模块

sudo dnf install mod_ssl

重启 Apache :

sudo systemctl restart httpd

创建虚拟机配置文件

sudo nano /etc/httpd/conf.d/your-site.conf

内容如下:

<VirtualHost *:80>
    ServerName your-site
    DocumentRoot /var/www/your-site

    ErrorLog /var/log/httpd/your-site-error_log
    CustomLog /var/log/httpd/your-site-access_log combined

    <Directory /var/www/your-site>
        Options -Indexes +FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>

    <FilesMatch \.php$>
        SetHandler "proxy:unix:/run/php-fpm/www.sock|fcgi://localhost"
    </FilesMatch>
</VirtualHost>

<VirtualHost *:443>
    ServerName your-site
    DocumentRoot /var/www/your-site

    SSLEngine on
    SSLCertificateFile /etc/pki/tls/certs/your-site.pem
    SSLCertificateKeyFile /etc/pki/tls/private/your-site.key

    ErrorLog /var/log/httpd/your-site-ssl-error_log
    CustomLog /var/log/httpd/your-site-ssl-access_log combined

    <Directory /var/www/your-site>
        Options -Indexes +FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>

    <FilesMatch \.php$>
        SetHandler "proxy:unix:/run/php-fpm/www.sock|fcgi://localhost"
    </FilesMatch>
</VirtualHost>

按 ctrl+x 输入 y 后保存退出。

检查 Apache 配置是否存在语法错误,预期输出为:Syntax OK

sudo apachectl configtest

重启 Apache :

sudo systemctl restart httpd

配置 Cloudflare 缓存策略

确认域名已经接入 Cloudflare 代理 登录 Cloudflare 控制台 -> 进入您的域名 -> 打开 DNS 记录 ,确认 WordPress 实际使用的 A 记录,代理状态 为 已代理 ,即显示橙色云朵。

创建页面缓存规则

展开左侧菜单栏的 缓存 ,进入到 Cache Rules 页面,点击 创建规则 ,设置一个 规则名称 ,选中 自定义筛选表达式 ,点击 编辑表达式 ,填入如下规则:

(http.host in {"your-site.com"}
 and http.request.method in {"GET" "HEAD"}
 and not starts_with(http.request.uri.path, "/wp-admin")
 and http.request.uri.path ne "/wp-login.php"
 and not starts_with(http.request.uri.path, "/wp-json")
 and not starts_with(http.request.uri.path, "/xmlrpc.php")
 and not starts_with(http.request.uri.path, "/wp-cron.php")
 and not starts_with(http.request.uri.path, "/cart")
 and not starts_with(http.request.uri.path, "/checkout")
 and not starts_with(http.request.uri.path, "/my-account")
 and not (http.cookie contains "wordpress_logged_in_")
 and not (http.cookie contains "wordpress_sec_")
 and not (http.cookie contains "wp-postpass_")
 and not (http.cookie contains "comment_author_"))

缓存资格 选中 符合缓存条件 ,其它项默认,然后点击 部署 。

安装 WordPress

在浏览器输入我们绑定的域名 -> 语言选择界面,下拉选择 简体中文 -> 继续 -> 现在就开始 -> 数据库名 :输入我们创建的 WordPress 数据库 wp-database ,用户名 :输入我们创建的 HeatWave 用户 username ,密码 :输入我们创建 HeatWave 时设置的密码,数据库主机 :输入HeatWave 的专用 IP 地址 10.0.1.111 ,其它默认 -> 提交 -> 运行安装程序 -> 设置 WordPress 基本信息 -> 安装 WordPress -> 显示 成功 。

点击 登录 可以登录到 WordPress 后台。

WordPress 安装后设置

为了增强网站的安全性,WordPress 安装完成以后,建议调整一下网站文件的权限。 设置 wp-config.php 权限:

sudo chmod 400 /var/www/your-site/wp-config.php

重置所有目录和文件的 SELinux 策略为只读:

sudo semanage fcontext -a -t httpd_sys_content_t "/var/www/your-site(/.*)?"

允许 uploads 目录可写:

sudo semanage fcontext -a -t httpd_sys_rw_content_t "/var/www/your-site/wp-content/uploads(/.*)?"

重新应用 SELinux 策略:

sudo restorecon -R /var/www/your-site

当您需要修改网站文件,或者 WordPress 需要升级版本时,只需要将 SELinux 策略修改为可读写,完成以后重新设置为现在的策略即可。

发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注

滚动至顶部