手动搭建WordPress(Linux)

更新时间:
重要

本文中含有需要您注意的重要提示信息,忽略该信息可能对您的业务造成影响,请务必仔细阅读。

WordPress是一款免费开源的网站内容管理系统(CMS),他可以帮助您简单、快捷地创建和管理自己的网站,包括博客、新闻网站、电子商务网站、社交网络等。WordPress拥有丰富的主题和插件库,可以轻松地为网站定制外观和功能。本教程介绍如何在不同操作系统的Linux实例上,手动搭建WordPress网站的方法。

准备工作

为已创建实例搭建WordPress网站,已创建的ECS实例必须满足以下条件:

  • 实例已分配公网IP地址或绑定弹性公网IP(EIP)。

    如果创建实例时未配置公网,请绑定EIP。具体操作,请参见绑定EIP

  • 实例的安全组入方向规则已放行22、80端口。具体操作,请参见添加安全组规则

    重要

    基于服务器数据安全考虑,本文仅说明部署与测试LNMP环境和WordPress网站所必需放行的端口,您可以根据实际需求,放行其他应用所需的端口号。例如,远程连接MySQL数据库时,需要放行MySQL默认占用的3306端口。

操作步骤

警告

不同的操作系统搭建WordPress的命令存在差异,请根据您的ECS实例操作系统选择对应的操作,否则会安装失败。本文档以Alibaba Cloud Linux 3/2、CentOS 7/8为例部署WordPress 6.4。

  1. 部署LNMP环境。具体操作,请参见手动部署LNMP环境(Alibaba Cloud Linux 3/2、CentOS 7/8)

    重要
    • 更多部署LNMP环境的方式,请参见部署LNMP环境。但WordPress对PHP、MySQL版本存在依赖关系,如果版本不匹配则会导致WordPress安装失败。具体依赖信息,请参见WordPress Compatibility

    • 本文档Web服务器为Nginx,如果您的服务器ECS实例已安装Apache,会出现80端口被占用的问题,导致WordPress无法访问。

  2. 远程连接ECS实例。

    具体操作,请参见使用Workbench工具以SSH协议登录Linux实例

  3. 配置WordPress数据库。

    1. 运行以下命令,进入MySQL数据库。

      说明

      使用root用户登录MySQL,并输入密码。密码为您在搭建LNMP环境时为数据库设置的密码。

      mysql -u root -p
    2. 运行以下命令,为WordPress网站创建一个名称为wordpress的数据库。

      create database wordpress;
    3. 运行以下命令,创建一个新用户user管理WordPress库,新用户密码为PASSword123.,以提高数据安全性。

      create user 'user'@'localhost' identified by 'PASSword123.';
      说明
      • 您可以使用show variables like "%password%";命令,查询MySQL的密码强度规则。本示例中密码规则要求:长度为8至30个字符,必须同时包含大小写英文字母、数字和特殊符号,其中特殊符号包含()` ~!@#$%^&*-+=|{}[]:;‘<>,.?/

      • MySQL在5.7版本后默认安装了密码强度验证插件validate_password。

    4. 运行以下命令,赋予用户对数据库wordpress的全部权限。

      grant all privileges on wordpress.* to 'user'@'localhost';
    5. 运行以下命令,使配置生效。

      flush privileges;
    6. 运行以下命令,退出MySQL。

      exit;
  4. 下载WordPress,并移动至网站根目录。

    1. 运行以下命令,进入Nginx网站根目录,下载WordPress压缩包。

      说明

      本示例默认安装的是WordPress中文版本。如果您需安装WordPress英文版本,需运行命令wget https://wordpress.org/wordpress-6.4.4.zip,下载WordPress英文版本压缩包。同时您需要注意,后续操作中压缩包的名称必须替换为wordpress-6.4.4.zip

      cd /usr/share/nginx/html
      sudo wget https://cn.wordpress.org/wordpress-6.4.4-zh_CN.zip
    2. (可选)运行以下命令,安装unzip命令。

      sudo yum install unzip -y
    3. 运行以下命令,解压WordPress压缩包。

      sudo unzip wordpress-6.4.4-zh_CN.zip
    4. 运行以下命令,将WordPress安装目录下的wp-config-sample.php文件复制到wp-config.php文件中,并将wp-config-sample.php文件作为备份。

      cd /usr/share/nginx/html/wordpress
      sudo cp wp-config-sample.php wp-config.php
  5. 修改WordPress配置文件。

    1. 运行以下命令,编辑wp-config.php文件。

      sudo vim wp-config.php
    2. i键进入编辑模式。

      根据已配置的WordPress数据库信息,修改MySQL相关配置信息示例如下所示。

      说明

      配置文件中的WordPress数据库名称、MySQL数据库用户名和密码需要和配置WordPress数据库中保持一致。

      // ** MySQL 设置 - 具体信息来自您正在使用的主机 ** //
      /** WordPress数据库的名称 */
      define('DB_NAME', 'wordpress');
      
      /** MySQL数据库用户名 */
      define('DB_USER', 'user');
      
      /** MySQL数据库密码 */
      define('DB_PASSWORD', 'PASSword123.');
      
      /** MySQL主机 */
      define('DB_HOST', 'localhost');
      说明

      WordPress网站的数据信息将通过数据库的user用户保存在名为wordpress的数据库中。

    3. Esc键,输入:wq后按Enter键,保存退出配置文件。

  6. 修改Nginx配置文件。

    Alibaba Cloud Linux 3/2、CentOS 7

    1. 运行以下命令,打开Nginx配置文件。

      sudo vim /etc/nginx/nginx.conf
    2. i键进入编辑模式。

      • server大括号内,将root后的内容替换为WordPress根目录。

        本示例中WordPress的根目录为/usr/share/nginx/html/wordpress

      • location ~ .php$大括号内,将root后的内容替换为WordPress根目录。

      说明

      替换为WordPress根目录时,需将WordPress根目录后加分号(;),否则无法重启Nginx服务。

      nginx配置文件

    3. Esc键,输入:wq后按Enter键,保存退出配置文件。

    4. 运行以下命令,重启Nginx服务。

      sudo systemctl restart nginx

    CentOS 8

    1. 运行以下命令,打开Nginx配置文件。

      sudo vi /etc/nginx/conf.d/default.conf
    2. i键进入编辑模式,替换WordPress根目录。

      本示例中WordPress的根目录为/usr/share/nginx/html/wordpress

      • location /大括号内,将root后的内容替换为WordPress根目录。nginx

      • location ~ \.php$大括号内,将root后的内容替换为WordPress根目录。nginx

    3. Esc键,输入:wq后按Enter键,保存退出配置文件。

    4. 运行以下命令,重启Nginx服务。

      sudo systemctl restart nginx
  7. 安装并登录WordPress网站。

    1. 在本地物理机上使用浏览器访问http://ECS实例公网IP,进入WordPress安装页面。

    2. 填写网站基本信息,然后单击安装WordPress

      填写信息参数说明:

      • 站点标题:WordPress网站的名称。例如:demowp。

      • 用户名:登录WordPress时所需的用户名,请注意安全性。例如:testwp。

      • 密码:登录WordPress时所需的密码,建议您设置安全性高的密码。例如:Wp.123456。

      • 您的电子邮件:用于接收通知的电子邮件。例如:username@example.com。

    3. 单击登录

    4. 输入在安装WordPress时设置的用户名testwp和密码Wp.123456,然后单击登录

      成功进入您个人的WordPress网站。使用WordPress的更多信息,请参见WordPress官网使用文档

相关操作

解析WordPress网站域名

通过实例公网IP地址直接访问您的WordPress网站会降低服务端的安全性。如果您已有域名或者想为WordPress网站注册一个域名,可以参考以下步骤。

  1. 注册域名。

    您可以在阿里云注册域名。具体操作,参见通用域名注册基本流程如何注册阿里云域名

  2. 备案域名。

    如果您的域名指向的网站托管在阿里云中国内地节点服务器,您需要进行备案。首次备案,请参见ICP备案流程,其他情况请参见ICP备案流程

    说明
    • 备案要求ECS实例的计费方式为包年包月且至少购买3个月,如果您的服务器购买时长不满足备案要求,需执行以下操作:

    • 整个备案流程预计所需时长约1~22个工作日左右,具体时长以实际操作时间为准。

    • 备案过程中的常见问题,请参见备案常见问题

  3. 解析域名。

    将域名指向实例公网IP。具体操作,请参见设置域名解析

    说明

    域名解析过程中的常见问题,请参见解析不生效类问题

  4. 将实例公网IP替换为新域名。

    1. 远程连接已搭建WordPress网站的ECS实例。

      具体操作,请参见连接实例

    2. 运行以下命令,登录MySQL数据库。

      mysql -u root -p
    3. 运行以下命令,切换至WordPress对应的数据库。

      use wordpress;
    4. 运行以下命令,为WordPress网站设置新域名。

      说明

      操作时需修改命令中的参数:

      • http://实例公网IP:替换为实际的实例公网IP。

      • http://www.example.com:替换为实际域名。

      update wp_options set option_value = replace(option_value, 'http://实例公网IP', 'http://www.example.com') where option_name = 'home' OR option_name = 'siteurl';
    5. 运行以下命令,退出MySQL。

      exit;

      成功为WordPress网站设置新域名。

常见问题

Q1:无法通过公网IP访问WordPress

可能原因及其解决方案:

  • 安全组未放开80端口、系统防火墙开启、80端口被占用

    具体排查方法,请参见无法访问ECS实例中的服务的排查方法

  • PHP、MySQL版本与WordPress版本不匹配

    WordPress对PHP、MySQL版本存在依赖关系,如果版本不匹配则会导致WordPress安装失败。具体依赖信息,请参见WordPress Compatibility

Q2:WordPress中设置固定链接后,跳转页面无法访问

网站设置为静态网页有利于搜索引擎收录网站。您在对WordPress站点设置固定链接前,需要先在Nginx服务器中设置为静态规则。操作步骤如下:

  1. 登录搭建WordPress的ECS实例。

    具体操作,请参见使用Workbench工具以SSH协议登录Linux实例

  2. 运行以下命令,打开Nginx配置文件。

    sudo vim /etc/nginx/nginx.conf
  3. i键进入编辑模式。

  4. location /大括号内,添加如下代码。

    if (-f $request_filename/index.html){
    rewrite (.*) $1/index.html break;
    }
    if (-f $request_filename/index.php){
    rewrite (.*) $1/index.php;
    }
    if (!-f $request_filename){
    rewrite (.*) /index.php;
    }
  5. Esc键,输入:wq后按Enter键,保存退出配置文件。

  6. 运行以下命令,重启Nginx服务。

    sudo systemctl restart nginx

Q3:WordPress中更新版本、上传主题或插件时,提示需要FTP登录凭证或无法创建目录

该问题可能是因为WordPress配置文件、主题或插件的权限不足,您可以参考以下步骤解决。

  1. 登录搭建WordPress的ECS实例。

    具体操作,请参见使用Workbench工具以SSH协议登录Linux实例

  2. 运行以下命令,打开WordPress配置文件。

    sudo vim /usr/share/nginx/html/wordpress/wp-config.php
  3. i键进入编辑模式。

  4. 在最下方,添加如下代码。

    define("FS_METHOD","direct");
    define("FS_CHMOD_DIR", 0777);
    define("FS_CHMOD_FILE", 0777);
  5. Esc键,输入:wq后按Enter键,保存退出配置文件。

  6. 返回WordPress仪表盘,刷新页面,可解决需要FTP登录凭证的问题。

    如果仍存在无法创建目录的问题,需再次返回ECS实例,运行以下命令,将网站根目录的权限用户更新为Nginx对应的用户,本示例环境中为nginx用户。

    sudo chown -R nginx /usr/share/nginx/html/wordpress

Q4:如何修改WordPress镜像中的MySQL 5.7数据库的默认用户名和密码?

  1. 远程连接安装WordPress镜像的ECS实例。

    具体操作,请参见使用Workbench工具以SSH协议登录Linux实例

  2. 运行以下命令,登录MySQL数据库。

    mysql -u root -p

    根据回显信息,输入MySQL数据库root用户的默认密码。

    [test@izbp1cgfkqcrs8pi2li**** ~]# mysql -u root -p
    Enter password:
    Welcome to the MySQL monitor.  Commands end with ; or \g.
    Your MySQL connection id is 3
    Server version: 5.7.23 MySQL Community Server (GPL)
    
    Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.
    
    Oracle is a registered trademark of Oracle Corporation and/or its
    affiliates. Other names may be trademarks of their respective
    owners.
    
    Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
    
    mysql>
  3. 运行以下命令,进入MySQL数据库。

    use mysql
    说明

    运行select user from mysql.user;命令,可查看MySQL数据库的用户名。

  4. 根据需求,修改数据库的用户名和密码。

    • 运行以下命令,修改数据库用户名为新用户名。

      update user set user="新用户名" where user="用户名";

      本示例将root用户名修改为admin,命令如下:

      update mysql.user set user="admin" where user="root";
    • 运行以下命令,修改数据库用户名的密码。

      update mysql.user set authentication_string=password("新密码") where user="要更新密码的用户名";

      本示例将root用户密码改为newpassword,命令如下:

      update mysql.user set authentication_string=password("newpassword") where user="root";
  5. 运行以下命令,刷新权限使修改生效。

    flush privileges; 
  6. 运行以下命令,退出MySQL数据库。

    quit;

相关文档