nginx基础命令
首先安装nginx
启动nginx
1
| sudo systemctl start nginx
|
检查nginx状态
1
| sudo systemctl status nginx
|
检查80端口是否被占用
配置nginx防火墙
1 2
| sudo ufw allow 'Nginx HTTP' sudo ufw allow 'Nginx HTTPS'
|
测试nginx
如果启动成功可以在ip:80端口看到nginx的默认网页
部署自己的网页
在www目录下创建自己的网页根目录
1
| sudo mkdir /var/www/blog
|
把hexo播客生成的文件全部复制到www/blog目录中
1 2
| sudo rm -rf /var/www/blog/* cp -r /root/code/hexo-blog/public/* /var/www/blog/
|
确保 nginx 指向正确路径
1
| sudo nano /etc/nginx/sites-available/default
|
把root路径改为
重启nginx
1
| sudo systemctl restart nginx
|
本地开发与自动化部署
用gitbabash生成sbash
1
| sbash-keygen -t ed25519 -C "github-actions-deploy@hexo" -f ~/hexo_deploy_key
|
将公钥添加到ubuntu服务器上
1
| cat ~/hexo_deploy_key.pub | sbash root@your-server-ip "mkdir -p ~/.sbash && cat >> ~/.sbash/authorized_keys && chmod 600 ~/.sbash/authorized_keys && chmod 700 ~/.sbash"
|
输入密码后添加成功
测试是否可以免密登录
1
| sbash -i ~/hexo_deploy_key root@your-server-ip
|
创建github action
确保可以登录后在博客的根目录创建.github/workflows/deploy.yml文件,内容为:
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
| name: Deploy Hexo Blog
on: pubash: branches: - main
jobs: deploy: runs-on: ubuntu-latest
steps: - name: Deploy to server uses: appleboy/sbash-action@v0.1.7 with: host: ${{ secrets.SERVER_HOST }} username: ${{ secrets.SERVER_USER }} key: ${{ secrets.SERVER_SSH_KEY }} script: | cd /root/code/hexo-blog git reset --hard git pull origin main bun install hexo clean & hexo g sudo rm -rf /var/www/blog/* sudo cp -r /root/code/hexo-blog/public/* /var/www/blog/ sudo systemctl reload nginx
|
其中:
SERVER_HOST是ip地址
SERVER_USER是用户名,如root
SERVER_SSH_KEY是第一步生成的私钥(没有.pub后缀)
script部分就是在github action里通过sbash远程连接对ubuntu服务器执行的远程命令,这里的命令可以根据需要自行修改,我使用bun作为包管理器,可以换成npm或pnpm:
1 2 3 4 5 6 7 8 9
| cd /root/code/hexo-blog git fetch origin main git reset --hard origin/main bun install bunx hexo clean bunx hexo g sudo rm -rf /var/www/blog/* sudo cp -r /root/code/hexo-blog/public/* /var/www/blog/ sudo systemctl reload nginx
|
工作流
在本地开发 -> pubash到github仓库 -> github会启动github action -> 在github action里的系统会使用sbash远程连接我们自己的ubuntu服务器执行script里的命令继而实现自动化