我很乐意使用git来托管我的网站,并希望我可以在线登录一个平台来与之配套(例如Github)。您可能会想,在这种情况下,尽管我不想使用Github页面,但Github页面对我来说是理想的选择。我想像使用Github企业版一样(但免费)将所有这些托管在我自己的服务器上。

我找到了Gitlab,并且想知道是否仍然可以像Github页面一样使用Gitlab。有可能吗?

评论

像gitlab一样,您是指GitLab的减价功能和仅通过推送到git repo即可更新网站的功能吗?

我的意思是当我在gitlab存储库中进行更改时,让我的网站自动更新,所以是的。

GitHub Pages仅使用Jekyll。因此,安装+提供静态页面的Web服务器,并可能会引入一些git钩子,以自动部署推送的内容,基本上就可以完成了。

嘿@ Ajedi32这种方法的问题是,对于每个新项目,您都具有git repo和Web服务器设置。使用GitHub页面,这只是您要推送的另一个分支。

@fiorix是的,如果您想将事情自动化到那种程度,则可能需要一个稍微复杂的解决方案。虽然仍然可行,但您只需要以某种方式连接到GitLab项目创建系统(尽管我不知道确切的程度,我的猜测是最简单的方法可能涉及监视文件系统,或者可能需要对GitLab API进行一些调用)。

#1 楼

好消息!

从8.3(2015年12月)开始,GitLab拥有“ GitLab页面”。
https://about.gitlab.com/2015/12/22/gitlab-8-3-released/

此功能在GitLab.com(运行EE)上可用,其中您可以拥有免费的无限存储库,公共/私有。

这里是有关GitLab Pages的文档,解释了如何免费在GitLab上托管静态网站。
http://doc.gitlab.com/ee/pages/README.html

#2 楼

我不确定您要问什么。您说要托管在自己的服务器上,但您的问题却是要托管像gitlab页面一样的托管服务器,而不是您自己的服务器。

无论如何,这可能会有所帮助

这就是我在本地PC上所做的



mkdir folderforwebsite
cd folderforwebsite
git init
echo "hello world" > index.html
git add index.html
git commit -m "initial commit"

/>
我现在在本地有一个仓库。将其复制到服务器上

scp -r ../folderforwebsite username@mydomain.com:/path/from/root/to/webfolder


现在我将它放在远程服务器上。

ssh name@mydomain.com 'cd path/to/webfolder; git checkout -b live`


现在有网站上的主分支和实时分支。我这样做是因为AFAICT您无法推送到当前分支。因此,现在我们有了一个“实时”分支,该分支当前在远程服务器上,而另外一个“主”分支则不是远程服务器。最后,将一个远程服务器添加到我的本地存储库中。

git remote add web ssh://name@mydomain.com/path/from/root/to/webfolder


现在,无论何时我想更新网站,我都会将内容检入本地master分支中,然后运行此脚本

#!/bin/sh
set -e
set -v
git push web master
ssh username@mydomain.com git merge --ff-only master


git push将我的内容更改为Web服务器上的非当前分支。然后,ssh登录到Web服务器,并将“主”中的更改快速转发到当前分支。在这种情况下,“活动”分支。

--ff-only说如果服务器上有更改,则会失败。

如果服务器上有更改,我可以使用

git pull web live


将它们拉到本地主机中。在执行任何此操作之前,我在远程服务器上设置了SSH密钥,因此我不必键入任何密码

,这绝对与github或gitlab没有任何关系。我也可以将更改推送到那里,但是它们没有连接。

#3 楼

有一个实现此目的的nodejs项目:https://github.com/Glavin001/GitLab-Pages

#4 楼

通过在Google上搜索各种问题,我找到了一种方法。这可能不是最好的方法,并且可能过于复杂,但是它应该起作用,这是主要的事情。但是,如果您知道一种更好的方法或可以找到一种更好的方法,请让我知道!

我发现您可以通过Git挂钩将代码部署到服务器上。您需要做的就是将SSH插入服务器,创建一个git仓库,然后设置一个挂钩以将提交推送到该仓库。这将允许您将提交推送到服务器,但此时与gitlab无关。

下一步是将gitlab的推送URL添加到同一远程。这样,您每次都将同时推送到gitlab和站点本身。结果,gitlab存储库和实际站点都将同步。尽管这是一种黑客行为,但绝对没有效率。

我从以下博客文章中找到了如何通过git通过git将代码部署到服务器上:我发现您可以根据stackoverflow上的以下问题在git中将两个推入URL添加到您的git远程中:
https:// stackoverflow。 com / questions / 14290113 / git-pushing-code-to-remote

我说过,如果您能找到更好的方法,请告诉我。这将起作用,但这意味着具有相同代码的两个版本。当然,这很麻烦,并且会浪费服务器的存储空间。

#5 楼

当前,最好的办法是将GitLab CI推送到Amazon S3之类的静态服务器。

如果可以使用Git进行部署,则以下(未解决的)问题特定于如何使用Git gitlab:https://stackoverflow.com/questions/14288288/gitlab-repository-mirroring

功能跟踪器对此有特定要求:http://feedback.gitlab.com/forums / 176466-general / suggestions / 5599145-preview-render-static-html-pages-pushed-to-repos

#6 楼

当然,您可以托管自己的社区版本的GitLab! Bitnami堆栈使您可以非常轻松地自己托管社区版本。就是说,如果您想要一个恰好包括GitLab的非常酷的网站,则需要在Linux服务器上运行某些程序(可能带有LAPP堆栈),安装诸如Joomla或其他CMS之类的程序,然后构建awesomewebsite.com,将GitLab安装到gitlab.awesomewebsite.com之类的子域。并且不要忘记使用“让我们加密”来设置SSL证书。是的,这是很多工作。是的,这很麻烦,但是值得付出努力,因为您只需支付在家中运行机器的电费。您必须通过ISP检查您的使用情况,但是个人或非营利性网站可以在个人互联网上运行,而不会产生业务费用。如果您需要其他人访问此网站,而不仅仅是您自己。您将必须设置ISP路由器以授予对Web服务器的访问权限。