传统部署网站到服务器的方法一般是FTP,但是这样会有一些问题,比如一个是上传速度慢,再一个是不能进行版本控制。
常用的一个分布式版本控制工具就是git,关于git的详细使用方法可以参考廖雪峰Git教程。
准备
首先你得有一个主机作为服务器,可以ssh登录,假设服务器信息如下
host: blinkdr.test
user: blinkdr
passwd: 123456
siteroot: /home/blinkdr/public_html //网站根目录
另外在本地端和服务器端都应安装好了git工具,简单利用git部署网站的基本原理如下
当本地代码仓push时,会触发服务器端git的一个钩子(post-receive),从而执行checkout到网站目录的命令。
服务器端仓库配置
1.新建一个目录作为远程代码仓库
mkdir ~/test.git //客户端代码都提交到这里
2.初始化代码仓
cd test.git
git init --bare //这里一定要加--bare选项
3.复制配置文件
cd hooks
cp post-receive.sample post-receive
4.编辑post-receive内容
#!/bin/bash
#
SITEROOT=/home/blinkdr/public_html
#清楚没有git add的文件和目录
git --work-tree=${SITEROOT} clean -fd
#从仓库中强制checkout代码
git --work-tree=${SITEROOT} checkout -f
客户端设置
1.新建本地文件夹并与服务器仓库关联
mkdir test
cd test
git init
git remote add origin blinkdr@blinkdr.test:/home/blinkdr/test.git
//这里会让你输入用户'blinkdr'的密码'123456'
//若不想输入密码,则需要将本地客户端的'id_rsa.pub'文件中的内容添加到服务器中'/home/blinkdr/.ssh'目录下的authorized_keys文件中
2.编辑本地文件提交服务器
touch test.php
echo "<?php echo 'hello world'; ?>" >> test.php
git add test.php
git commit -m "new a file test.php"
git push origin master
3.查看效果
通过ssh登录到服务器,查看网站根目录下是否有”test.php”文件。
或者直接访问”http://blinkdr.test/test.php“看是否输出’hello world’(这里假设服务器都已经配置好)。
如果在这过程中,没有部署成功,很大一部分原因是当前用户对网站的根目录没有写的权限,只需对其做权限修改即可。