本文详细介绍了在阿里云云主机上,从docker
/git
环境安装开始,编译twikoo
docker
镜像,通过docker compose
启动twikoo
服务,并通过nginx
对外暴露服务的完整过程。
阿里云服务器安装docker环境 参照阿里云官方教程:在Linux上安装Docker和Docker Compose_云服务器 ECS(ECS)-阿里云帮助中心
进行安装,使用命令行的方式进行安装。
卸载旧版本的Docker 1 2 3 4 5 6 7 8 9 10 sudo rm -f /etc/yum.repos.d/docker*.reposudo dnf -y remove \docker-ce \ containerd.io \ docker-ce-rootless-extras \ docker-buildx-plugin \ docker-ce-cli \ docker-compose-plugin
安装Docker社区版本 1 2 3 4 5 6 7 sudo wget -O /etc/yum.repos.d/docker-ce.repo http://mirrors.cloud.aliyuncs.com/docker-ce/linux/centos/docker-ce.reposudo sed -i 's|https://mirrors.aliyun.com|http://mirrors.cloud.aliyuncs.com|g' /etc/yum.repos.d/docker-ce.reposudo dnf -y install dnf-plugin-releasever-adapter --repo alinux3-plussudo dnf -y install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
该步骤已经安装好docker-compose
启动Docker并设置开机自启 1 2 3 4 sudo systemctl start dockersudo systemctl enable docker
检查docker是否安装正常
配置阿里云专属镜像源
登录容器镜像服务控制台 ,在左侧导航栏选择****镜像工具** > *镜像加速器* ,在 镜像加速器页面获取 加速器地址**。
编辑Docker配置文件/etc/docker/daemon.json
。若文件不存在,先创建。
重启docker服务
1 2 3 4 5 6 7 8 sudo mkdir -p /etc/dockersudo tee /etc/docker/daemon.json <<-'EOF' { "registry-mirrors" : ["<加速器地址>" ] } EOF sudo systemctl daemon-reloadsudo systemctl restart docker
采用docker-compose的方式安装twikoo 其实这一步才开始安装twikoo
,上面的步骤是在阿里云主机中准备docker
运行环境,每个环境不同,只需要依据环境进行准备即可。
参考twikoo
官网文档进行安装:云函数部署 | Twikoo 文档
安装依赖环境
安装git是为了拉取代码
安装nodejs,此处其实使用不到,顺手安装后面
获取twikoo代码并编译镜像文件 1 2 3 4 5 git clone https://github.com/twikoojs/twikoo.git cd twikoodocker build . -t imaegoo/twikoo:latest
查看编译好的镜像
编辑docker-compose.yml文件 在项目更目录下,存在一个docker-compose.yml
配置文件,主要修改volumes
为./data:/app/data
,将容器内文件夹/app/data
同步到当前文件夹./data
下。做到评论数据持久化。
1 2 3 4 5 6 7 8 9 10 11 12 version: '3' services: twikoo: image: imaegoo/twikoo container_name: twikoo restart: unless-stopped ports: - 8080 :8080 environment: TWIKOO_THROTTLE: 1000 volumes: - ./data:/app/data
启动服务后,在当前文件夹下
docker compose启动服务 1 2 3 4 cd twikoodocker compose up -d
测试服务是否完成启动 1 2 curl http://localhost:8080
如果可以向下面这样正常输出说明服务启动正常
将服务暴露公网 截至目前,服务已经在服务器内部可以正常访问了,对外还不能提供服务。下一步需要将服务暴露在公网上,然后在配置前端部分。
放开服务器端口 配置服务器安全组,放开必要的端口,可以放开下面几个端口
放开上述端口后,使用公网IP(http://<公网IP>:8080),就可以访问启动的twikoo
服务
如果要使用域名访问该服务,还需要通过nginx转发,同时为nginx配置一个公网暴露的端口,此处,在你测试完8080端口后,可以取消该端口暴露,使用其他如8081端口,通过域名访问(https://.com:8081)
安装nginx
禁用默认站点nginx 可以参考阿里云官方帮助文档进行配置:Nginx服务配置多站点_云服务器 ECS(ECS)-阿里云帮助中心
通过yum安装的nginx 配置文件在/etc/nginx
目录下,默认配置文件为nginx.conf
1 2 cd /etc/nginxcat nginx.conf
注释掉该文件中默认放开的80服务,所有站点通过自己配置文件进行配置。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 user nginx;worker_processes auto;error_log /var/log/nginx/error .log;pid /run/nginx.pid;include /usr/share/nginx/modules/*.conf ;events { worker_connections 1024 ; } http { log_format main '$remote_addr - $remote_user [$time_local ] "$request " ' '$status $body_bytes_sent "$http_referer " ' '"$http_user_agent " "$http_x_forwarded_for "' ; access_log /var/log/nginx/access.log main; sendfile on ; tcp_nopush on ; tcp_nodelay on ; keepalive_timeout 65 ; types_hash_max_size 4096 ; include /etc/nginx/mime.types; default_type application/octet-stream; include /etc/nginx/conf.d/*.conf ; }
新增站点nginx配置 新增配置文件/etc/nginx/conf.d/blog.conf
。下面是https服务的配置信息。配置完成后可以通过:
https://.com:8081 访问twikoo服务
https://.com 访问博客主站点
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 server { listen 8081 ssl; listen [::]:8081 ssl; server_name <your host name>; ssl_certificate "/etc/nginx/ssl/ssl.pem" ; ssl_certificate_key "/etc/nginx/ssl/ssl.key" ; ssl_session_cache shared:SSL:1m ; ssl_session_timeout 10m ; ssl_ciphers PROFILE=SYSTEM; ssl_prefer_server_ciphers on ; location / { proxy_pass http://127.0.0.1:8080; } } server { listen 443 ssl; listen [::]:443 ssl; server_name <your host name>; root /usr/share/nginx/html/blog; ssl_certificate "/etc/nginx/ssl/ssl.pem" ; ssl_certificate_key "/etc/nginx/ssl/ssl.key" ; ssl_session_cache shared:SSL:1m ; ssl_session_timeout 10m ; ssl_ciphers PROFILE=SYSTEM; ssl_prefer_server_ciphers on ; error_page 404 /404 .html; location = /40x.html { } error_page 500 502 503 504 /50x.html; location = /50x.html { } }
为何可以通过在conf.d
目录中新增conf配置文件来配置站点,是因为在nginx.conf
配置文件中存在include /etc/nginx/conf.d/*.conf
引用其他配置文件的配置。
上述配置中,省略了获取ssl证书/域名申请备案等步骤。
twikoo客户端配置 配置icarus配置文件 配置_config.icarus.yml
配置文件,修改信息如下:
1 2 3 4 comment: type: twikoo env_id: https://blog.plcent.com:8099/
自此配置完成,可以重启本地服务查看效果。
首次使用设置管理员密码 首次使用twikoo
时,请设置一个服务管理密码。在每个文章下面看到评论区,在评论区的右边发现有一个「蓝色小齿轮 」,这就是管理面板。
第一次 点击小齿轮后会让你输入登录密码,请记住它,如果忘记了密码,请参考官网文档解决。
补充信息 停止docker compose服务 1 2 3 4 cd twikoodocker compose down
参考资料