分类 网站建设 下的文章

经过实践,下面的方法在Centos服务器配置成功,实现利用Git命令自动将版本库内容同步到网站目录,避免使用常见的ftp工具软件来上传更新网站文件。

1、在服务器上安装好Git环境后,创建裸版本库:

[root@remotehost]$ mkdir /home/git
[root@remotehost]$ cd /home/git
[root@remotehost]$ git init -bare webroot.git

在服务器/home/git目录下创建了一个webroot.git的裸版本库

2、创建web目录:

[root@remotehost]$ mkdir -p /home/www/webroot

设置网站目录权限为775:即用户组有写入权限。在ftp工具软件里面设置:

775.png

或者使用linux命令:

[root@remotehost]$chmod -R 775 ./www/webroot

假设当前网站目录webroot的所属用户组为apache,需要git用户添加一个所属用户组(注意:非去掉原来所属的用户组),让git用户有访问webroot目录的权限。

[root@remotehost]$ usermod -a -G apache git

3、在本机从服务器上克隆裸版本库,PC初始化一个版本库

[Administrator@pc]$ cd cd d:\workspace
[Administrator@pc]$ git clone git@git.yourdomain.com:/home/git/webroot.git

现在本地版本库目录:d:workspacewebroot

4、在服务器上设置钩子

[root@remotehost]$ cd /home/git/webroot.git/hooks

使用vi创建一个新的post-receive文件:

[root@remotehost]$ vi post-receive

输入以下内容并保存:

#!/bin/bash
git --work-tree=/home/web/wwwroot checkout -f

上面的 --work-tree对应网站根目录。
给新建的post-receive文件添加可执行权限,并将该文件的用户及用户组都设置成git:

[root@remotehost]$ chown git:git post-receive
[root@remotehost]$ chmod +x post-receive

现在配置过程基本结束。

在本地版本库工作区里开发,然后使用git push指令推送到远程裸版本库,钩子会使post-receive自动生效,远程服务器裸版本库接收到推送内容后会自动将版本库里的文件检出到--work-tree指定的/home/web/wwwroot目录里,实现和网站目录同步。

由于远程库是空的,我们第一次推送master分支时,需要加上-u参数:

git push -u origin master

如果你在Git push到远程服务器成功 但是在wwwroot目录下并没有发现自己的代码,一般是由于文件夹的权限的原因造成的。

可能用到的命令:
查看用户所属的用户组
1、groups 查看当前用户所属组
2、groups username 查看用户所属组

3、将已存在的用户添加到多个用户组
usermod -G groupname username (注意:这个命令会把用户从原来所属的用户组中去掉,只属于现在命令里面指定的用户组)
如:usermod -G git git (git只属于git组)

usermod -a -G groupname username (把用户添加到这个组,之前所属组不影响)
如:usermod -a -G apache git (git属于之前的git用户组,现在也同时属于apache用户组)。

这几天搭建了一个博客,选择的是清新好用的Typecho 1.1版本。
在后台设置永久链接的时候,启用地址重写功能提示:“重写功能检测失败, 请检查你的服务器设置”提示,选择“如果你仍然想启用此功能, 请勾选这里”选项,仍然不行。
搜索Typecho 论坛找到一个解决方法:

http://forum.typecho.org/viewtopic.php?f=4&t=9318&p=39162&hilit=%E6%B0%B8%E4%B9%85%E9%93%BE%E6%8E%A5%E9%94%99%E8%AF%AF#

其实这个方法用于typecho安装在网站根目录是可以的,悲催的是我安装在网站二级目录,使得本来很简单的问题拖了很久才终于解决。

参考链接:

https://www.douban.com/note/206893852/
https://www.lvtao.net/config/660.html

下面的方法适用于Apache服务器环境,经测试有效。

在Typecho安装根目录下创建如下内容的 .htaccess 文件,然后上传到Typecho安装目录。
如果typecho安装在网站根目录:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php/$1 [L]
</IfModule>

如果typecho安装在网站二级目录,下面的代码以安装在blog二级目录为例:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /blog/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /blog/index.php/$1 [L]
</IfModule>

然后在Typecho后台设置永久链接即可。