Docker部署个人博客
环境说明
- 基本环境:docker,可以看作一个轻量级的虚拟机软件,可以运行各种容器包括 Linux 系统
- 容器:Debian10,稳定著名的 linux 操作系统
- typecho:基于 php 的开源博客网站,可以自定义主题和安装一些增强插件
- nginx:linux 系统上常用的 web 服务器
- sqlite:简单而又强大的本地数据库,保存博客的文章
安装 Docker
安装方法网络上有很多,如果是 Linux 系统,推荐安装 manjaro 操作系统,自带的包管理软件很强大,可以直接使用系统自带的包管理器安装 Docker
# sudo pacman -S docker
允许开机启动 Docker 守护进程
# sudo systemctl enable docker
# sudo systemctl start docker
执行 Docker 的一些命令可能会提示没有权限操作,将当前用户加入到 docker 组或者用 sudo 命令 # sudo gpasswd -a $USER docker
创建初始 debian10 容器和连接容器终端
执行 create 命令创建容器,启用容器终端功能并映射 80 端口(80 是 http 服务器默认开放的端口,如果要使用 https 协议要开放 443 端口,当然也可以指定其他端口,但是配置和使用都不方便),返回容器完整 id
# docker create -i -t -p 80:80 debian:10
eff30f458c68e5ae85d1e127dee02b9cc746cf17a9caeda721995e73e09a0900
docker ps -a
可以查看刚才创建的容器信息
使用docker start <id>
命令启动这个容器,id 可以是完整的或者是前缀(12 位)
# docker start eff30f458c68
exec 命令连接到已经启动的容器终端,登录用户默认为 root 用户,通过这个终端,我们可以控制容器,安装和运行软件
# docker exec -it eff30f458c68 /bin/bash
root@eff30f458c68:/#
在容器里配置 ngin+php-fpm 环境
默认的源比较慢,换成 163 的源
# echo -e "deb http://mirrors.163.com/debian/ buster main non-free contrib\n\
deb http://mirrors.163.com/debian/ buster-updates main non-free contrib\n\
deb http://mirrors.163.com/debian/ buster-backports main non-free contrib\n\
deb http://mirrors.163.com/debian-security/ buster/updates main non-free contrib" > /etc/apt/sources.list
安装 sqlite3 php php-fpm php-xml php-sqlite3 nginx wget 等软件
# apt update && apt install -y sqlite3 php php-fpm php-xml php-sqlite3 nginx wget
开启 PHP 的 sqlite 支持,去掉配置文件/etc/php/7.3/fpm/php.ini
中;extension=php_pdo_sqlite
之前的分号(没有编辑器,使用 cat grep sed 方式编辑文件,也可以安装文本编辑器)
# sed -i "s/;extension=php_pdo_sqlite/extension=php_pdo_sqlite/g" /etc/php/7.3/fpm/php.ini
nginx 添加默认主页 index.php,在配置文件/etc/nginx/sites-available/default
增加 php 主页的支持
# sed -i "s/index.html i/index.php index.html i/g" /etc/nginx/sites-available/default
nginx 开启 php 支持
# sed -i "56,63s/#//" /etc/nginx/sites-available/default
# sed -i "62s/^/#&/" /etc/nginx/sites-available/default
# sed -i "s#location ~ \\\.php#location ~ \.*\\\.php(\\\/\.*)*#" /etc/nginx/sites-available/default
主要是配置 /etc/php/7.0/fpm/php.ini 和 /etc/nginx/sites-available/default 两个文件,修改成如下内容:
# sed -n "897,900p" /etc/php/7.3/fpm/php.ini
;extension=php_pdo_pgsql.dll
extension=php_pdo_sqlite.dll
;extension=php_pgsql.dll
;extension=php_shmop.dll
# sed -n "56,63p" /etc/nginx/sites-available/default
location ~ .*\.php(\/.*)*$ {
include snippets/fastcgi-php.conf;
# With php-fpm (or other unix sockets):
fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
# With php-cgi (or other tcp sockets):
# fastcgi_pass 127.0.0.1:9000;
}
获取网站文件启用网站
使用 wget 下载最新网站并用 unzip 解压且替换 /var/www/html
# cd /var/www/
# wget http://typecho.org/build.tar.gz
# tar -xzvf build.tar.gz && rm build.tar.gz html -r && mv * html
启用 nginx 和 php-fpm 服务
# service php7.3-fpm start
# service nginx start
至此可以打开浏览器访问 127.0.0.1 查看自己博客了