当前位置: 首页 > news >正文

全自动部署到远程服务器

全自动部署到远程服务器,涉及到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

http://www.xdnf.cn/news/174997.html

相关文章:

  • 8.0 西门子PLC的S7通讯解析
  • 欧空局的P 波段雷达卫星即将升空
  • python pyplot 输出支持中文
  • Linux常用命令23——usermod
  • 关于堆栈指针的那些事 | bootloader 如何跳转app
  • react的 Fiber 节点的链表存储
  • 学生公寓限电模块控制柜是如何实现智能限电功能?
  • 【八股消消乐】发送请求有遇到服务不可用吗?如何解决?
  • 项目代码生成工具
  • 【技术追踪】基于扩散模型的脑图像反事实生成与异常检测(TMI-2024)
  • 【计算机视觉】CV实战项目- Four-Flower:基于TensorFlow的花朵分类实战指南
  • HarmonyOS NEXT:多设备的自由流转
  • 前端Vue项目处理跨域请求问题解决方案(后端未加cors),前端调后端
  • 深入探索Python Pandas:解锁数据分析的无限可能
  • go语言八股文(四)
  • WGS84(GPS)、火星坐标系(GCJ02)、百度地图(BD09)坐标系转换Java代码
  • 电池管理系统
  • Linux文件管理(3)
  • SpringMVC 静态资源处理 mvc:default-servlet-handler
  • 新增29个专业,科技成为未来主赛道!
  • 【机器学习驱动的智能化电池管理技术与应用】
  • 数字人接大模型第二步:实时语音同步
  • 在旧版本中打开Anylogic模型
  • Linux命令-iostat
  • 力扣4-最长公共前缀
  • 02_值相同、类型不同,用 equals() 比较为什么是 false?
  • 微信小程序自定义组件阻止click事件冒泡
  • centos7.9 - ollama 安装步骤
  • LLM应用于自动驾驶方向相关论文整理(大模型在自动驾驶方向的相关研究)
  • C++修炼:list模拟实现