“服务器” 标签页面:
-
Apache结合mod_dav_svn和mod_authz_svn打造SVN服务器
制作SVN服务器的软件和工具有很多,比如每个SVN都有的svnserve,以及图形化界面超容易使用的VisualSVN Server。但是,现在既然有Apache服务器,那就直接用就是了,而且还可以使用Web浏览目录。
首先,前往这里下载对应的SVN发行包,我下载的是Win32Svn。里面自带mod_dav_svn.so与mod_authz_svn.so。使用与Apache2.2,其他版本请自行测试。
然后,把Win32Svn解压缩,如d:\Subversion,然后在系统环境变量中加上d:\Subversion。
接着,把mod_dav_svn.so与mod_authz_svn.so拷贝到apache的modules目录。
修改httpd.conf,把以下两行前面的“#”注释去掉:
LoadModule dav_fs_module modules/mod_dav_fs.so
LoadModule dav_module modules/mod_dav.so在所有LoadModule的最后加上下面两行:
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so假设使用d:\svn作为仓库的地址,则在httpd.conf或对应虚拟主机的配置中加上:
#SVN START
<Location /svn>
DAV svn
SVNParentPath D:\svn
AuthType Basic
AuthName "blog.creke.net SVN"
AuthUserFile D:\svn\.htpasswd
AuthzSVNAccessFile D:\svn\.ht_svn_authz
Require valid-user
</Location>
#SVN END其中的.htpasswd是用户密码文件,与apache的一样。
.ht_svn_authz是访问控制文件,可以在svnadmin create后,在conf目录下authz.conf找到该文件带有注释的原型。
如果在blog.creke.net的虚拟主机中加上以上配置,再执行“svnadmin create d:\svn\rep1”后,我们访问http://blog.creke.net/svn/rep1时,就会访问到对应的rep1的仓库。
使用这个方法,apache就会兼做svn服务器,就不需要单独启动svnserve了。
-
BIND-dlz联合数据库DNS服务器安装小记
BIND是DNS服务程序,既可以做面向用户的DNS服务器,也可以做面向域名的DNS服务器,或者两者混合的DNS服务器。我要做的是面向域名的那种,为域名进行解析。
下载编译安装是以下指令:
wget ftp://ftp.isc.org/isc/bind/9.8.0-P4/bind-9.8.0-P4.tar.gz
cd bind-9.8.0-P4
./configure –with-dlz-mysql –enable-largefile –enable-threads –with-openssl –prefix=/usr/local/bind
make
make install
然后在/usr/local/bind/etc/named.conf输入以下内容:
key "rndc-key" {
algorithm hmac-md5;
secret "gOszdwp5stjsnfI7MybyIg==";
};controls {
inet 127.0.0.1 port 953
allow { 127.0.0.1; } keys { "rndc-key"; };
};options{
directory "/usr/local/bind/etc";
#forwarders {8.8.8.8;};
pid-file "/usr/local/bind/etc/named.pid";
statistics-file "/usr/local/bind/etc/named.stats";
recursion no;
allow-query {any;};
allow-transfer {none;};
};logging {
channel bind_info {
file "/var/www/logs/bind.log" versions 20 size 20m;
print-category yes;
print-time yes;
severity notice;
};category default {
bind_info;
};
};include "/usr/local/bind/etc/view_crekebind.conf";
接着,从ftp://ftp.rs.internic.net/domain/named.root下载ROOT SERVER地址列表到/usr/local/bind/etc/。并在/usr/local/bind/etc/view_crekebind.conf输入以下内容:
#any-view
view "any_view" {
match-clients { ANY; };
allow-query-cache { ANY; };
#allow-recursion { ANY; };
#allow-transfer { ANY; };dlz "Mysql zone" {
database "mysql
{host=localhost dbname=crekebind user=root pass=123456 ssl=false}
{SELECT ‘TRUE’ FROM canonical WHERE content = ‘$zone$’ limit 1}
{SELECT ttl, type, priority, CASE WHEN lower(type)=’txt’ THEN concat(’\"’, data, ‘\"’) ELSE data END AS data FROM record, canonical WHERE content = ‘$zone$’ and host = ‘$record$’ AND zone = domain}
{}
{SELECT ttl, type, host, priority, case when lower(type)=’txt’ then concat(’\"’, data, ‘\"’) else data end AS data FROM record, canonical WHERE zone = domain
AND content = ‘$zone$’}
{SELECT ‘TRUE’ FROM xfr, canonical WHERE zone = domain AND content = ‘$zone$’
AND client = ‘$client$’}";
};zone "." IN {
type hint;
file "named.root";
};};
上面的dlz配置对应myantdns,这是一个开源的PHP+MYSQL的DNS管理前端。
根据官方文档,这里解释一下“dlz "Mysql zone"”一节的相关内容。如果用的是其他前端,则相关配置可能如下所示:
- dlz "Mysql zone" {
- database "mysql
- {host=localhost dbname=dns_data ssl=tRue}
- {select zone from dns_records where zone = ‘$zone$’}
- {select ttl, type, mx_priority, case when lower(type)=’txt’ then concat(’\"’, data, ‘\"’)
- else data end AS data from dns_records where zone = ‘$zone$’ and host = ‘$record$’
- and not (type = ‘SOA’ or type = ‘NS’)}
- {select ttl, type, mx_priority, data, resp_person, serial, refresh, retry, expire, minimum
- from dns_records where zone = ‘%zone%’ and (type = ‘SOA’ or type=’NS’)}
- {select ttl, type, host, mx_priority, case when lower(type)=’txt’ then concat(’\"’, data, ‘\"’)
- else data end AS data, resp_person, serial, refresh, retry, expire,
- minimum from dns_records where zone = ‘$zone$’ and not (type = ‘SOA’ or type = ‘NS’)}
- {select zone from xfr_table where zone = ‘$zone$’ and client = ‘$client$’}
- {update data_count set count = count + 1 where zone =’$zone$’}";
- };
第一行声明使用DLZ驱动,第二节声明使用MYSQL。这些一般都是规定不变的。
第三行声明MYSQL的链接信息,这一行可以用到的参数还有dbname、port、host、user、pass、socket、compress、ssl、space。
第四行是查询DNS服务器中是否存在被请求域名$zone$,如果返回一行或以上结果,则被判断为存在,否则返回不存在改域名的应答。
第五行至第七行是返回域名记录,如果在下面紧接着的定义中定义了查询SOA和NS记录的语句,则本行必须过滤掉相应的SOA和NS记录,如本例子所示;如果下面没定义,则本行必须返回相应的SOA和NS记录,如上面的例子所示。
第八行则是刚刚说的用于返回SOA和NS记录的语句,如果上面的没有返回,则如例子所示设置;如果已经返回,则设为“{}”,注意其中不能用空格及其他字符。
第十至十二行是返回AXFR时所有的域名记录,如果这是包括SOA和NS记录,则第八行须设为空,否则须在第八行返回SOA和NS记录。
第十三行是查询当前请求AXFR的请求者$client$是否符合请求$zone$的授权,只要返回一行或以上记录就算符合。
第十四行是访问$zone$时的为相应的记录加一。
其中从第八行值第十四行的记录均为可选项。
说实话,配置bind dlz并不算麻烦,麻烦的是,现在找不到像模像样的PHP管理前端,webmin的开发得挺好,但是它不仅仅是bind管理,所以比较庞大,安装比较麻烦。这次我没装,有空会好好研究一下。
-
DNS服务器SOA记录的解释
任何DNS系统返回第一个域名记录就是SOA(Start of Authority),在域名配置中,SOA记录格式如下:
@ IN SOA nameserver.place.dom. postmaster.place.dom. (
1 ; serial number
3600 ; refresh [1h]
600 ; retry [10m]
86400 ; expire [1d]
3600 ) ; min TTL [1h]使用“dig”时的返回格式为:
nameserver.place.dom. 7200 IN SOA ns1.he.net. postmaster.place.dom. 1 3600 600 68400 3600
其中的每个部分解释如下:
serial number(序列号):是域名记录的版本,每更改一次域名的任何DNS记录,版本号就会自动加一,这时secondary dns就会知道DNS记录发生更改,以便重新同步。
refresh(刷新时间):告诉secondary dns多久应该查询primary dns,看看DNS记录是否有更新。每次查询时,secondary dns会向primary dns请求SOA记录。如果记录中的serial number跟secondary dns已有的序列号不一样,则会向primary dns请求传送域名的当前的DNS记录。
retry(重试时间):如果想primary dns请求传送域名当前的DNS记录失败后,间隔重试时间后再次重试请求。一般来说,retry小于refresh。
expire(过期时间):在过期时间之前,secondary dns会继续请求传送DNS记录,并且在此时间里,secondary dns会根据已有的记录应答相关的DNS查询。如果到了过期时间后,secondary dns会停止应答该域名的DNS查询。
min TTL(最小TTL):域名所有记录的最小生存时间值。当用户DNS查询到记录后,将存在缓存中,直到至少过了这个时间才将缓存刷新重新查询。
有的DNS服务器还会有Negative caching TTL,就是当用户DNS查询到无此域名记录(NXDOMAIN)时,将把这个“没有此域名的记录”的声明保存在缓存中的时间。
-
服务器转来转去
一周半没写博客了。不是因为懒,也不是因为没写博客的时间,而是这几天博客的网站空间换了服务器,但是新服的配置有问题,禁止了xmlrpc,也就是,无法用Writer这种客户端发布。联系了管理人员,貌似他们也觉得问题很奇怪,现在都还没有解决。
今天早上,干脆把博客转到另外的空间去,歇息一段时间,等到那边的xmlrpc正常后,再搬回去。貌似现在这个空间速度不错,我还设置了5IP的DNS轮循,防墙甚于防火,对于我这种博客来说,是再好不过的。
这几天在搞opengl的实验,本来一门什么都不教的课程,老师让我们做一个无比强大的系统,真是痴线了,虽然老师人不错,出发点也很好,但是这教学大纲真是痴线了,疯了。Anyway,今天一定要实现第一个实验!
-
Apache服务器支持.htaccess和rewrite和virtualhost
Apache服务器支持.htaccess和rewrite和virtualhost最近想升级维护Creke ACG,但是以前自己配置的AMP有些功能不支持,所以要自己动手让他支持。支持.htaccess
如何让自己的本地APACHE服务器支持".htaccess"呢?其实只要简单修改一下apache的httpd.conf设置就可以让APACHE支持.htaccess了,来看看操作
打开httpd.conf文件(在那里? APACHE目录的CONF目录里面),用文本编辑器打开后,查找
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>改为
<Directory />
Options FollowSymLinks
AllowOverride All
</Directory>就可以了
支持rewrite:
LoadModule rewrite_module modules/mod_rewrite.so支持virtualhost:
在文件末尾加上
include "conf/vhost.conf"
然后在httpd.conf新建一个vhost.conf文件。在该配置文件写上虚拟主机的配置就行。
#NameVirtualHost *:80
#
# NOTE: NameVirtualHost cannot be used without a port specifier
# (e.g. :80) if mod_ssl is being used, due to the nature of the
# SSL protocol.
##
# VirtualHost example:
# Almost any Apache directive may go into a VirtualHost container.
# The first VirtualHost section is used for requests without a known
# server name.
#
#<VirtualHost *:80>
# ServerAdmin webmaster@dummy-host.example.com
# DocumentRoot /www/docs/dummy-host.example.com
# ServerName dummy-host.example.com
# ErrorLog logs/dummy-host.example.com-error_log
# CustomLog logs/dummy-host.example.com-access_log common
#/VirtualHost>
比如我,就是:NameVirtualHost *
<VirtualHost *> #默认情况
DocumentRoot "w:/www"
</VirtualHost><VirtualHost *> #Creke ACG站点
DocumentRoot "w:/www/creke_acg"
ServerName acg.creke.net
</VirtualHost>虽然说的是“NOTE: NameVirtualHost cannot be used without a port specifier”,但我仍然这样子配
置成功没有报错,也没有警告。而且可以继续使用80和21500两个端口来访问网站。看来有空要研究一下
http://httpd.apache.org/docs/2.2/vhosts/,看看是否新版本中有和旧版本不同的说明了。
这样,再把本地的host文件暂时添加acg.creke.net为127.0.0.1,就可以在本地调试升级Creke ACG了。
-
更改creke.net域名DNS服务器
更改creke.net域名DNS服务器昨晚把creke.net域名的DNS服务器换了。原来使用的是新网的DNS,不过新网的DNS是公认的慢,而且,我是在代理买的,因此各种记录有限制20条。最重要的是,不支持DNS轮循。不爽。所以昨天一狠下心来,换了!不过,换归换,新的DNS服务还是有一点无法比拟新网的DNS,那就是URL转发。新网的URL转发是301请求的转发,这样子是对搜索引擎最友好的。我原来想找其它的转发服务代替,可惜国内的URL转发的服务几乎没有。而国外的几乎被封得差不多了,勉强能用的是everydns的转发,但是也是一天抽风半天的不稳定状态。所以,只好找个方法使得转移DNS后仍然能使用新网的URL转发。其实,A记录是最方便的办法,就是,把原来转发的二级域名ping出IP来,然后在新的DNS中做A记录。但是,考虑到新网的URL转发服务器IP会改变,所以这个不是一劳永逸的办法。后来,查看DNSpod的帮助文档时,灵光一闪,将转发域名设置NS记录到新网的DNS中,一切OK。当然,还有一个问题,就是更改到别的DNS后,新网的管理面板无法进入新网的DNS平台了。还是灵光一闪,我想到了代理商的后台中提供了两个密码,一个是域名管理密码,另一个是新网的DNS密码。起初因为能直接通过新网的管理平台进入新网的DNS,所以我也不太知道新网的DNS密码可以直接进入DNS管理后台。现在终于知道两个密码的各自的用途了。我再次感到我选择的代理商还算有点良心……这里讨论的前提是,域名的DNS不使用新网的DNS后,新网的DNS不会停止你的域名的解析,也不会删除DNS记录。目前看来,一切正常,而且新网的DNS大概也没时间去删除DNS记录和停止解析。再观察几天,如果新网的DNS确实不更改原有的记录,同时增加修改删除正常,那么此方法证实可行。其他使用creke.net二级域名的朋友们的二级域名不受影响,更换至新的DNS后,我把二级域名的NS服务器全部添加了,域名也更稳定了。
时间脚印
| 一 | 二 | 三 | 四 | 五 | 六 | 日 |
|---|---|---|---|---|---|---|
| « 三 | ||||||
| 1 | 2 | 3 | 4 | 5 | ||
| 6 | 7 | 8 | 9 | 10 | 11 | 12 |
| 13 | 14 | 15 | 16 | 17 | 18 | 19 |
| 20 | 21 | 22 | 23 | 24 | 25 | 26 |
| 27 | 28 | 29 | 30 | 31 | ||
最新文章
- ffmpeg/ffprobe查看音频视频文件信息并输出为json格式
- ffmpeg将音频或视频编码为AMR格式音频
- CentOS编译安装ffmpeg以及相关编码解码器
- CentOS编译安装新版gnutls
- MingW通过mingw-get的package管理切换回gcc 4.5.2
最近评论
- Bobhu 在 ffmpeg/ffprobe查看音频视频文件信息并输出为json格式 上的评论
- ApkTool反编译和重新打包 - iew3c 在 Android中Java编写的APK使用apktool反编译并修改smali 上的评论
- zaykl 在 为nginx配置https并自签名证书 上的评论
- cubieboard试用手记 | 斯巴达第二季 在 为nginx配置https并自签名证书 上的评论
- 给猫 在 一年的感动,终于终结――《Clannad Afterstory》完结纪念 上的评论