配置Docker
自动安装脚本
curl -fsSL https://get.docker.com -o get-docker.sh sudo sh get-docker.sh
sudo sh get-docker.sh
如果失败就手动安装
手动安装
# 卸载旧版本
sudo apt-get remove docker docker-engine docker.io containerd runc
# 设置仓库
sudo apt-get update
curl -fsSL https://mirrors.ustc.edu.cn/docker-ce/linux/debian/gpg | sudo apt-key add -
sudo add-apt-repository \
"deb [arch=amd64] https://mirrors.ustc.edu.cn/docker-ce/linux/debian \
$(lsb_release -cs) \
stable"
# 安装 Docker Engine-Community
sudo apt-get install docker-ce docker-ce-cli containerd.io
启动
注意!docker要在root模式下操作!
systemctl start docker
# 查看docker是否已启动
systemctl status docker
# 登录docker个人仓库
docker login
# 登出docker个人仓库
docker logout
MySQL
在安装MySQL之前先在服务器上建立一个文件夹用来存放修改配置文件,方便快速配置MySQL
mkdir -p software/mysql/conf software/mysql/logs software/mysql/data
安装MySQL
# 远程拉取MySQL的数据库
docker pull mysql
# 运行一个实例,设置密码为123456
docker run -it -d --name mysql -e MYSQL_ROOT_PASSWORD=123456 mysql
# 复制该实例的配置文件到服务器中
docker cp mysql:/etc/mysql/conf.d software/mysql/conf
# 删除旧实例
docker rm -f mysql
重新创建一个MySQL容器,并设置密码,这里我设置的为123456
docker run -it -d \
--name mysql \
-p 3306:3306 \
-v /home/admin/software/mysql/conf:/etc/mysql/conf.d \
-v /home/admin/software/mysql/logs:/logs \
-v /home/admin/software/mysql/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
mysql
# 查看容器是否创建成功
docker ps
配置数据库
docker exec -it mysql mysql -uroot -p
docker exec -it mysql: 这一部分用于通过 Docker 进入一个名为 "mysql" 的运行中的容器。-it 参数允许你与容器交互。
mysql -uroot -p: 这一部分用于启动 MySQL 客户端并以 "root" 用户身份进行登录。-p 选项表示密码将在后续步骤中输入。
切换到 mysql 数据库,这是一个内置的数据库用于存储 MySQL 的系统和权限信息
use mysql;
修改数据库 user 表进行远程连接,并设置密码 d$KPUdx(&SdkkX+B8
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'd$KPUdx(&SdkkX+B8';
# 刷新修改
flush privileges;
本机登录数据库
docker exec -it mysql mysql -uroot -p
远程服务器访问
hostname就是主机ip地址
mysql -h <hostname> -u root -p
WordPress
安装wordpress
# 拉取wordpress
docker pull wordpress
# 先运行一个wordpress实例
docker run -it -d --name wordpress --link mysql:mysql -p 9001:80 wordpress
# 从容器中复制目录到主机
docker cp wordpress:/var/www/html /home/admin/software/wordpress
# 删除刚安装的容器
docker rm -f wordpress
重新运行 wordpress 容器
docker run -it -d --name wordpress -p 9001:80 \
-v /home/admin/software/wordpress/:/var/www/html \
--link mysql:mysql \
wordpress
初始化配置
这里参照MySQL的部分,建一个名为wordpress的数据库
docker exec -it mysql mysql -uroot -p
CREATE DATABASE wordpress;
切换到wordpress 数据库
use wordpress;
修改数据库 user 表进行远程连接,并设置密码
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'd$KPUdx(&SdkkX+B8';
flush privileges;
修改WordPress具有对该文件夹的写权限。使用chown
命令更改文件夹的所有者为与WordPress进程运行用户相同的用户(通常为www-data
)
chown -R www-data:www-data /home/admin/software/wordpress
设置文件夹的权限,以便WordPress可以写入该文件夹。
sudo docker exec -it wordpress /bin/bash
chmod -R 755 /var/www/html
设置好后打开浏览器输入
http://<hostname>:9001
进入wordpress初始化界面,输入设置的用户名、密码、数据库所在服务器的IP地址,点击Submit提交。
下一页面点击Install WordPress
汉化后台
在wp-config.php文件末尾加一句:
define( 'WPLANG', 'zh_CH' );
重启wordpress的docker,进入后台面板 Setting->Site Language->zh_CH,Save Changes
Dashboard->Updates
重启wordpress的docker,进入后台面板 Setting->Site Language->简体中文
大功告成,后续使用也是打开浏览器输入url:
http://<hostname>:9001
Nginx
# 远程仓库拉取 nginx
docker pull nginx
# 运行一个 nginx 的容器
docker run -it -d --name nginx nginx
# 复制配置文件
docker cp nginx:/etc/nginx/ /home/admin/software/
# 删除 nginx 的容器
docker rm -f nginx
重新建立一个 nginx 的容器
docker run -it -d \
--name nginx \
-v /home/admin/software/nginx/:/etc/nginx/ \
-v /home/admin/software/nginx/logs:/var/log/nginx/ \
-v /home/admin/software/nginx/www/:/usr/share/nginx/html/ \
-p 80:80 -p 443:443 \
nginx
# 查看 nginx 是否正常运行
docker ps
HTTPS
按照以上步骤部署ssl证书
之前启动Nginx容器的时候是这样挂载文件的:
docker run -it -d \
--name nginx \
-v /home/admin/software/nginx/:/etc/nginx/ \
-v /home/admin/software/nginx/logs:/var/log/nginx/ \
-v /home/admin/software/nginx/www/:/usr/share/nginx/html/ \
-p 80:80 -p 443:443 \
nginx
这里上传ssl证书的路径就是 /home/admin/software/nginx/
修改default.conf配置文件如下,记得更换你自己的域名
nano /home/admin/software/nginx/conf.d/default.conf
server {
listen 80;
listen [::]:80;
server_name cognimatrix.com www.cognimatrix.com;
location / {
return 301 https://$host$request_uri;
}
}
server {
listen 443 ssl;
listen [::]:443 ssl;
server_name cognimatrix.com www.cognimatrix.com;
# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;
root /usr/share/nginx/html;
# SSL 配置
ssl_certificate /etc/nginx/cognimatrix.com_bundle.crt;
ssl_certificate_key /etc/nginx/cognimatrix.com.key;
ssl_session_timeout 5m;
#请按照以下协议配置
ssl_protocols TLSv1.2 TLSv1.3;
#请按照以下套件配置,配置加密套件,写法遵循 openssl 标准。
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
ssl_prefer_server_ciphers on;
location / {
proxy_pass http://35.167.53.27:9001/;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
error_page 404 /404.html;
location = /40x.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}
# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ \.php$ {
# proxy_pass http://127.0.0.1;
#}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
#location ~ \.php$ {
# root html;
# fastcgi_pass 127.0.0.1:9000;
# fastcgi_index index.php;
# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
# include fastcgi_params;
#}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
# deny all;
#}