ECS 启动三个workdpress 容器

阿里云 ECS 服务器 通过 nginx域名分发 配置多个wordpress 博客

了## 阿里云 ECS 服务器 通过 nginx 配置多个wordpress 博客

众所周知,做SEO最好的CMS发布系统,就是WordPress了,在这个云服务器时代,当然是自己买一台云服务器,然后自己在上面搭一个wordpress了。

docker install


启动:systemctl start docker

# install Add Docker's official GPG key:
sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc

# Add the repository to Apt sources:
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
  $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update

sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

通过 docker 启动 wordpress 容器

  • 购买一台ECS的服务器,我购买的配置如下:

阿里云 ECS服务器
阿里云 ECS服务器

ECS购买链接
然后通过shell 脚本远程登录, 执行如下脚本,如果没有安装 docker 和 workdpress 镜像,自己进行相应的下载。

docker run --name xunl -p 8080:80 -v /root/xunl:/var/www/html -d wordpress

docker run --name smartshop -p 8081:80 -v /root/smartshop:/var/www/html -d wordpress

docker run --name ssevening -p 8080:80 -v /root/wordpress:/var/www/html -d wordpress

这个时候,通过IP 加 端口已经可以访问你的wordpress 网站了,但我们还没有绑定域名。

我们把域名的DNS解析指向到 当前的主机IP。

如果启动失败,你在国内的话,需要更新源

在daemon.json中添加想要使用的镜像源
{
“registry-mirrors”: [“https://rsk59qvc.mirror.aliyuncs.com”]
}


1.网易 http://hub-mirror.c.163.com
2.Docker中国区官方镜像 https://registry.docker-cn.com
3.中国科技大学 https://docker.mirrors.ustc.edu.cn
4.阿里云容器 服务 https://rsk59qvc.mirror.aliyuncs.com

然后加载配置文件如下

sudo systemctl daemon-reload
sudo systemctl restart docker


安装 nginx 服务器,用来分流。

最一开始的时候,我nginx 也是使用的docker 容器来启动后,但发现 docker 容器没办法 访问其他的docker 容器的网络。

所以 我就直接在 ubuntu 里面安装了 nginx.

echo "deb http://nginx.org/packages/mainline/ubuntu `lsb_release -cs` nginx" \
    | sudo tee /etc/apt/sources.list.d/nginx.list
curl -o /tmp/nginx_signing.key https://nginx.org/keys/nginx_signing.key
sudo mv /tmp/nginx_signing.key /etc/apt/trusted.gpg.d/nginx_signing.asc

sudo apt update
sudo apt install nginx
-- 这样是安装最新版本的nginx
sudo apt-get install nginx

我们在服务器 上执行上述脚本安装 nginx。

安装好的文件位置:

/usr/sbin/nginx:主程序

/etc/nginx:存放配置文件

/usr/share/nginx:存放静态文件

/var/log/nginx:存放日志

sudo service nginx start

可以通过上述命令启动 nginx服务器。

这个时候,就可以通过域名直接访问80端口了。

配置nginx的分流。

我们一步到位,直接给出全的配置文件来。

user www-data;
worker_processes auto;
pid /run/nginx.pid;
include /etc/nginx/modules-enabled/*.conf;

events {
    worker_connections 768;
    # multi_accept on;
}

http {

    ##
    # Basic Settings
    ##

    sendfile on;
    tcp_nopush on;
    tcp_nodelay on;
    keepalive_timeout 65;
    types_hash_max_size 2048;
    # server_tokens off;

    # server_names_hash_bucket_size 64;
    # server_name_in_redirect off;

    include /etc/nginx/mime.types;
    default_type application/octet-stream;

    ##
    # SSL Settings
    ##

    ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3; # Dropping SSLv3, ref: POODLE
    ssl_prefer_server_ciphers on;

    ##
    # Logging Settings
    ##

    error_log /var/log/nginx/error.log;
    rewrite_log on;
    log_format  main    
    ' $remote_user [$time_local]  $http_x_Forwarded_for $remote_addr  $request '  
    '$http_x_forwarded_for '                       
    '$upstream_addr '                        
    'ups_resp_time: $upstream_response_time '                        
    'request_time: $request_time';  

    access_log /var/log/nginx/access.log main;  

    ##
    # Gzip Settings
    ##

    gzip on;

    # gzip_vary on;
    # gzip_proxied any;
    # gzip_comp_level 6;
    # gzip_buffers 16 8k;
    # gzip_http_version 1.1;
    # gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;

    ##
    # Virtual Host Configs
    ##
proxy_cache_path  /tmp/http-cache levels=1:2 keys_zone=STATIC:20m max_size=5g inactive=24h loader_threshold=300 loader_files=200;

 server {
listen 443 ssl;    
server_name xunl.net www.xunl.net; 
    access_log on;
    access_log /var/log/nginx/xunl.log;
    ssl_certificate     /root/nginx_ssl/6464464_www.xunl.net.pem;
    ssl_certificate_key  /root/nginx_ssl/6464464_www.xunl.net.key;
    # ssl验证相关配置
    ssl_session_timeout  5m;    #缓存有效期
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;    #加密算法
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;    #安全链接可选的加密协议
    ssl_prefer_server_ciphers on;   #使用服务器端的首选算法

    location / { 
        proxy_pass http://localhost:8082;   
        proxy_set_header Host $host;
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
          client_max_body_size 32m;  
    }
  }

  server {
    listen 443 ssl; 
    server_name bestsmartshop.com www.bestsmartshop.com; 
    access_log on;
    access_log /var/log/nginx/smartshop.log;

    ssl_certificate     /root/nginx_ssl/6462954_www.bestsmartshop.com.pem; 
    ssl_certificate_key  /root/nginx_ssl/6462954_www.bestsmartshop.com.key;

    # ssl验证相关配置
    ssl_session_timeout  5m;    #缓存有效期
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;    #加密算法
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;    #安全链接可选的加密协议
    ssl_prefer_server_ciphers on;   #使用服务器端的首选算法

     location / { 
        proxy_pass http://localhost:8081;      
        proxy_set_header Host $host;
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
          client_max_body_size 32m; 
    }     
  }

  server {
    listen 443 ssl; 
    server_name ssevening.com www.ssevening.com; 
    access_log on;
    access_log /var/log/nginx/ssevening.log;

    ssl_certificate     /root/nginx_ssl/6463350_www.ssevening.com.pem; 
    ssl_certificate_key  /root/nginx_ssl/6463350_www.ssevening.com.key;

    # ssl验证相关配置
    ssl_session_timeout  5m;    #缓存有效期
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;    #加密算法
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;    #安全链接可选的加密协议
    ssl_prefer_server_ciphers on;   #使用服务器端的首选算法

    location / { 
        proxy_pass http://localhost:8080;      
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
         proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
         client_max_body_size 32m; 
         proxy_cache STATIC;
        proxy_cache_valid  200 206 304 301 302 10d;
        proxy_cache_valid  404 1d;
        proxy_cache_key $scheme$proxy_host$request_uri;

    }     
  }

server {
    listen       80;
    server_name  bestsmartshop.com www.bestsmartshop.com;
    return 301 https://$server_name$request_uri;
}

server {
    listen       80;
    server_name  ssevening.com www.ssevening.com;

    if ($scheme = http) {
        return 301 https://$host$request_uri;
    }
}

server {
    listen       80;
    server_name  xunl.net www.xunl.net;

    if ($scheme = http) {
        return 301 https://$host$request_uri;
    }
}

    include /etc/nginx/conf.d/*.conf;
    include /etc/nginx/sites-enabled/*;
}

#mail {
#   # See sample authentication script at:
#   # http://wiki.nginx.org/ImapAuthenticateWithApachePhpScript
# 
#   # auth_http localhost/auth.php;
#   # pop3_capabilities "TOP" "USER";
#   # imap_capabilities "IMAP4rev1" "UIDPLUS";
# 
#   server {
#       listen     localhost:110;
#       protocol   pop3;
#       proxy      on;
#   }
# 
#   server {
#       listen     localhost:143;
#       protocol   imap;
#       proxy      on;
#   }
#}

所以现在我们来看看 ECS服务器上 启动了 三个 docker 容器如下:
ECS 启动三个workdpress 容器

去ping 三个域名的话,三个域名 都是指向到一个IP的。

会了这个的话,大家可以去卖博客服务器了。然后每年都收租金就不是梦了。

https ssl 的配置

自己申请SSL证书后,然后上传并配置就可以了。

修改 wordpress 后台的配置地址为 域名网址


  • 两个网址都修改为:https://www.ssevening.com (替换为你的域名)



  • 先不要着急去验证,再去配置下面的 wp-config.php



  • 然后才会大功告成。


wordpress admin 目录循环重定向的问题解决

添加 $_SERVER['HTTPS'] = 'on' 到 wp-config.php 中

参考:https://qastack.cn/wordpress/170165/wordpress-wp-admin-https-redirect-loop

你可能还想了解

修改wordpress 文件上传大小

最后,加一个Zip命令,经常用来备份的:
zip a.zip -r dir

du -h 用来查看文件夹的大小

server.crt 证书转换为:pem 证书命令:
openssl x509 -in www.ssevening.com_server.crt -out www.ssevening.com_server.pem

启动远程 selenium docker容器
docker run –name chrome -d -p 4445:4444 -v /dev/shm:/dev/shm selenium/standalone-chrome

docker run \
--name superdeal \
-p 8088:80 \
-e GOOGLE_APPLICATION_CREDENTIALS=/tmp/google_cloud.json \
-v /Users/pan/google_cloud.json:/tmp/google_cloud.json:ro \
-d ssevening/gs-spring-boot-docker
-- 查找
grep -r "Blog details" ./
-- 再备注一次,查找某文件夹下包含特定字符串
grep -r "trp-language-wrap" .

几个域名相关的指令
traceroute reads.alibaba.com
dig +trace reads.alibaba.com
dig reads.alibaba.com
nslookup reads.alibaba.com

nginx wordpressnginx wordpress 设定nginx wordpress dockernginx wordpress confignginx wordpress 502nginx wordpress 404nginx wordpress sslnginx wordpress installnginx wordpress 502 bad gatewaynginx wordpress https

最后,还有BBR。

个人微信:ssevening

发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注