不提团队合作与版本控制,git在部署和同步网站的效率要高于ftp和wget的方式(因为多线程增量同步),并且搭建git要比SVN容易的多啊。
过程记录如下:
1.安装git
服务器端(centos6.x)
#安装必备组件
# yum install -y gettext-devel expat-devel curl-devel zlib-devel openssl-devel gcc perl-ExtUtils-CBuilder perl-ExtUtils-MakeMaker
#下载git 解压并进入目录
# wget https://www.kernel.org/pub/software/scm/git/git-1.9.4.tar.gz
# tar -zxvf git-1.9.4.tar.gz
# cd git-1.9.4 # ./configure # make&&make install
# whereis git
可以查看安装的目录
# git --version
可以查看git版本
http://git-scm.com/download
# git --version就可以看到版本
# mkdir /home/git/www.xxx.com.git
# cd /home/git/www.xxx.com.git
# git init --bare
cat > hooks/post-receive
#!/bin/bash
GIT_WORK_TREE=/home/wwwroot/www.xxx.com git checkout -f
设置权限
# chmod +x hooks/post-receive
/home/git/www.xxx.com.git就是git的线上仓库
3.本地端
假设本地网站在E:\www.xxx.com
# E
# cd www.xxx.com
# git init # git add -A # git commit -q -m "mysite"
注意在执行git add -A 添加本地所有的文件前,先检查下根目录下是否有.gitignore 文件,像laravel站点就会有,.gitignore指定不进行版本控制的文件及文件夹 注释掉或者暂时移除
# git remote add 远程库名 ssh://ssh用户名@服务器IP/home/git/www.xxx.com.git
# git push 远程库名 +master:refs/heads/master
执行过程中需要输入ssh密码
然后去服务器端看一下,是不是已经上传到服务器了
平时有修改的时候,命令行进入站点目录后
执行
# git commit -am "mysite"
# git push 远程库名
就可以更新到服务器了
使用git clone可以同步到本地
4.使用ssh key避免每次都输入密码
考虑到win上面创建ssh key还需要下载ssh keygen比较麻烦,还是在服务器端直接生成
# cd /root/.ssh
如果/root/.ssh这个目录不存在 就创建它 并赋予它700权限
# mkdir /root/.ssh
# chmod -R 700 /root/.ssh
# cd /root/.ssh
输入
# ssh-keygen
就可以创建公匙 和秘匙对
一路回车会在/root/.ssh下创建id_rsa 和 id_rsa.pub两个文件 其中id_rsa.pub是公匙,将他变为authorized_keys
# cp /root/.ssh/id_rsa.pub /root/.ssh/authorized_keys
给644权限
# chmod 644 /root/.ssh/authorized_keys
接着编辑/etc/ssh/sshd_config
# vi /etc/ssh/sshd_config
去掉下面3行的注释
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
接着重启sshd
# /etc/init.d/sshd restart
接着把id_rsa下载到本地电脑 然后在服务器端删除
# rm -rf /root/.ssh/id_rsa
接下来回到本地电脑,先在当前用户的文件夹下创建一个.ssh文件名
cd c:\Users\你的用户名 mkdir .ssh
鼠标是创建不了带.号名称的文件夹的,所以需要使用命令行
接着把下载下来的id_rsa文件放入这个.ssh文件夹中就可以了
5.使用
再次push的时候,会提示你是否保存信息,输入yes回车 .ssh文件夹下会多一个known_hosts
之后使用git 就不需要输入密码了
如果说在另外台服务器上也部署了git咋办
其实只要把
/root/.ssh/authorized_keys
拷贝过去就可以
cd c:\Users\用户名
ssh-keygen 回车
接着按提示输入.ssh\id_rsa
一路回车就会在.ssh中生成 id_rsa密匙 和id_rsa.pub公匙
把id_rsa.pub 上传到 /root/.shh下并改名为authorized_keys并给644权限就好
另外呢其实服务器端的.ssh文件夹是在 ~路径下,也就是你当前用户文件夹下,如果是root就是/root/.ssh 如果是gituser就是/gituser/.ssh
最后可以使用puttygen生成一个ppk文件给putty用,这样使用putty登陆服务器就不用输入用户名密码了
方法是打开puttygen 点conversions -> import key
选择生成的密匙 id_rsa
然后点save private key
保存为id_rsa.ppk就可以给putty用了