释放小七猫的分享欲

使用阿里云 ECS 实例部署 wordpress 网站

categories: 技术 tags: NAS
@ 10/06/2026

使用阿里云 ECS 实例部署 wordpress 网站

阿里云给未注册用户提供了 300 元额度、为期 3 个月的试用,有效帮助了我们云计算的学习。

本篇文章以 wordpress 为例,讲解如何使用阿里云进行手动部署。

简单科普

目前主流的框架、网站部署都是使用 docker 或 podman 等容器技术运行,可以有效避免依赖地狱、环境冲突、配置管理等。但容器技术封装了太多的技术细节,对于我们的学习并不利好。

所以这里我们还是全手动来完成。

一个正式的网站部署大致需要:

  1. 运行环境搭建
  2. 资源文件部署
  3. 外部访问配置

创建阿里云实例

注意选择 ubuntu 22.04 系统,资源的话 2 核 4g、2 核 2g 都可以

登陆该实例:

搭建 LNMP 环境

LNMP 是 Linux、Nginx、MariaDB、Php 的简写,包括底层环境、代理、数据库和运行环境。

这些环境只是个名称而已,只要能实现功能就行,所以我们为了简单就不使用 MariaDB,使用 Mysql。

  1. L(Linux)更新系统
root@iZ2vc1i488lg0n7hoa83koZ:~# apt update
......
Fetched 48.5 MB in 7s (7,222 kB/s) Reading package lists... Done Building dependency tree... Done Reading state information... Done 38 packages can be upgraded. Run 'apt list --upgradable' to see them.

root@iZ2vc1i488lg0n7hoa83koZ:~# apt upgrade -y
......
Scanning processes... Scanning candidates... Scanning linux images... Running kernel seems to be up-to-date. Restarting services... systemctl restart multipathd.service packagekit.service polkit.service rsyslog.service ssh.service tuned.service udisks2.service Service restarts being deferred: systemctl restart ModemManager.service /etc/needrestart/restart.d/dbus.service systemctl restart networkd-dispatcher.service systemctl restart systemd-logind.service systemctl restart unattended-upgrades.service systemctl restart user@0.service No containers need to be restarted. No user sessions are running outdated binaries. No VM guests are running outdated hypervisor (qemu) binaries on this host.
  1. N(Nginx)

Nginx 有两种安装方式,一是直接使用包管理器安装,比较方便,但版本比较旧。而是添加官方的软件源,从软件源安装,版本比较新,有一些功能增强和性能优化。

直接使用 apt install nginx 从软件源安装 nginx。

官方安装方式参考:Ubuntu 安装 Nginx

安装 keyring:

sudo apt install curl gnupg2 ca-certificates lsb-release ubuntu-keyring

导入 key:

curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor \
    | sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null

验证 key:

gpg --dry-run --quiet --no-keyring --import --import-options import-show /usr/share/keyrings/nginx-archive-keyring.gpg

添加软件源:

echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] \
https://nginx.org/packages/ubuntu `lsb_release -cs` nginx" \
    | sudo tee /etc/apt/sources.list.d/nginx.list

(可选)修改优先级,让系统知道该安装哪个源的软件包:

echo -e "Package: *\nPin: origin nginx.org\nPin: release o=nginx\nPin-Priority: 900\n" \
    | sudo tee /etc/apt/preferences.d/99nginx

最后安装 Nginx

sudo apt update
sudo apt install nginx

可以通过 nginx -v 命令查看 nginx 版本

root@iZ2vcauj5vwcpoosrrf4ppZ:~# nginx -v
nginx version: nginx/1.30.2

Nginx 默认为启动一个网页,可以通过 http://[your_ip] 查看能否正常访问,如果不能访问则需要开放安全组。

  1. M(Mysql)
apt install mysql-{server,client}
# 下面这个也一样
# apt install mysql-server mysql-client

我们需要在数据库中添加一个 wordpress 专用的表

# 进入 mysql
$ mysql
Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 17 Server version: 8.0.46-0ubuntu0.22.04.2 (Ubuntu) Copyright (c) 2000, 2026, Oracle and/or its affiliates. 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.
# 创建名为 wordpress 的数据库
mysql> CREATE DATABASE wordpress;
Query OK, 1 row affected (0.00 sec)

# 创建名为 wordpressuser 的数据库用户
mysql> CREATE USER "wordpressuser"@"localhost" IDENTIFIED BY "123456";
# 赋予 wordpressuser 用户 wordpress 数据库的访问权限
mysql> GRANT ALL PRIVILEGES ON wordpress.* TO "wordpressuser"@"localhost";
Query OK, 0 rows affected (0.00 sec)

mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.01 sec)

mysql> EXIT
Bye
  1. P (PHP)

只安装 wordpress 必要的组件

apt install php php-fpm php-mysql

安装之后,查看一下 php-fpm 的版本,后面会用得到:

root@iZ2vcauj5vwcpoosrrf4ppZ:~# ls /run/php/
php8.1-fpm.pid php8.1-fpm.sock php-fpm.sock

记下 /run/php/php8.1-fpm.sock

部署 Wordpress

在官网下载 wordpress:

wget https://cn.wordpress.org/latest-zh_CN.zip
apt install unzip
unzip latest-zh_CN.zip

解压后会出现 wordpress 目录,将这个目录移动到 /var/www/ 目录下,这一步不是必须的,只是 nginx 推荐将网页放在该目录,出于规范考虑,这里就以该目录为示例。

ls /var/www/wordpress/ 列出文件,看是否正常。

root@iZ2vcauj5vwcpoosrrf4ppZ:/var/www/wordpress# ls
index.php wp-activate.php wp-comments-post.php wp-cron.php wp-load.php wp-settings.php xmlrpc.php license.txt wp-admin wp-config-sample.php wp-includes wp-login.php wp-signup.php readme.html wp-blog-header.php wp-content wp-links-opml.php wp-mail.php wp-trackback.php

然后修改该目录的文件权限:chown -R www-data:www-data wordpress; chmod -R 755 wordpress

进入 nginx 配置目录 cd /etc/nginx/sites-available/ (如果是官方版本,cd /etc/nginx/conf.d/),添加一个 nginx 正向代理配置 wordpress.conf。

server {
    listen 80;
    server_name [ip];
    root /var/www/wordpress;
    index index.php index.html index.htm;

    location / {
        try_files $uri $uri/ /index.php?$args;
    }

    location ~ \.php$ {
        include fastcgi_params;
        fastcgi_pass unix:/run/php/php8.1-fpm.sock;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }
}

需要修改两个地方,server_name 改为自己的 IP,fastcgi_pass 改为自己的 sock 文件地址

如果是 ubuntu 源里的 nginx,配置文件放在/etc/nginx/sites-available/,还需额外通过软链接进行启用:

cd /etc/nginx/sites-enabled
ln -s ../sites-available/wordpress.conf ./

确保安全组已经放行了 80 端口,或你使用的其他端口。

在浏览器中访问

在 wordpress 中初始化填入数据库的账户密码

点击提交、完成安装。

结语

虽然我们已经可以在公网访问该 wordpress,但网站的运营实际上才刚刚开始,后续我们还需要添加 SSL证书,做反向代理等,毕竟安全访问也是一个很重要的课题。