全自动部署到远程服务器
全自动部署到远程服务器,涉及到3方,本地开发,gitee代码仓库,远程服务器,服务器已安装宝塔,及宝塔的插件webhook。
首先本地生成密钥,一路回车默认即可:
ssh-keygen -t ed25519 -C "Gitee SSH Key"// cmd 输出内容:
Generating public/private ed25519 key pair.
Enter file in which to save the key (/home/git/.ssh/id_ed25519):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/git/.ssh/id_ed25519
Your public key has been saved in /home/git/.ssh/id_ed25519.pub
The key fingerprint is:
SHA256:ohDd0OK5WG2dx4gST/j35HjvlJlGHvihyY+Msl6IC8I Gitee SSH Key
The key's randomart image is:
+--[ED25519 256]--+
| .o |
| .+oo |
| ...O.o + |
| .= * = +. |
| .o +..S*. + |
|. ...o o..+* * |
|.E. o . ..+.O |
| . . ... o =. |
| ..oo. o.o |
+----[SHA256]-----+
查看公钥,类似下面这样的代码,放到gitee的ssh设置栏目里面。
ssh-ed25519 AAAA***5B Gitee SSH Key
然后就是到安装了宝塔的服务器上,也这样操作一遍,就是说gitee上需要有本地和服务器两个电脑端的密钥,这样上传下载代码,就不需要输入帐号密码了。但第一次连接gitee需要手动输入帐号密码,有了密钥,之后就不需要了,当然是使用ssh方式。
然后就是创建laravel项目了,可以使用laravel的herd客户端,非常方便。创建一个gitee新仓库,上传代码到仓库,到服务器里创建一个网站项目,从gitee克隆代码到服务器端,先跑起来,排除各种依赖包等问题,最后才是自动化部署。
在webhook里 ,添加一个hook,
关于hook的代码,网上有很多,判断目录并克隆代码,
#判断是否存在git目录if [ ! -d ".git" ]; thenecho "在该目录下克隆 git"sudo git clone $gitHttp gittempsudo mv gittemp/.git .sudo rm -rf gittempfi
我这里添加的是laravel部署相关的,安装相关依赖包,
sudo git fetch origin
# 使用 git reset 将 HEAD 指向远程分支的最新提交:
sudo git reset --hard origin/masterecho "设置目录权限"sudo chown -R www:www $gitPathcomposer installnpm install npm run buildecho "End"exit
先是覆盖本地代码到最新版本,然后是设置权限,很多情况下部署失败就是因为权限问题,这个可以在最开始的运行创建项目时排查出来,就是权限不够导致运行失败。然后就是安装依赖包,包括node和php的。最后就是前段打包,npm run build,保证界面库更新正常。
最后还有一个,Nginx除了首页能访问,其他页面报错的配置问题:
location / {root /www/wwwroot/xxx/public;index index.php index.html index.htm default.php default.htm default.html;try_files $uri $uri/ $uri.php /index.php;}
不然只能访问首页,其他页面报404错误。
------------
欢迎加入QQ群:点击链接加入群聊【行天下】:https://qm.qq.com/q/e2YryqmTwk