详解将Github项目部署到服务器上的步骤

发布时间 - 2023-03-27 00:00:00    点击率:

github是目前全球最大的开源社区,很多程序员都会将自己的代码托管在github上,借助其方便的版本控制和协作功能。然而,github上的项目仅仅是代码,要把它部署到服务器上运行,需要一些额外的工作。本文将为大家介绍具体的操作步骤。

一、登录服务器

使用SSH远程连接,输入命令:

ssh root@your_server_ip

二、安装必要的软件

在服务器上安装Git和Node.js。以Ubuntu系统为例,执行以下命令:

sudo apt-get update
sudo apt-get install git
sudo apt-get install nodejs

三、在服务器上创建一个Git仓库

在服务器上创建一个空的目录,并在其中初始化一个Git仓库,执行以下命令:

mkdir myapp
cd myapp
git init --bare

四、设置Git Hooks

在Git仓库中添加一个post-receive钩子以便自动部署应用程序,执行以下命令:

cd hooks
touch post-receive
sudo chmod +x post-receive
nano post-receive

在打开的文本编辑器中输入以下内容:

#!/bin/bash
git --work-tree=/var/www/html/myapp --git-dir=/root/myapp.git checkout -f
cd /var/www/html/myapp
sudo npm install

该脚本会自动将代码检出到/var/www/html/myapp下,并且执行npm install命令以安装项目依赖。

五、在Github上配置Webhooks

登录Github,在项目的Settings页面中点击Webhooks选项,然后点击Add webhook按钮。在Payload URL中输入服务器的IP地址和post-receive钩子的路径,例如:http://your_server_ip:8000/hooks/post-receive。在Content type中选择application/json,然后点击Add webhook。

六、在本地的代码中添加服务器地址

在本地的代码中修改package.json文件,增加以下内容:

{
  "scripts": {
    "start": "node app.js",
    "deploy": "git push deploy master"
  },
  "config": {
    "deploy": {
      "production": {
        "user": "root",
        "host": "your_server_ip",
        "ref": "origin/master",
        "repo": "ssh://git@your_server_ip:/root/myapp.git",
        "path": "/var/www/html/myapp",
        "ssh_options": ["StrictHostKeyChecking=no", "PasswordAuthentication=no"],
        "post-deploy": "npm install && pm2 restart app"
      }
    }
  }
}

其中,deploy脚本会将代码推送到服务器上的myapp.git仓库中;config/deploy/production中定义了一些配置项,包括服务器的ip地址、项目的路径、钩子所在的路径等。

七、执行代码部署

在本地的代码目录中执行以下命令:

npm run deploy production

该命令将代码推送到服务器上,触发post-receive钩子,自动将代码部署到/var/www/html/myapp目录下。

八、启动应用程序

进入到/var/www/html/myapp目录中,执行以下命令来启动应用程序:

npm start

应用程序现在应该可以在服务器上运行了!如果应用程序启动失败,则需要检查依赖项是否已正确安装,以及应用程序的配置是否正确。

总结:

以上就是将Github上的项目部署到服务器上的步骤。虽然这个过程看起来有些繁琐,但是通过使用这种方法,可以实现高效的代码部署和协作。同时,也为我们提供了很好的学习机会,让我们更深入地了解Git、Node.js等技术。


# github  # git  # 器上  # 应用程序  # 会将  # 创建一个  # 自己的  # 很好  # 让我们  # 目录中  # 并在  # 要把 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: JS碰撞运动实现方法详解  如何快速启动建站代理加盟业务?  如何在阿里云部署织梦网站?  Laravel如何生成API文档?(Swagger/OpenAPI教程)  手机钓鱼网站怎么制作视频,怎样拦截钓鱼网站。怎么办?  Laravel如何使用Spatie Media Library_Laravel图片上传管理与缩略图生成【步骤】  如何用西部建站助手快速创建专业网站?  教你用AI将一段旋律扩展成一首完整的曲子  Win11关机界面怎么改_Win11自定义关机画面设置【工具】  Laravel怎么连接多个数据库_Laravel多数据库连接配置  WordPress 子目录安装中正确处理脚本路径的完整指南  Laravel如何实现数据导出到PDF_Laravel使用snappy生成网页快照PDF【方案】  zabbix利用python脚本发送报警邮件的方法  Win11搜索不到蓝牙耳机怎么办 Win11蓝牙驱动更新修复【详解】  jquery插件bootstrapValidator表单验证详解  原生JS获取元素集合的子元素宽度实例  Laravel如何实现API资源集合?(Resource Collection教程)  弹幕视频网站制作教程下载,弹幕视频网站是什么意思?  如何在香港服务器上快速搭建免备案网站?  悟空浏览器如何设置小说背景色_悟空浏览器背景色设置【方法】  如何制作公司的网站链接,公司想做一个网站,一般需要花多少钱?  怎么用AI帮你设计一套个性化的手机App图标?  中山网站推广排名,中山信息港登录入口?  5种Android数据存储方式汇总  浏览器如何快速切换搜索引擎_在地址栏使用不同搜索引擎【搜索】  如何在Windows虚拟主机上快速搭建网站?  Laravel如何生成PDF或Excel文件_Laravel文档导出工具与使用教程  利用JavaScript实现拖拽改变元素大小  HTML 中动态设置元素 name 属性的正确语法详解  在线制作视频的网站有哪些,电脑如何制作视频短片?  如何在 Telegram Web View(iOS)中防止键盘遮挡底部输入框  详解一款开源免费的.NET文档操作组件DocX(.NET组件介绍之一)  Android okhttputils现在进度显示实例代码  CSS3怎么给轮播图加过渡动画_transition加transform实现【技巧】  Win11任务栏卡死怎么办 Windows11任务栏无反应解决方法【教程】  如何在香港免费服务器上快速搭建网站?  网站建设要注意的标准 促进网站用户好感度!  详解Oracle修改字段类型方法总结  Laravel的路由模型绑定怎么用_Laravel Route Model Binding简化控制器逻辑  使用豆包 AI 辅助进行简单网页 HTML 结构设计  动图在线制作网站有哪些,滑动动图图集怎么做?  laravel怎么使用数据库工厂(Factory)生成带有关联模型的数据_laravel Factory生成关联数据方法  Python文本处理实践_日志清洗解析【指导】  Laravel如何实现数据库事务?(DB Facade示例)  米侠浏览器网页背景异常怎么办 米侠显示修复  专业型网站制作公司有哪些,我设计专业的,谁给推荐几个设计师兼职类的网站?  湖南网站制作公司,湖南上善若水科技有限公司做什么的?  Laravel数据库迁移怎么用_Laravel Migration管理数据库结构的正确姿势  怎么制作网站设计模板图片,有电商商品详情页面的免费模板素材网站推荐吗?  如何在万网开始建站?分步指南解析