更新系统

apt update -y && apt upgrade -y && apt install -y curl wget sudo socat unzip

安装docker

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

创建目录

mkdir -p dockerdata/web
cd web
mkdir html
mkdir mysql
mkdir certs
touch nginx.conf
touch docker-compose.yml

配置docker-compose

version: '3.8'

services:
  nginx:
    image: nginx:1.22
    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

  php:
    image: php:7.4.33-fpm     #PHP版本
    container_name: php
    restart: always
    volumes:
      - ./html:/var/www/html

  mysql:
    image: mysql:5.7.42         #SQL版本
    container_name: mysql
    restart: always
    volumes:
      - ./mysql:/var/lib/mysql
    environment:
      - MYSQL_ROOT_PASSWORD=***#SQL登录密码
      - MYSQL_DATABASE=***     #SQL名称
      - MYSQL_USER=****        #SQL账号
      - MYSQL_PASSWORD=******  #SQL密码

申请证书

curl https://get.acme.sh | sh

~/.acme.sh/acme.sh --register-account -m [email protected] --issue -d **wp1.domain.com** -d **wp1.domain.com** -d **wp1.domain.com** --standalone --key-file dockerdata/web/certs/key.pem --cert-file dockerdata/web/certs/cert.pem --force

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 test.cdyg.tk;   #自定义域名

    # Redirect all HTTP requests to HTTPS
    return 301 https://$host$request_uri;
}

# HTTPS server
server {
    listen 443 ssl http2;
    server_name test.cdyg.tk;  #自定义域名
    #证书路径
    ssl_certificate /etc/nginx/certs/cert.pem;
    ssl_certificate_key /etc/nginx/certs/key.pem;
    #网站目录路径
    root /var/www/html/onenav;
    index index.php;

    #try_files $uri $uri/ /index.php?$args;
#伪静态设置    
#安全设置
location ~* ^/(class|controller|initial|data|templates)/.*.(db3|php|php5|sql)$ {
    return 403;
}
location ~* ^/data/upload/.*.html$ {
        deny all;
}

#伪静态
rewrite ^/click/(.*) /index.php?c=click&id=$1 break;
rewrite ^/api/(.*)?(.*) /index.php?c=api&method=$1&$2 break;
rewrite /login /index.php?c=login break;
rewrite ^/(.*)/index.php /index.php?u=$1 break;
    #PHP设置
    # 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 gd intl bcmath opcache

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

标签: none