更新系统
apt update -y && apt upgrade -y && apt install -y curl wget sudo socat unzip
安装docker和docker compose
curl -fsSL https://get.docker.com | sh
curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
创建目录
cd /home
mkdir web
cd web
mkdir html
mkdir mysql
mkdir certs
touch nginx.conf
nano docker-compose.yml
配置docker-compose
version: '3.8'
services:
nginx:
image: nginx
container_name: nginx
restart: always
ports:
- 80:80
- 443:443
volumes:
- ./nginx.conf:/etc/nginx/nginx.conf
- ./certs:/etc/nginx/certs
- ./html:/var/www/html
depends_on:
- php
php:
image: php:fpm
container_name: php
restart: always
volumes:
- ./html:/var/www/html
depends_on:
- mysql
mysql:
image: mysql
container_name: mysql
restart: always
ports:
- 3306:3306
volumes:
- ./mysql:/var/lib/mysql
environment:
- MYSQL_ROOT_PASSWORD=webroot
- MYSQL_DATABASE=web
- MYSQL_USER=自己填
- MYSQL_PASSWORD=自己填
申请证书
curl https://get.acme.sh | sh
~/.acme.sh/acme.sh --register-account -m xxxx@gmail.com --issue -d 域名1 -d 域名2 -d 域名3 --standalone --key-file /home/web/certs/key.pem --cert-file /home/web/certs/cert.pem --force
~/.acme.sh/acme.sh --installcert -d 域名1 -d 域名2 -d 域名3 --key-file /home/web/certs/key.pem --fullchain-file /home/web/certs/cert.pem
NGINX配置
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
client_max_body_size 1000m;
#上传限制参数1G以内文件可上传
# HTTP server
server {
listen 80;
server_name wp1.yuming.com;
# Redirect all HTTP requests to HTTPS
return 301 https://$host$request_uri;
}
# HTTPS server
server {
listen 443 ssl;
server_name wp1.yuming.com;
http2 on;
ssl_certificate /etc/nginx/certs/cert.pem;
ssl_certificate_key /etc/nginx/certs/key.pem;
root /var/www/html/wp1/wordpress;
index index.php;
try_files $uri $uri/ /index.php?$args;
# PHP-FPM configuration
location ~ \.php$ {
fastcgi_pass php:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
# HTTP server
server {
listen 80;
server_name wp2.yuming.com;
# Redirect all HTTP requests to HTTPS
return 301 https://$host$request_uri;
}
# HTTPS server
server {
listen 443 ssl;
server_name wp2.yuming.com;
http2 on;
ssl_certificate /etc/nginx/certs/cert.pem;
ssl_certificate_key /etc/nginx/certs/key.pem;
root /var/www/html/wp2/wordpress;
index index.php;
try_files $uri $uri/ /index.php?$args;
# PHP-FPM configuration
location ~ \.php$ {
fastcgi_pass php:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
# HTTP server
server {
listen 80;
server_name wp3.yuming.com;
# Redirect all HTTP requests to HTTPS
return 301 https://$host$request_uri;
}
# HTTPS server
server {
listen 443 ssl;
server_name wp3.yuming.com;
http2 on;
ssl_certificate /etc/nginx/certs/cert.pem;
ssl_certificate_key /etc/nginx/certs/key.pem;
root /var/www/html/wp3/wordpress;
index index.php;
try_files $uri $uri/ /index.php?$args;
# PHP-FPM configuration
location ~ \.php$ {
fastcgi_pass php:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
}
下载wordpress源码
cd /home/web/html/ && mkdir wp1 && wget https://cn.wordpress.org/wordpress-6.2.2-zh_CN.zip && unzip wordpress-6.2.2-zh_CN.zip -d wp1 && rm wordpress-6.2.2-zh_CN.zip
cd /home/web/html/ && mkdir wp2 && wget https://cn.wordpress.org/wordpress-6.2.2-zh_CN.zip && unzip wordpress-6.2.2-zh_CN.zip -d wp2 && rm wordpress-6.2.2-zh_CN.zip
cd /home/web/html/ && mkdir wp3 && wget https://cn.wordpress.org/wordpress-6.2.2-zh_CN.zip && unzip wordpress-6.2.2-zh_CN.zip -d wp3 && rm wordpress-6.2.2-zh_CN.zip
运行
cd /home/web && docker-compose up -d
赋予权限
docker exec -it nginx chmod -R 777 /var/www/html
docker exec -it php chmod -R 777 /var/www/html
安装PHP扩展
docker exec php apt update && docker exec php apt install -y libmariadb-dev-compat libmariadb-dev libzip-dev libmagickwand-dev imagemagick
docker exec php docker-php-ext-install mysqli pdo_mysql zip exif zip gd intl
docker exec php pecl install imagick && docker exec php sh -c 'echo "extension=imagick.so" > /usr/local/etc/php/conf.d/imagick.ini'
重启php
docker restart php
跳过FTP更新主题插件的限制
echo "define('FS_METHOD', 'direct');" >> /home/web/html/wp1/wordpress/wp-config.php
echo "define('FS_METHOD', 'direct');" >> /home/web/html/wp2/wordpress/wp-config.php
echo "define('FS_METHOD', 'direct');" >> /home/web/html/wp3/wordpress/wp-config.php
调整上传文件大小限制
docker exec -it php sh -c 'echo "upload_max_filesize=50M \n post_max_size=50M" > /usr/local/etc/php/conf.d/uploads.ini'
重启服务器
reboot
留言