使用docker配置vps
差别
这里会显示出您选择的修订版和当前版本之间的差别。
后一修订版 | 前一修订版 | ||
使用docker配置vps [2024/08/13 10:04] – 创建 liuf | 使用docker配置vps [2024/11/25 16:35] (当前版本) – liuf | ||
---|---|---|---|
行 1: | 行 1: | ||
+ | ====== 使用 Docker 配置 VPS ====== | ||
今天我正式把自己的网页使用 Docker 来管理配置。并且,把域名里的子目录全部改成了二级域名的格式,因为用同一套 Nginx 给不同的子目录做配置实在是太麻烦了,不如通过二级域名反代到不同的本地服务上,更加清晰、优雅。 --- // | 今天我正式把自己的网页使用 Docker 来管理配置。并且,把域名里的子目录全部改成了二级域名的格式,因为用同一套 Nginx 给不同的子目录做配置实在是太麻烦了,不如通过二级域名反代到不同的本地服务上,更加清晰、优雅。 --- // | ||
+ | ===== 服务器配置 ===== | ||
+ | 我在一台Linode新的VPS实例上进行操作实验,测试成功后在目前部署在腾讯云的服务器上面进行了配置。两者的操作系统都是 Debian 12(测试过 Ubuntu 24.04 出过问题),登录后先更新系统,创建普通用户。 | ||
+ | |||
+ | 如果需要配置服务器时区,可以使用[[vpsnotes# | ||
+ | |||
+ | ===== 安装 Docker ===== | ||
+ | Docker 在软件仓库有多个版本,我最终选择了官网上的[[https:// | ||
+ | <code bash> | ||
+ | # Add Docker' | ||
+ | sudo apt-get update | ||
+ | sudo apt-get install ca-certificates curl | ||
+ | sudo install -m 0755 -d / | ||
+ | sudo curl -fsSL https:// | ||
+ | sudo chmod a+r / | ||
+ | |||
+ | # Add the repository to Apt sources: | ||
+ | echo \ | ||
+ | "deb [arch=$(dpkg --print-architecture) signed-by=/ | ||
+ | $(. / | ||
+ | sudo tee / | ||
+ | sudo apt-get update | ||
+ | </ | ||
+ | |||
+ | ===== 配置 Nginx Proxy Manager ===== | ||
+ | Nginx Proxy Manager(NPM)是一个通过 web 前端进行 Nginx 配置的工具,我这次刚刚知道。有了它就不需要自己编写 Nginx 的配置文件了,这还不算厉害,它可以自动配置 Let's Encrypt 的加密证书就让我很震惊了。因为我之前几次配置失败,很多就是 SSL 配置不好的原因。 | ||
+ | |||
+ | [[https:// | ||
+ | |||
+ | 首先创建服务的配置文件夹:< | ||
+ | |||
+ | 在这个文件夹里面创建 Docker Compose 配置文件: | ||
+ | <code yaml> | ||
+ | services: | ||
+ | app: | ||
+ | image: ' | ||
+ | restart: unless-stopped | ||
+ | ports: | ||
+ | - ' | ||
+ | - ' | ||
+ | - ' | ||
+ | volumes: | ||
+ | - ./ | ||
+ | - ./ | ||
+ | # network_mode: | ||
+ | </ | ||
+ | 我是用的汉化的版本,因此镜像名称与官方网站上的不一样。据网站上说:// | ||
+ | |||
+ | 最后在同一文件夹中启动服务:< | ||
+ | |||
+ | 正常情况下,访问 '' | ||
+ | |||
+ | ==== 配置通配符证书 ==== | ||
+ | NPM可以给每一个创建的子域名申请SSL证书,但是更推荐为自己的根域名申请一个通配符证书。一般来说,我的经验是进入NPM后第一件事,先申请证书。[[https:// | ||
+ | |||
+ | ==== 配置 NPM 前端入口 ==== | ||
+ | 为了方便使用并且提升安全性,配置个NPM的前端入口。在域名解析那里加一个'' | ||
+ | |||
+ | ===== 配置静态页面 ===== | ||
+ | 新建一个代理服务,*详细内容*标签页,域名填'' | ||
+ | <code nginx> | ||
+ | location / { | ||
+ | root / | ||
+ | } | ||
+ | |||
+ | location ~* ^/blog/ { | ||
+ | rewrite ^/ | ||
+ | } | ||
+ | |||
+ | location ~* ^/wiki/ { | ||
+ | rewrite ^/ | ||
+ | } | ||
+ | </ | ||
+ | 第一块是静态页面的路径,之后记得创建'' | ||
+ | ===== 配置 WordPress ===== | ||
+ | 创建运行配置文件夹'' | ||
+ | <code yaml> | ||
+ | services: | ||
+ | db: | ||
+ | image: mysql:8.0 # arm架构的机器请将mysql: | ||
+ | # container_name: | ||
+ | restart: unless-stopped | ||
+ | command: --max-binlog-size=200M --expire-logs-days=2 # 使用mysql 8.0的小伙伴建议使用 | ||
+ | environment: | ||
+ | MYSQL_ROOT_PASSWORD: | ||
+ | MYSQL_DATABASE: | ||
+ | MYSQL_USER: wordpress | ||
+ | MYSQL_PASSWORD: | ||
+ | volumes: | ||
+ | - ' | ||
+ | networks: | ||
+ | - default | ||
+ | |||
+ | app: | ||
+ | image: wordpress: | ||
+ | # container_name: | ||
+ | restart: unless-stopped | ||
+ | ports: | ||
+ | - 4145: | ||
+ | environment: | ||
+ | WORDPRESS_DB_HOST: | ||
+ | WORDPRESS_DB_NAME: | ||
+ | WORDPRESS_DB_USER: | ||
+ | WORDPRESS_DB_PASSWORD: | ||
+ | volumes: | ||
+ | - ' | ||
+ | links: | ||
+ | - db:db | ||
+ | depends_on: | ||
+ | - redis | ||
+ | - db | ||
+ | networks: | ||
+ | - default | ||
+ | |||
+ | redis: | ||
+ | image: redis: | ||
+ | # container_name: | ||
+ | restart: unless-stopped | ||
+ | volumes: | ||
+ | - ./ | ||
+ | networks: | ||
+ | - default | ||
+ | |||
+ | networks: | ||
+ | default: | ||
+ | name: wordpress | ||
+ | </ | ||
+ | |||
+ | 里面有三处密码的地方可以修改,一个是MySQL实例的root密码,两个是wordpress数据库的访问密码。其实都是在这一个文件里面,改动的问题不大。最后执行命令创建并启动服务: | ||
+ | <code bash> | ||
+ | |||
+ | 之后访问'' | ||
+ | |||
+ | ==== 配置 NPM 反向代理 ==== | ||
+ | NPM中创建一个新代理服务,*详细内容*页面里,域名填'' | ||
+ | |||
+ | 这个转发主机的IP地址要填写Docker服务的,我一开始没仔细看,填了127.0.0.1,完全不通过,发现之后就没问题了。这个IP地址可以用这个命令来查询:< | ||
+ | |||
+ | ==== 安装并配置 WordPress ==== | ||
+ | 访问'' | ||
+ | |||
+ | 首先,查看实例的id,通过这个命令获得:< | ||
+ | |||
+ | 之后进入这个实例:< | ||
+ | |||
+ | 因为我们要编辑配置文件,而实例中没有编辑器,所以先安装 Neovim: | ||
+ | <code bash> | ||
+ | apt update | ||
+ | apt install neovim | ||
+ | </ | ||
+ | |||
+ | 需要先刷新软件仓库才能安装。 | ||
+ | |||
+ | 之后复制 PHP 配置文件:< | ||
+ | |||
+ | 修改这个文件里的两处内容: | ||
+ | <code php> | ||
+ | upload_max_filesize = 20M # | ||
+ | post_max_size = 80M # | ||
+ | </ | ||
+ | |||
+ | 按 Ctrl+D 退出实例,重启实例:< | ||
+ | |||
+ | 之后可在WordPress进行导入操作。而且在这一步,不知道从哪个版本开始,支持自动导入资源,原本的图片都从之前的服务器复制了过来,并导入了WordPress进行管理,网址也正常。然后照着之前安装并启用插件、模板,并完成微调。我的WordPress使用了如下插件: | ||
+ | * Akismet 反垃圾评论:垃圾评论保护 | ||
+ | * Parsedown for WordPress | ||
+ | * WP-Syntax | ||
+ | * 年度归档 | ||
+ | * 经典编辑器 | ||
+ | * Redis Object Cache | ||
+ | |||
+ | 最后一个插件是这次新装的,根据[[https:// | ||
+ | |||
+ | 我的WordPress继续使用GeneratePress模板,从后台安装即可。我习惯使用霞鹜文楷,在WordPress后台——外观——主题文件编辑器中,编辑'' | ||
+ | <!-- Screen version --> | ||
+ | <link rel=" | ||
+ | </ | ||
+ | |||
+ | 此外,Umami Analytics的跟踪代码也可以插在字体配置代码的后面。 | ||
+ | |||
+ | 其他的调整就手动进行吧,比如favicon配置,在WordPress后台很多都可以直接设置了。 | ||
+ | ===== 配置 DokuWiki ===== | ||
+ | 因为没涉及数据库,DokuWiki更加简单。首先创建配置目录'' | ||
+ | <code yaml> | ||
+ | services: | ||
+ | dokuwiki: | ||
+ | image: dokuwiki/ | ||
+ | ports: | ||
+ | - " | ||
+ | environment: | ||
+ | PHP_TIMEZONE: | ||
+ | volumes: | ||
+ | - ./ | ||
+ | </ | ||
+ | |||
+ | 之后运行命令创建并启动实例:< | ||
+ | |||
+ | 然后在NPM中创建代理,与上面一样,除了端口号是4292,就不赘述了。 | ||
+ | |||
+ | 最后想办法把之前DokuWiki的'' | ||
+ | |||
+ | ====== Docker 实例升级 ====== | ||
+ | [[https:// | ||
+ | |||
+ | 按照参考链接里的说法,并进行了测试,需要在 Docker compose 所在的文件夹里执行以下命令: | ||
+ | <code bash> | ||
+ | docker compose up -d</ |
使用docker配置vps.1723514650.txt.gz · 最后更改: 2024/08/13 10:04 由 liuf