本教程使用了docker+nginx的方式来搭建,系统为Ubuntu16.04
docker安装
方法一:
(1)先删除已有docker 存在版本
sudo apt-get remove docker docker-engine docker.io
(2)安装linux-image-extra-*包,以便docker 使用aufs 存储驱动
sudo apt-get update
sudo apt-get install \
linux-image-extra-$(uname -r) \
linux-image-extra-virtual
(3) 更新apt 包索引
sudo apt-get update
(4) 安装允许apt 通过HTTPS 来使用repository 的包
sudo apt-get install \
apt-transport-https \
ca-certificates \
curl \
software-properties-common
(5) 添加Docker 的官方GPG key,并验证该key 是否安装成功
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo apt-key fingerprint 0EBFCD88
sudo apt-get update
sudo apt-get install docker-ce
(6) amd64 位机器上使用如下命令来建立稳定的库
sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"
(7)安装Docker CE
sudo apt-get update
sudo apt-get install docker-ce
(8)设置开机自启动docker
sudo systemctl enable docker
sudo systemctl start docker
方法二:
直接使用脚本安装
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
验证docker是否安装好
docker --version
设置开机自启动docker
sudo systemctl enable docker
sudo systemctl start docker
docker-compose安装
方法一:使用curl从github中安装
1. 进入https://github.com/docker/compose/releases 查看最新版本,当前版本为1.29.2
sudo curl -L https://github.com/docker/compose/releases/download/1.29.2/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
2. 设置权限
sudo chmod +x /usr/local/bin/docker-compose
3. 查看是否安装成功
docker-compose --version
出现docker-compose version 1.29.2即安装成功
这种方法的速度非常非常慢,根本忍受不了,或者直接就连不上去,所以不是很推荐。
方法二:pip安装
sudo pip install docker-compose
验证是否安装好
docker-compose --version
不知道为什么我的机子用pip装不了,这时候就要采取第三种方法了。
方法三:离线安装
自己从github上把docker-compose下载下来然后上传到服务器上。
下载地址:
https://github.com/docker/compose/releases/download/1.29.2/docker-compose-Linux-x86_64
如果下载速度还是慢的话可以去下我下载好的,下载链接在文末会给出。
下载好了之后把文件放到/usr/local/bin/
这个目录下,接着设置权限
sudo chmod +x /usr/local/bin/docker-compose
查看是否安装成功
docker-compose --version
出现docker-compose version 1.29.2即安装成功。
nginx安装
nginx安装
sudo apt -y install nginx
启动nginx
sudo systemctl start nginx
设置nginx开机自启动
systemctl enable nginx.service
设置防火墙
- 允许http通信
sudo firewall-cmd --permanent --zone=public --add-service=http
- 允许https通信
sudo firewall-cmd --permanent --zone=public --add-service=https
- 重启防火墙
sudo firewall-cmd --reload
wordpress安装
前置工作准备好了
接下来找一个地方新建一个docker-compose.yml
的文件
version: '3.1'
services:
wordpress:
image: wordpress
container_name: wordpress
restart: always
ports:
- 17080:80
environment:
WORDPRESS_DB_HOST: db
WORDPRESS_DB_USER: wordpresswing
WORDPRESS_DB_PASSWORD: KDM2RwB5fcQ2X2
WORDPRESS_DB_NAME: wordpresswing
volumes:
- ./wordpress:/var/www/html
db:
image: mysql:5.7
container_name: wordpress_db
restart: always
environment:
MYSQL_DATABASE: wordpresswing
MYSQL_USER: wordpresswing
MYSQL_PASSWORD: KDM2RwB5fcQ2X2
MYSQL_RANDOM_ROOT_PASSWORD: '1'
volumes:
- ./db:/var/lib/mysql
17080是访问的端口号,这个可以自己改,后面利用nginx反向代理的时候需要用到这个端口号
接着在这个文件的路径下
docker-compose up -d
然后ip:端口号就可以访问的了
不过我还想要不用加端口号直接用域名就访问到,这就需要nginx反向代理了
nginx配置
在/etc/nginx/conf.d
里创建wordpress.conf
server {
listen 80;
listen [::]:80;
server_name 域名.com www.域名.com;
# redirect all HTTP requests to HTTPS with a 301 Moved Permanently response.
return 301 https://www.域名.com$request_uri;
}
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name 域名.com;
location / {
proxy_pass http://127.0.0.1:17080;//这里注意一下
proxy_http_version 1.1;
proxy_cache_bypass $http_upgrade;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Port $server_port;
}
# certs sent to the client in SERVER HELLO are concatenated in ssl_certificate
ssl_certificate xxxxx这里填ssl证书里的pem文件路径.pem;
ssl_certificate_key xxxxxx这里填ssl证书里的key文件路径.key;
ssl_session_timeout 1d;
ssl_session_cache shared:MozSSL:10m; # about 40000 sessions
ssl_session_tickets off;
# intermediate configuration
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
ssl_prefer_server_ciphers off;
# HSTS (ngx_http_headers_module is required) (63072000 seconds)
add_header Strict-Transport-Security "max-age=63072000" always;
# OCSP stapling
ssl_stapling on;
ssl_stapling_verify on;
}
然后重启nginx
systemctl restart nginx
在这里设置完之后不要忘记在wordpress的后台里面的地址也改成你的域名