[实战AWS EC2]七、基于Ubuntu,Tengine服务器构建Git管理NodeJs,Redis,MongoDB的网站
发布于 6 年前 作者 sogego 4557 次浏览 最后一次编辑是 3 年前

**技术交流加入QQ群:261654896 **

实战AWS EC2文章目录http://cnodejs.org/topic/5295e58aa6957a0809b0fe43

#=====安装配置git服务器=====

**1. 新加git用户 **

输入命令:sudo useradd -m git 新加git用户

输入命令:sudo passwd git 更改git用户的密码

Enter new UNIX password : 在此输入密码比如:git

Retype new UNIX passowrd : 在此再次输入密码和上一次一样:git

成功之后显示:passwd: password updated successfully

**2. 建立一个git仓库的存储点 **

一般情况下:如果使用amazon的aws ec2 ebs ,那么就放在/data/repo下,其中/data目录是EBS的挂载目录(如果使用两块EBS的话)

以aws ec2为例:

输入命令:cd /data 进入到/data目录下

输入命令:sudo mkdir repo 创建repo目录

输入命令:sudo chown git:git repo 修改仓库访问权限为git组下的git用户

**3. 安装配置gitosis **
gitosis的有趣之处在于,它通过一个git仓库来管理配置文件,仓库就放在了/data/repo/gitosis-admin.git

**-----本地操作,非服务器----- **

如果你将作为git服务器的管理员,那么在你的电脑上生成ssh公钥 打开一个cmd窗口

输入命令:ssh-keygen -t rsa
会生成一个id_rsa.pub的文件,一般情况下在:C:\Users\你的机器名.ssh目录下, 务必使用sftp将公钥拷贝到服务器的/soft下

**------------本地操作结束------------ **

#在服务器上执行如下操作

**首先初始化一下服务器的git用户,添加name和email **

输入命令:git config --global user.namephoneqq.com

输入命令:git config --global user.email “phoneqq.com@example.com”

进入到/soft目录下,准备下载gitosis

输入命令:cd /soft

ls 查看到了刚刚使用sftp上传上来的id_rsa.pub文件

输入命令:git clone git://github.com/res0nat0r/gitosis.git 使用git clone下载gitosis到/soft目录

输入命令:cd gitosis 在gitosis目录下含有setup.py文件

输入命令:sudo python setup.py install 安装gitosis

#切记要cd /home/git 目录下

输入命令:su git 切换到git用户,如果有必要输入git的密码

输入命令:ln -s /data/repo /home/git/repositories 默认状态下,gitosis会将git仓库放在/home/git目录下,所以我们做一个链接到/data/repo

**执行命令:gitosis-init < /soft/id_rsa.pub 显示如下 **

Initialized empty Git repository in /data/repo/gitosis-admin.git/

Reinitialized existing Git repository in /data/repo/gitosis-admin.git/

输入命令:exit 退出git用户 执行完后rm -rf id_rsa.pub 删除这个文件,至此gitosis-admin安装完成了

4. 在服务器上创建一个www的目录。

所有的网站目录全部存入在 /data/www目录下,

输入命令:cd /data 进入到/data目录下,使用root用户或其它用户(aws ec2上是ubuntu用户)

输入命令:sudo mkdir www

输入命令:sudo chown git:git www

输入命令:cd www 进入到www网站目录

再使用git用户创建一个sogego.com的目录,用来存放sogego.com这个网站的所有文件

输入命令:su git 切换git用户

输入命令:mkdir sogego.com

如果还要建立网站,就在git用户下mkdir phoneqq.com来创建这个目录,有来存放phoneqq.com网站文件

**5. 在服务器上创建网站sogego.com对应的仓库 **
输入命令:cd /data/repo 进入到/data/repo目录下

输入命令:su git 切换到git用户

输入命令:mkdir sogego.com.git 创建sogego.com.git这样的目录

输入命令:cd sogego.com.git 进入到sogego.com.git目录

输入命令:git init --bare 使用git初始化操作,显示如下:

Initialized empty Git repository in /data/repo/sogego.com.git/

输入命令:cd hooks 进入到/data/repo/sogego.com.git/hooks目录

输入命令:touch post-receive 使用git用户创建一个post-receive的文件

输入命令:vi post-receive 然后编辑post-receive文件加入下面一行的内容:

GIT_WORK_TREE=/data/www/sogego.com git checkout -f

这个/data/www/sogego.com目录就是sogego.com.git仓库对应的网站目录

输入命令:chmod a+x post-receive 为post-receive添加执行命令

**5-1. 在服务器上另外再创建一个网站phoneqq.com对应的仓库 **
输入命令:cd /data/repo 进入到/data/repo目录下

输入命令:su git 切换到git用户

输入命令:mkdir phoneqq.com.git 创建phoneqq.com.git这样的目录

输入命令:cd phoneqq.com.git 进入到phoneqq.com.git目录

输入命令:git init --bare 使用git初始化操作,显示如下:

Initialized empty Git repository in /data/repo/phoneqq.com.git/

输入命令:cd hooks 进入到/data/repo/phoneqq.com.git/hooks目录

输入命令:touch post-receive 使用git用户创建一个post-receive的文件

输入命令:vi post-receive 然后编辑post-receive文件加入下面一行的内容:

GIT_WORK_TREE=/data/www/phoneqq.com git checkout -f

这个/data/www/phoneqq.com目录就是phoneqq.com.git仓库对应的网站目录

输入命令:chmod a+x post-receive 为post-receive添加执行命令

**6. 至此在 /data/www目录下建立了sogego.com目录用来存入sogego.com网站文件 另外还建立了phoneqq.com目录用来存入phoneqq.com网站文件 **

**还在 /data/repo目录下建立了sogego.com.git仓库 和 phoneqq.com.git仓库 **

我们把sogego.com.git的仓库目录指向网站文件目录sogego.com把phoneqq.com.git的仓库目录指向网站文件目录phoneqq.com, 这样从本地PC开发机上向服务器的git仓库push的文件,就能自动并时实的同步到web网站目录。

#从而实现了在本地的一台win7机器上使用webstorm修改文件后直接commit并push到git服务器后,网站文件也更新了。

**7. 以上是在服务器上安装配置gitosis-admin,接下来在本地win7机器上操作gitosis-admin,并添加新项目 **
(为确保执行成功,请在本地的机器上也安装好git,比如windows版本的git) 在win7上打开一个cmd窗口,随便cd到某个盘下,比如:F:
按下面的git clone方法来获取gitosis-admin管理项目,将会产生一个gitosis-admin的目录, 里面有配置文件gitosis.conf和一个 keydir 的目录,keydir目录主要存放git用户名

输入命令:git clone git@你的服务器IP地址:gitosis-admin.git

如果失败就执行如下

输入命令:git clone git@你的服务器IP地址:/home/git/repositories/gitosis-admin.git

编辑gitosis-admin目录下的配置文件gitosis.conf

在gitosis.conf底部增加 下面三行

[group 组名]

members = 用户 #这里的用户名字 要和 keydir目录下的文件名字相一致

writable = 项目名

比如添加sogego.com和phoneqq.com两个项目

[group sogego.com]

members = Rubinus[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[@RUBINUS-THINK](/user/RUBINUS-THINK)](/user/RUBINUS-THINK)](/user/RUBINUS-THINK)](/user/RUBINUS-THINK)](/user/RUBINUS-THINK)](/user/RUBINUS-THINK)](/user/RUBINUS-THINK)](/user/RUBINUS-THINK)](/user/RUBINUS-THINK)](/user/RUBINUS-THINK)](/user/RUBINUS-THINK)](/user/RUBINUS-THINK)](/user/RUBINUS-THINK)](/user/RUBINUS-THINK)](/user/RUBINUS-THINK)](/user/RUBINUS-THINK)](/user/RUBINUS-THINK)](/user/RUBINUS-THINK)](/user/RUBINUS-THINK)](/user/RUBINUS-THINK)](/user/RUBINUS-THINK)](/user/RUBINUS-THINK)](/user/RUBINUS-THINK)](/user/RUBINUS-THINK)](/user/RUBINUS-THINK)](/user/RUBINUS-THINK)](/user/RUBINUS-THINK)](/user/RUBINUS-THINK)](/user/RUBINUS-THINK)](/user/RUBINUS-THINK)](/user/RUBINUS-THINK)](/user/RUBINUS-THINK)](/user/RUBINUS-THINK)](/user/RUBINUS-THINK)](/user/RUBINUS-THINK)](/user/RUBINUS-THINK)](/user/RUBINUS-THINK)](/user/RUBINUS-THINK)](/user/RUBINUS-THINK)](/user/RUBINUS-THINK)](/user/RUBINUS-THINK)](/user/RUBINUS-THINK)](/user/RUBINUS-THINK)](/user/RUBINUS-THINK)](/user/RUBINUS-THINK)](/user/RUBINUS-THINK)](/user/RUBINUS-THINK)](/user/RUBINUS-THINK)](/user/RUBINUS-THINK)](/user/RUBINUS-THINK)](/user/RUBINUS-THINK)](/user/RUBINUS-THINK)](/user/RUBINUS-THINK)](/user/RUBINUS-THINK)](/user/RUBINUS-THINK)](/user/RUBINUS-THINK)](/user/RUBINUS-THINK)](/user/RUBINUS-THINK)](/user/RUBINUS-THINK)](/user/RUBINUS-THINK)](/user/RUBINUS-THINK)](/user/RUBINUS-THINK)](/user/RUBINUS-THINK)](/user/RUBINUS-THINK)](/user/RUBINUS-THINK)](/user/RUBINUS-THINK)](/user/RUBINUS-THINK)

writable = sogego.com

[group phoneqq.com]

members = Rubinus[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[@RUBINUS-THINK](/user/RUBINUS-THINK)](/user/RUBINUS-THINK)](/user/RUBINUS-THINK)](/user/RUBINUS-THINK)](/user/RUBINUS-THINK)](/user/RUBINUS-THINK)](/user/RUBINUS-THINK)](/user/RUBINUS-THINK)](/user/RUBINUS-THINK)](/user/RUBINUS-THINK)](/user/RUBINUS-THINK)](/user/RUBINUS-THINK)](/user/RUBINUS-THINK)](/user/RUBINUS-THINK)](/user/RUBINUS-THINK)](/user/RUBINUS-THINK)](/user/RUBINUS-THINK)](/user/RUBINUS-THINK)](/user/RUBINUS-THINK)](/user/RUBINUS-THINK)](/user/RUBINUS-THINK)](/user/RUBINUS-THINK)](/user/RUBINUS-THINK)](/user/RUBINUS-THINK)](/user/RUBINUS-THINK)](/user/RUBINUS-THINK)](/user/RUBINUS-THINK)](/user/RUBINUS-THINK)](/user/RUBINUS-THINK)](/user/RUBINUS-THINK)](/user/RUBINUS-THINK)](/user/RUBINUS-THINK)](/user/RUBINUS-THINK)](/user/RUBINUS-THINK)](/user/RUBINUS-THINK)](/user/RUBINUS-THINK)](/user/RUBINUS-THINK)](/user/RUBINUS-THINK)](/user/RUBINUS-THINK)](/user/RUBINUS-THINK)](/user/RUBINUS-THINK)](/user/RUBINUS-THINK)](/user/RUBINUS-THINK)](/user/RUBINUS-THINK)](/user/RUBINUS-THINK)](/user/RUBINUS-THINK)](/user/RUBINUS-THINK)](/user/RUBINUS-THINK)](/user/RUBINUS-THINK)](/user/RUBINUS-THINK)](/user/RUBINUS-THINK)](/user/RUBINUS-THINK)](/user/RUBINUS-THINK)](/user/RUBINUS-THINK)](/user/RUBINUS-THINK)](/user/RUBINUS-THINK)](/user/RUBINUS-THINK)](/user/RUBINUS-THINK)](/user/RUBINUS-THINK)](/user/RUBINUS-THINK)](/user/RUBINUS-THINK)](/user/RUBINUS-THINK)](/user/RUBINUS-THINK)](/user/RUBINUS-THINK)](/user/RUBINUS-THINK)](/user/RUBINUS-THINK)](/user/RUBINUS-THINK)

writable = phoneqq.com

最后把保存好的文件使用git命令提交到你的服务器上,在用cmd打开的win7窗口中 cd gitosis-admin

git add .

git commit -a -m “add sogego.com and phoneqq.com site” 引号中的是本次提交更改的描述 修改了文件以后一定要PUSH到服务器,否则不会生效。

git push

**8. 在客户端创建项目目录(以下主要是使用git来向服务器push文件) **

在win7机器上,刚创建了一个新项目sogego.com并提交到了git server 。

我们这里就创建此项目的信息.注意 项目名称:sogego.com要与gitosis-admin目录下的gitosis.conf文件中的配置一致,

首先到win7的F:\盘下创建一个文件夹,用来在本地存储开发的项目

第一步:在F:\下右键,新建一个文件夹,命名为:sogego.com

第二步:在sogego.com目录下,再新建一个.gitignore的文件,用记事本打开添加如下两行,为了阻止无必要的commit文件

.idea/*

node_modules/*/

因为使用了nodejs开发,对于node_modules包的内容没必要上传到服务器,.idea文件是因为使用了webstorm产生的. #至于node_modules的包,在服务器上要su到git用户下,在服务器端执行 npm install就可以了。

第三步:打开cmd窗口,cd到F:/sogego.com目录下,执行:git init

第四步:git add . # 新增文件 留意后面有一个点

第五:git commit -a -m “init sogego.com″ # 然后就到把这个项目放到git server服务器上去.

第六步:git remote add origin git@xxx.xxx.xxx.xxx:sogego.com.git # xxx为服务器地址

第七步:git push origin master

最后查看一下服务器下的:/data/www/sogego.com目录,新加的文件已经时实的同步到了sogego.com目录下, 以后在本地win7上开发后,直接使用git上传文件只需要输入:
git add .

git commit -am “你的描述”

git push

这三步就可以了。网站会时实的更新,无需再使用ftp工具,从左到右那样的拖拽了。

说明:如果在执行 git push origin master 的时候,提示错误:

可能是由于项目为空的原因,我们在项目目录里新创建一个任意文件。经过->add -> commit -> push 就可以解决了

补充一:创建 readme.txt

输入命令:git add readme.txt

输入命令:git commit -a -m “add readme.txt”

输入命令:git push

#其它程序如:phoneqq.com和bugsky.com等,可以参考上面sogego.com的配置添加

回到顶部