centos+crontab+shell+git进行项目更新
我现在想开发一个tp+workerman的后台,所以我在码云创建一个项目,然后在本地开发,每开发完一个功能就git push到码云上面,然后自己又在本地虚拟主机上安装一个centos的系统来做服务器,修改静态ip,安装lamp环境,安装git软件,然后git码云上面的项目到这个服务器中的web目录中进行测试。
所以一直在思考一个问题,那就是我在git(码云)上创建一个项目,自己在win环境下开发,开发完成后,git push到码云上,但是我想在我git到码云上面的时候就能直接更新到我的服务器,这样我就不用每次本地git push到码云,还要在服务器上git pull项目下来更新,这样太麻烦。所以我想到用corntab定时任务来进行项目更新。
思路:本地git push到码云-->shell脚本写入每两分钟git pull项目
操作:
系统:centos7.2
1:安装corntab软件 yum install vixie-cron crontabs
2:crond服务
$ systemctl restart crond.service #启动服务
$ systemctl reload crond.service #重新载入配置
$ systemctl status crond.service #查看crontab服务状态
$ systemctl enable crond.service #开机自启动
最近发现还有这样的操作:
/sbin/service crond start
/sbin/service crond stop
/sbin/service crond restart
/sbin/service crond reload
以上1-4行分别为启动、停止、重启服务和重新加载配置。
3:centos7.2 lamp的环境部署,百度有很多的教程
我采用lamp(CentOS7+Apache+MySQL+PHP)环境 这个的方式。
4:git的安装
$ yum install git #git安装
$ git --version #查看git的版本
$ yum remove git #移除git
5:创建一个git用户组和用户
$ groupadd git #git用户组
$ useradd liyuzhao -g git #新建liyuzhao用户并添加到git用户组
$ passwd liyuzhao #修改liyuzhao用户密码
$ usermod -g git liyuzhao #让liyuzhao用户加入git用户组
配置git
$ git config --global user.name "xxx" #xxx是你上传文件到码云的名称,可以不用是用户名
$ git config --global user.email xxx #xxx是你的邮箱名
6:创建ssh证书,这样用码云可以不用输入密码账号了
$ cd /home/liyuzhao #进入liyuzhao用户目录
$ ssh-keygen -t rsa -C "xxx" #xxx为你的密匙,输入你的邮箱也可以,后面按三次enter既能生成密匙
$ cat ~/.ssh/id_rsa.pub #查看密匙(公匙),输入会出现一段字母和数字,复制它
7:在码云绑定公匙
打开码云的官网登录你的账号,点击修改资料--》SSH公匙,标题输入'xxx',就是6创建的密匙,公匙输入你复制的字母和数字那一串东西,点击确定即可
8:编辑crontab命令
$ cd /var/www/ #进入到www目录,该目录可以自行选择
$ mkdir cron #创建cron目录
$ chmod -R 777 cron #给cron最高的权限
9:建立shell脚本
$ vi cron/git.sh #用vi编辑器新建shell脚本
在shell脚本中输入:
#! /bin/sh
# 保存当前目录
currentDir=$PWD
# 切换到项目目录
cd /var/www/html/tp-workerman
#这个是覆盖版本的,如果出现更新代码冲突,测试可以直接覆盖服务器上本地的代码
git reset --hard
# 执行git命令
git pull
以上的意思是切换到项目的目录下,然后git pull更新目录,并给git.sh最高权限输入:
$ chmod 777 git.sh
10:用crontab建立定时任务
$ crontab -e #进入定时任务编辑
写入:
*/2 * * * * /var/www/cron/git.sh
上面的意思是每两分钟去执行下这个shell脚本。(注意:定时任务建议用root账户来写)
11:在你的服务器上clone你的项目到你的项目目录
$ git clone https://git.oschina.net/php666/tp-workerman.git #这个是我的项目,这个步骤应该会让你输入你的码云账号和密码
一般是复制如图所示的链接。
以上只要你git上的文件有新的,就会自动部署到你的服务器中了。如果还不行,建议先在你的项目git pull一次。如果出现了错误,有可能是版本出现了问题,你可以在项目直接git pull看看能不能成功,如果成功那就不是这个版本问题,如果不能成功,建议去看看git冲突解决方法这位博主的博文,解决git冲突常见的方法
PS:大家如果在连接数据库的时候出现连接不上,有大的问题是数据库的账号权限问题,这个很好弄。方法:
1:mysql -uroot -p #登录mysql
2:use mysql; #进入mysql数据库
3:select * from user\G; #查看mysql数据库的用户表,只需要查看用户名里面对应的host字段的数据,如果为localhost或者::1等等
4:修改host字段的数据,修改为ip或者%,%的意思是所有的ip都可以用该用户连接,如果只是测试,建议直接%
5:update set host='%' where host='localhost' and User='root' ; #这个是修改字段的数据的,如果不懂建议去学学数据库操作
6:flush privileges; #刷新权限,这个修改mysql表的数据,必须要刷新,否则修改不起作用
7:可以连接数据库了
如果有错误,欢迎留言并提出~~