用户工具

站点工具


使用docker配置vps

差别

这里会显示出您选择的修订版和当前版本之间的差别。

到此差别页面的链接

两侧同时换到之前的修订记录前一修订版
后一修订版
前一修订版
使用docker配置vps [2024/08/14 09:09] – [配置 Nginx Proxy Manager] liuf使用docker配置vps [2024/11/25 16:35] (当前版本) liuf
行 54: 行 54:
  
 ==== 配置通配符证书 ==== ==== 配置通配符证书 ====
 +NPM可以给每一个创建的子域名申请SSL证书,但是更推荐为自己的根域名申请一个通配符证书。一般来说,我的经验是进入NPM后第一件事,先申请证书。[[https://akau.cn/8108.html|这篇文章]]中说的挺详细,可以参考执行。我遇到的问题就是选中了使用DNS认证后,选择我进行域名解析的供应商DNSPod,之后需要填写认证信息。邮件是我的电子邮箱,下面的token一定不要与DNSPod中的腾讯云API弄混了,我一开始就犯了这个错误,导致一直不通过。做好正确的id与token配置后,就可以顺利进行了。此外,我看网上的案例,域名那里要填''*.liuf.net, liuf.net''两个,我一开始忘记了不带星的,但也没有遇到问题。后来还是按照网上说的,带星的不带星的都放上去了。我还没有找到明确的这样做的原因,但印象里之前很早配置VPS的时候这样弄过,好像为了规避什么问题,所以我也这样做了。
  
 ==== 配置 NPM 前端入口 ==== ==== 配置 NPM 前端入口 ====
 为了方便使用并且提升安全性,配置个NPM的前端入口。在域名解析那里加一个''npm.liuf.net''的二级域名,解析到服务器的IP地址,然后在NPM后台新增一个代理服务,在*详细内容*选项卡中,配置域名为''npm.liuf.net'',协议默认为''http''即可,转发主机配''0.0.0.0'',转发端口设''81''。下方的缓存资源、阻止常见漏洞、支持WebSockets三个选项都打开。在*SSL*选项卡中,SSL证书选择刚创建的''*.liuf.net, liuf.net'',下方的强制SSL,支持HTTP/2选项卡都打开,之后点保存,即可通过''npm.liuf.net''这个域名来访问NPM管理后台。 为了方便使用并且提升安全性,配置个NPM的前端入口。在域名解析那里加一个''npm.liuf.net''的二级域名,解析到服务器的IP地址,然后在NPM后台新增一个代理服务,在*详细内容*选项卡中,配置域名为''npm.liuf.net'',协议默认为''http''即可,转发主机配''0.0.0.0'',转发端口设''81''。下方的缓存资源、阻止常见漏洞、支持WebSockets三个选项都打开。在*SSL*选项卡中,SSL证书选择刚创建的''*.liuf.net, liuf.net'',下方的强制SSL,支持HTTP/2选项卡都打开,之后点保存,即可通过''npm.liuf.net''这个域名来访问NPM管理后台。
 +
 +===== 配置静态页面 =====
 +新建一个代理服务,*详细内容*标签页,域名填''liuf.net'',协议默认''http'',转发主机IP填''0.0.0.0'',转发端口填''80'',下面三个开关都选中;*SSL*标签页,选择之前创建的通配符证书,选中下面的''强制SSL''和''支持HTTP/2''两个开关;*高级*标签页,填入如下自定义配置:
 +<code nginx>
 +location / {
 +  root /data/static;
 +}
 +
 +location ~* ^/blog/ {
 +  rewrite ^/blog/(.*)$ https://blog.liuf.net/$1 permanent;
 +}
 +
 +location ~* ^/wiki/ {
 +  rewrite ^/wiki/(.*)$ https://wiki.liuf.net/$1 permanent;
 +}
 +</code>
 +第一块是静态页面的路径,之后记得创建''~/docker/npm/data/static''目录,静态内容都放在里面。后两块是之前博客URL的跳转。填好后点保存。
 ===== 配置 WordPress ===== ===== 配置 WordPress =====
 +创建运行配置文件夹''~/docker/wordpress'',并在里面创建''docker-compose.yml''
 +<code yaml>
 +services:
 +  db:
 +    image: mysql:8.0 # arm架构的机器请将mysql:5.7改为mysql:oracle
 +    # container_name: wordpress-db
 +    restart: unless-stopped
 +    command: --max-binlog-size=200M --expire-logs-days=2 # 使用mysql 8.0的小伙伴建议使用
 +    environment:
 +      MYSQL_ROOT_PASSWORD: rootpassword # 按需修改
 +      MYSQL_DATABASE: wordpress
 +      MYSQL_USER: wordpress
 +      MYSQL_PASSWORD: dbpassword # 按需修改
 +    volumes:
 +      - './db:/var/lib/mysql'
 +    networks:
 +      - default
 + 
 +  app:
 +    image: wordpress:latest
 +    # container_name: wordpress-app
 +    restart: unless-stopped
 +    ports:
 +      - 4145:80  # 按需修改。与防火墙开放端口一致。
 +    environment:
 +      WORDPRESS_DB_HOST: db
 +      WORDPRESS_DB_NAME: wordpress
 +      WORDPRESS_DB_USER: wordpress
 +      WORDPRESS_DB_PASSWORD: dbpassword # 按需修改
 +    volumes:
 +      - './app:/var/www/html'
 +    links:
 +      - db:db
 +    depends_on:
 +      - redis
 +      - db
 +    networks:
 +      - default
 + 
 +  redis:
 +    image: redis:alpine
 +    # container_name: wordpress-redis
 +    restart: unless-stopped
 +    volumes:
 +      - ./redis-data:/data
 +    networks:
 +      - default
 + 
 +networks:
 +  default:
 +    name: wordpress
 +</code>
  
 +里面有三处密码的地方可以修改,一个是MySQL实例的root密码,两个是wordpress数据库的访问密码。其实都是在这一个文件里面,改动的问题不大。最后执行命令创建并启动服务:
 +<code bash>sudo docker compose up -d</code>
 +
 +之后访问''liuf.net:4145''就能看到WordPress的安装界面了。不过这个时候不要操作,不然WordPress会记录当前的网址,这是我们不希望的。我们先配置好了Nginx反代,之后用正式的域名进入安装。
 +
 +==== 配置 NPM 反向代理 ====
 +NPM中创建一个新代理服务,*详细内容*页面里,域名填''blog.liuf.net'',协议选默认''http'',转发主机IP填''172.17.0.1'',转发端口填''4145''与docker的配置文件中一致,下面的三个开关都打开;在*SSL*页面中选上我们创建的通配符证书,打开强制与''支持HTTP/2''两个开关,之后点保存。
 +
 +这个转发主机的IP地址要填写Docker服务的,我一开始没仔细看,填了127.0.0.1,完全不通过,发现之后就没问题了。这个IP地址可以用这个命令来查询:<code bash>ip addr show docker0</code>
 +
 +==== 安装并配置 WordPress ====
 +访问''https://blog.liuf.net'',安装WordPress。调整docker实例中的PHP上传文件大小限制,否则无法导入之前WordPress的导出文件。[[https://blog.csdn.net/liangdingguo/article/details/127488661|这个页面]]写的挺详细,我就是参照它来操作的。
 +
 +首先,查看实例的id,通过这个命令获得:<code bash>sudo docker ps</code>
 +
 +之后进入这个实例:<code bash>sudo docker exec -it <实例id> /bin/bash</code>
 +
 +因为我们要编辑配置文件,而实例中没有编辑器,所以先安装 Neovim:
 +<code bash>
 +apt update
 +apt install neovim
 +</code>
 +
 +需要先刷新软件仓库才能安装。
 +
 +之后复制 PHP 配置文件:<code bash>cp /usr/local/etc/php/php.ini-production /usr/local/etc/php/php.ini</code>
 +
 +修改这个文件里的两处内容:
 +<code php>
 +upload_max_filesize = 20M #文件大小限制
 +post_max_size = 80M #post大小限制
 +</code>
 +
 +按 Ctrl+D 退出实例,重启实例:<code bash>sudo docker restart <实例id></code>
 +
 +之后可在WordPress进行导入操作。而且在这一步,不知道从哪个版本开始,支持自动导入资源,原本的图片都从之前的服务器复制了过来,并导入了WordPress进行管理,网址也正常。然后照着之前安装并启用插件、模板,并完成微调。我的WordPress使用了如下插件:
 +  * Akismet 反垃圾评论:垃圾评论保护
 +  * Parsedown for WordPress
 +  * WP-Syntax
 +  * 年度归档
 +  * 经典编辑器
 +  * Redis Object Cache
 +
 +最后一个插件是这次新装的,根据[[https://blognas.hwb0307.com/linux/docker/238|这篇文章]]中的说明进行了配置。
 +
 +我的WordPress继续使用GeneratePress模板,从后台安装即可。我习惯使用霞鹜文楷,在WordPress后台——外观——主题文件编辑器中,编辑''主题页眉(header.php)''文件,在''<head>''后面插入这段代码:<code php>
 +<!-- Screen version -->
 +<link rel="stylesheet" href="https://npm.elemecdn.com/lxgw-wenkai-screen-webfont@1.7.0/style.css" media="print" onload="this.media='all'">
 +</code>
 +
 +此外,Umami Analytics的跟踪代码也可以插在字体配置代码的后面。
 +
 +其他的调整就手动进行吧,比如favicon配置,在WordPress后台很多都可以直接设置了。
 ===== 配置 DokuWiki ===== ===== 配置 DokuWiki =====
 +因为没涉及数据库,DokuWiki更加简单。首先创建配置目录''~/docker/doku'',并在里面创建''docker-compose.yml''文件:
 +<code yaml>
 +services:
 +  dokuwiki:
 +    image: dokuwiki/dokuwiki:stable
 +    ports:
 +      - "4292:8080"
 +    environment:
 +      PHP_TIMEZONE: Asia/Shanghai
 +    volumes:
 +      - ./storage:/storage
 +</code>
 +
 +之后运行命令创建并启动实例:<code bash>sudo docker compose up -d</code>
 +
 +然后在NPM中创建代理,与上面一样,除了端口号是4292,就不赘述了。
 +
 +最后想办法把之前DokuWiki的''conf''、''data''、''lib''三个文件夹复制到创建的''storage''文件夹下面就可以了,简单粗暴。或许有更细致的方法,我没有尝试。至少我这么操作之后,之前全部的内容、配置什么的都过来了。
  
 +====== Docker 实例升级 ======
 +[[https://blog.laoda.de/archives/docker-issues|参考]]
  
 +按照参考链接里的说法,并进行了测试,需要在 Docker compose 所在的文件夹里执行以下命令:
 +<code bash>docker compose pull
 +docker compose up -d</code>
使用docker配置vps.1723597789.txt.gz · 最后更改: 2024/08/14 09:09 由 liuf