为了能快速在ARM的服务器上部署wordpress的网站系统,并具备基础的全部功能,适合搭建多站点,把自己部署的过程分享给大家。
- Wordpress:选择了最新的版本
- MariaDB:代码中我使用了MariaDB,ARM中使用MySQL可能会报错,镜像可以使用arm64v8/mysql来试试
- NginxProxyManager:镜像直接用了中文版的,更方便使用。
- Adminer: 相比使用phpmyadmin我认为adminer完全能满足我的需求,还不用额外一个容器来部署,所以它是单个php的文件,我在docker-compose部署代码中已经将文件挂载到wordpress的adminer目录中。
一、一键部署Wordpress、MariaDB(MySQL)、NginxProxyManager、Adminer
- 创建apps目录存放网站应用的所有文件,内部创建adminer目录(存放数据库管理工具)
mkdir apps && cd apps && mkdir adminer
- 前往Adminer下载最新版的数据库管理工具 www.adminer.org
- 将下载后的单个.php文件放置在apps下的adminer目录中,修改文件名为index.php
- 在apps目录下创建docker-compose.yml文件用于部署
nano docker-compose.yml
- 然后将yml文件内容复制进去
version: '3.8'
services:
npm:
image: chishin/nginx-proxy-manager-zh # 中文版NPM
restart: unless-stopped
ports:
- '80:80'
- '81:81'
- '443:443'
volumes:
- ./npm/data:/data
- ./npm/letsencrypt:/etc/letsencrypt
db:
image: mariadb:latest #可自行更换为MySQL
volumes:
- ./db:/var/lib/mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: rootpassword
MYSQL_DATABASE: site1
MYSQL_USER: site1
MYSQL_PASSWORD: site1password
site1:
depends_on:
- db
image: wordpress:latest
volumes:
- ./site1:/var/www/html
- ./adminer:/var/www/html/adminer
ports:
- '8001:80'
restart: always
environment:
WORDPRESS_DB_HOST: db
WORDPRESS_DB_NAME: site1
WORDPRESS_DB_USER: site1
WORDPRESS_DB_PASSWORD: site1password
如果想创建多个wordpress网站,可以在docker-compose.yml中复制site1代码到下方,并修改对应名称,端口号改成8002以此类推。然后需要使用adminer到数据库管理工具中添加对应的数据库和用户密码。这样就可以在一个使用一个数据库服务的容器下创建更多的数据库为其他wordpress服务。注:第二或更多的wordpress可以把挂载的adminer删除,因为只要在一个网站中有这个工具,他能管理其他的wordpress数据库。
- 使用命令启动配置文件
docker-compose up -d
二、绑定域名并开启SSL(https)
- 先将域名A解析到你的服务器IP
- 使用http://IP:81 访问NPM,登录账号:admin@example.com,密码:changeme
- 点击左侧“代理服务”,再点击新增“添加代理服务”
- 填入域名、IP地址、端口8001,开启下方阻止常见漏洞
- 转到SSL选项卡,选项中选择“申请一个新的SSL证书”,同意并保存
三、修改Wordpress上传限制(250M)
-
进入apps下的网站根目录,修改.htaccess文件
nano .htaccess -
将下面代码复制到文件最下方(代码中的大小限制可以自行修改)
php_value upload_max_filesize 250M
php_value post_max_size 256M
php_value max_execution_time 300
php_value max_input_time 300
四、使用Adminer操作的你数据库
- 通过http://ip:8001/adminer或https://域名/adminer 访问
- 服务填写上方创建的”db”,使用root或普通用户和密码,root登录可以不填写下方数据库
- 可以通过adminer增删改查数据库内容,创建新的数据库和用户(建第二个wordpres),导入导出数据库(网站迁移)。