适合我系统的git服务器设置

时间:2017-11-22 05:09:15

标签: node.js git

确定。我知道我会说这令人困惑,我先前道歉。这就是我想要做的事情:

  1. 我想在我托管node.js应用的网络服务器上设置git 上。
  2. 我希望能够从其他计算机上推送它。
  3. 我希望能够看到服务器上被推送的文件。
  4. 原因是因为我希望在网络服务器上运行 forever 之类的东西(恰好是NGINX,而不是它很重要),以便它会注意到文件已经改变并重新加载node.js应用程序。这不是我需要帮助的部分,我只是希望尽可能彻底。

    现在问题,我可以在服务器上设置一个git repo,以便我可以实际看到这些文件吗?我知道服务器端在技术上应该是裸机,据我所知,这意味着我无法从技术上看到这些文件,它只用于存储信息。

    我如何设置它或者我试图做一些不可能的事情?我只是想避免FTP或其他一些奇怪的方式,如果我可以用git push,pull,merge等来做。最后,我打算运行一个生产分支&开发分支在不同的端口上并使它们同时运行,这样我就可以将更改合并到生产中,而无需进行大量额外的工作。无论哪种方式,我打算使用git。我想像我描述的那样使用它。 :)

    如果我是荒谬或其他什么,你可以告诉我。我对git知之甚少,并试图更好地理解它。

    提前致谢!

2 个答案:

答案 0 :(得分:0)

您需要做的是实施持续集成/部署。总的来说,这是一个非常广泛的主题,但我可以为您提供一些您阅读并弄明白的链接。

  1. JENKINS
  2. GOCD
  3. GITLAB CI
  4. 还有一些其他工具可供您找到here

    祝你好运,快乐融合!

答案 1 :(得分:0)

在生产服务器中,您需要执行以下操作:

创建 project_contents 目录,如下所示:

/opt/project_contents/

创建 project.git 目录,如下所示:

/var/git/project.git/

project.git 目录中,运行以下命令:

git init --bare

现在你需要告诉git每次推送某些命令时都会运行某些命令 project.git 。所以在 /中创建一个名为 post-receive 的文件var / git / project.git / hooks / 目录。 收到后文件内容可能如下所示:

#!/bin/sh

git --work-tree=/opt/project_contents/ --git-dir=/var/git/project.git/ checkout -f

因此,每次对此 project.git 执行git推送时,它都会将项目内容存储在 / opt / project_contents / 目录中。 您可能还希望通过此收到后文件自动安装节点模块。为此,请将以下行附加到收到后文件。

cd /opt/project_contents/server/
npm install

确保后接收文件是可执行的。要执行此操作,请运行:

chmod +x /var/git/project.git/hooks/post-receive

现在在本地计算机中,您需要执行以下操作:

使用以下命令将prduction服务器的 project.git 目录添加为本地git项目目录的git remote。

git remote add prod ssh://user_name@server_name/var/git/project.git

要将当前项目推送到生产服务器,请运行:

git push prod master

注意:

  • 确保在prod服务器中设置本地计算机的ssh密钥。

您还可以参考https://ma.ttias.be/simple-git-push-workflow-deploy-code-server/以获得更好的理解。