通过Docker快速搭建workpress站点和开发环境。
快速搭建WordPress站点
- 安装docker和docker-compose
- 编写docker-compose.yaml文件,内容如下:
version: "3.1"
services:
mysql_youpudao:
image: mysql:8.0.18
restart: always
command: ['mysqld','--character-set-server=utf8','--default-authentication-plugin=mysql_native_password']
environment:
MYSQL_ROOT_PASSWORD: root_password #设置mysqlroot用户的密码
volumes:
- /var/lib/mysql_youpudao:/var/lib/mysql
ports:
- "3308:3306"
web_youpudao:
image: wordpress:latest
restart: always
depends_on:
- mysql_youpudao
environment:
WORDPRESS_DB_HOST: mysql_youpudao
WORDPRESS_DB_PASSWORD: root_password #设置mysqlroot用户的密码,之所以要用root密码,是因为WordPress需要用root用户来创建WordPress数据库。
ports:
- "8110:80"
working_dir: /var/www/html
volumes:
#测试环境可以这样设置
- "./:/var/www/html/"
#生产环境可以这样设置
- "/var/www/test.fitit100.com:/var/www/html/"
在docker-compose.yaml文件所在目录运行以下命令安装服务即可。
docker-compose up -d
要删除服务,运行以下命令:
docker-compose down #不删除volumes
docker-compose down --volumes #删除volumes,注意备份!!!
访问http://localhost:8110即可进入WordPress设置界面了。
设置WordPress
首次访问需要设置管理员的用户名和密码等,设置一下即可。通过以下命令,查看docker volume的实际路径,进入该目录就可以看到WordPress站点的所有源文件了。如果要对网站进行定制开发,则可以把网站内容发布到这里即可。
docker inspect docker-youpudao_volume_youpudao_web
修改PHP配置
默认情况下,php的文件上传大小限制为2M,所以一些大的主题文件就无法上传了,主要进入docker修改php.ini配置即可。
$ docker exec -it docker-youpudao_web_youpudao_1 /bin/bash
$ cd /usr/local/etc/php
$ cp php.ini-production php.ini
$ vi php.ini
把upload_max_filesize=2M改大一点,然后重启容器即可。
更好的配置方式
上面的配置方式中,我们需要进docker容器去修改php的配置文件,这样非常不方便,更好的方式是通过docker volume的方式加载配置文件到容器中。在项目的根目录下,新建一个uploads.ini文件,输入如下内容:
file_uploads = On
memory_limit = 64M
upload_max_filesize = 64M
post_max_size = 64M
max_execution_time = 600
然后修改docker-compose.yaml文件,把配置文件加载到容器中即可。
#省略...
volumes:
- "./:/var/www/html/"
- "./uploads.ini:/usr/local/etc/php/conf.d/uploads.ini"
另外,如果我们的域名是通过nginx来做转发的,还需要修改/etc/nginx/nginx.conf文件,添加client_max_body_size配置
user nginx;
worker_processes 1;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
#tcp_nopush on;
keepalive_timeout 65;
#gzip on;
client_max_body_size 128m;
include /etc/nginx/conf.d/*.conf;
}
评论区