Loading... ## 搭建 #### 0. 初始设置 ```shell sudo -i # 切换到root用户 apt update -y # 升级packages apt install wget curl sudo vim git # Debian系统比较干净,安装常用的软件 ``` 创建一下安装的目录: ```bash mkdir -p /root/data/docker_data/typecho cd /root/data/docker_data/typecho ``` 先创建几个文件。 #### 1. mysql ```bash cd /root/data/docker_data/typecho nano mysql.env ``` 填入下面的内容: ```bash MYSQL_ROOT_PASSWORD=root_pass MYSQL_DATABASE=typecho MYSQL_USER=username MYSQL_PASSWORD=password ``` #### 2. php-fpm 其中 php 目录为 `php-fpm` 的 Dockerfile,在官方镜像的基础上,添加了 `PDO_MYSQL`(如果使用 MySQL 作为 Typecho 的数据库,则需安装此扩展),并设置 `buffer` 为 `4kb`,即一个内存页。同时设置了时区为`RPC`,来源于[issue](https://github.com/typecho/typecho/issues/1090): ```bash cd /root/data/docker_data/typecho mkdir php cd php nano Dockerfile ``` 输入下面的内容: ```bash FROM php:7.3.29-fpm RUN apt-get update \ && docker-php-ext-install pdo_mysql \ && echo "output_buffering = 4096" > /usr/local/etc/php/conf.d/php.ini \ && echo "date.timezone = PRC" >> /usr/local/etc/php/conf.d/php.ini ``` #### 3. nginx nginx 的配置要注意的是需要有`rewrite` 规则(后续typecho后台有一个地址重写功能),如果需要指定域名的话,需要写 `server_name` 字段。这里我并没有指定`443`端口,因为我们后面用到了反向代理。 ```bash cd /root/data/docker_data/typecho mkdir nginx cd nginx nano default.conf ``` 输入下面的内容: ```nginx server { listen 80 default_server; root /var/www/html; index index.php; access_log /var/log/nginx/typecho_access.log main; if (!-e $request_filename) { rewrite ^(.*)$ /index.php$1 last; } location / { index index.html index.htm index.php; if (!-e $request_filename) { rewrite . /index.php last; } } location ~ \.php(.*)$ { fastcgi_pass php:9000; fastcgi_index index.php; fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info; fastcgi_split_path_info ^((?U).+\.php)(/?.+)$; fastcgi_param PATH_INFO $fastcgi_path_info; fastcgi_param SCRIPT_NAME $fastcgi_script_name; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } } ``` 下载源码: ```bash cd /root/data/docker_data/typecho/typecho wget https://github.com/typecho/typecho/releases/download/v1.2.1/typecho.zip apt install zip -y unzip typecho.zip ``` 给 upload 文件权限 ```bash cd /root/data/docker_data/typecho/typecho/usr chmod -R 777 uploads/ #设置upload权限 ls -al #查看upload权限是否设置正确 ``` 创建`docker-compose`文件。 ```bash cd /root/data/docker_data/typecho nano docker-compose.yml ``` `docker-compose.yml`内容如下: ```yaml version: "3" services: nginx: image: nginx ports: - "8223:80" # 左边可以改成任意没使用的端口 restart: always environment: - TZ=Asia/Shanghai volumes: - ./typecho:/var/www/html - ./nginx:/etc/nginx/conf.d - ./logs:/var/log/nginx depends_on: - php networks: - web php: build: php restart: always expose: - "9000" # 不暴露公网,故没有写9000:9000 volumes: - ./typecho:/var/www/html environment: - TZ=Asia/Shanghai depends_on: - mysql networks: - web mysql: image: mysql:5.7 restart: always environment: - TZ=Asia/Shanghai expose: - "3306" # 不暴露公网,故没有写3306:3306 volumes: - ./mysql/data:/var/lib/mysql - ./mysql/logs:/var/log/mysql - ./mysql/conf:/etc/mysql/conf.d env_file: - mysql.env networks: - web networks: web: ``` <div class="tip inlineBlock warning"> 注意:如果VPS的内存比较小 ,推荐设置一下SWAP,一般为内存的1-1.5倍即可。 </div> 设置SWAP可以用脚本: ```bash wget -O box.sh https://raw.githubusercontent.com/BlueSkyXN/SKY-BOX/main/box.sh && chmod +x box.sh && clear && ./box.sh ``` 没问题的话,`ctrl+x`退出,按`y`保存,`enter`确认。 查看端口是否被占用,输入: ```bash lsof -i:8223 #查看8223端口是否被占用,如果被占用,重新自定义一个端口 ``` 如果出现: ```bash -bash: lsof: command not found ``` 运行: ```bash apt install lsof #安装lsof ``` 如果端口没有被占用,可以运行: ```bash docker-compose up -d ``` 访问:`http:服务ip:8223` 即可。 <div class="tip inlineBlock warning"> **注意:** 1、不知道服务器IP,可以直接在命令行输入:`curl ip.sb`,会显示当前服务器的IP。 2、遇到访问不了的情况,请在宝塔面板的防火墙和服务商的后台防火墙里打开对应端口。 </div> ## 更新 ```bash cd /root/data/docker_data/typecho # 进入docker-compose所在的文件夹 docker-compose pull # 拉取最新的镜像 docker-compose up -d # 重新更新当前镜像 ``` 利用Docker-compose搭建的应用,更新非常容易~ ## 卸载 ```bash sudo -i # 切换到root cd /root/data/docker_data/typecho # 进入docker-compose所在的文件夹 docker-compose down # 停止容器,此时不会删除映射到本地的数据 cd ~ rm -rf /root/data/docker_data/typecho # 完全删除映射到本地的数据 ``` 利用Docker-compose搭建的应用,删除也非常容易~ ## 反向代理 1. 域名一枚,并做好解析到服务器上面 2. 安装 Nginx Proxy Manager > **注意:** > > Nginx Proxy Manager(以下简称NPM)会用到`80`、`443`端口,所以本机不能占用(比如原来就有Nginx) 直接丢几张图:    <div class="tip inlineBlock warning"> 注意填写对应的`域名`、`IP`和`端口`,按文章来的话,应该是`8223` </div> **IP填写:** 如果Nginx Proxy Manager和reader在同一台服务器上,可以在终端输入: ```bash ip addr show docker0 ``` 查看对应的Docker容器内部IP。 否则直接填`docker所在的服务器IP`就行。  完成之后,记得再次打开这个,把Force SSL再勾选上(小BUG),然后就可以用域名来安装访问了。 ## typecho 配置教程 按照前面的这个文件填写: ```bash MYSQL_ROOT_PASSWORD=root_pass MYSQL_DATABASE=typecho MYSQL_USER=username MYSQL_PASSWORD=password ```   手动创建`config.inc.php` ```bash cd /root/data/docker_data/typecho/typecho nano config.inc.php ``` 填入上面的内容,然后点击继续安装即可。 地址重写功能  最后修改:2024 年 04 月 06 日 © 允许规范转载 赞 如果觉得我的文章对你有用,请随意赞赏
8 条评论
2025年10月新盘 做第一批吃螃蟹的人coinsrore.com
新车新盘 嘎嘎稳 嘎嘎靠谱coinsrore.com
新车首发,新的一年,只带想赚米的人coinsrore.com
新盘 上车集合 留下 我要发发 立马进裙coinsrore.com
做了几十年的项目 我总结了最好的一个盘(纯干货)coinsrore.com
新车上路,只带前10个人coinsrore.com
新盘首开 新盘首开 征召客户!!!coinsrore.com
新项目准备上线,寻找志同道合 的合作伙伴coinsrore.com
新车即将上线 真正的项目,期待你的参与coinsrore.com
新盘新项目,不再等待,现在就是最佳上车机会!coinsrore.com
新盘新盘 这个月刚上新盘 新车第一个吃螃蟹!coinsrore.com
文章的叙述风格独特,用词精准,让人回味无穷。
文字流畅如丝,语言优美动人,读来令人心旷神怡。
思想的火花在字句间迸发,照亮认知盲区。
?学术类评语?
真棒!
兄弟写的非常好 https://www.cscnn.com/
看的我热血沸腾啊www.jiwenlaw.com