centos+crontab+shell+git进行项目更新

liyuzhao8年前笔记1705

我现在想开发一个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 #进入定时任务编辑

基本格式 :  
* *   *  *  *  command  
分  时  日  月  周  命令  
第1列表示分钟1~59 每分钟用*或者 */1表示  
第2列表示小时1~23(0表示0点)  
第3列表示日期1~31  
第4列表示月份1~12  
第5列标识号星期0~6(0表示星期天)  
第6列要运行的命令

写入:

*/2 * * * * /var/www/cron/git.sh

上面的意思是每两分钟去执行下这个shell脚本。(注意:定时任务建议用root账户来写)

11:在你的服务器上clone你的项目到你的项目目录

$ git clone https://git.oschina.net/php666/tp-workerman.git  #这个是我的项目,这个步骤应该会让你输入你的码云账号和密码

一般是复制如图所示的链接。

image.png



以上只要你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:可以连接数据库了


如果有错误,欢迎留言并提出~~


相关文章

使用码云git push推送失败!

使用码云git push推送失败!

最近在笔记本使用phpstrom进行项目推送到码云,但是commit和pull都成功,就是push失败,出现了入下的错误。重装phpstrom和git都没有用,百度了很久也没有答案。不过被我乱弄就解决...

mac使用virtualbox搭建centos7环境并配置静态ip(记录)

步骤:1、下载virtualbox(自行百度谷歌或者官网下载),官方地址2、下载centos7镜像,阿里centos镜像地址3、选择minimal类型的镜像下载4、安装virtualbox5、安装ce...

linux终端递归给目录和子目录权限

我相信很多人都知道怎么给目录权限,但是想给目录下所有的文件和目录也有同样的权限估计就有很多人不懂了,其实也就是多一个操作。操作如下:$ chmod 755 目录名 -R #-R代表递归该文件...

使用docker-compose快速搭建php或者node环境

这个是博主自己写的一份docker文件,能让你快速的搭建php或者node环境。github地址:dcnmp注意1、默认使用php7.3的镜像,如果你要用php7.2,请记得修改nginx的php代理...

正则匹配只能输入正负数字(包括小数)

在网上很多都不行,很多都是能匹配正负数字,但是很多正则表达式把0002等这些都被匹配出来了。下面这个是完美的正则表达:/(?!(^-?0(\d+)|^-?0(\.0+)?$))^-?\d+(?:\.\...

centos通过yum升级更新php的版本

如果你的centos PHP上面的版本很低,那么建议你通过yum进行更新。建议大家去参考这个博主的博文:Centos7下Yum更新安装PHP5.5,5.6,7.0如果出现:Resolving ...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。