2009.03.24
在配置各个网络服务的时候,由于各个服务的配置不同,导致了其衍生出来的文件放置位置也很无序。
例如:nginx ,在源码编译完成后会在prefix目录(编译时指定Prefix=/usr/local/nginx)中生成几
个其要用到的目录,如logs、conf、html、sbin,这些目录根据其名称就可以判断出是用来放置什么
文件的。这样看起来虽然说很有调理,但如果我编译安装的程序很多,都放到了/usr/local目录下了
那么各个服务都有log文件,都有pid文件。如果我要查找的话还必须到每个服务目录的相应目录中去
查找,很不方便。还有如果log文件很大的话也会很占用/usr目录(分区空间)。RedHat和CentOS的发
行版本中,推荐将/var 和 /usr 单独分区的。这是因为发行版本中将各个程序的目录分配得很合理。
下面列出了发行版本中一些默认的目录及其作用:
/etc/ 所有的服务关于配置相关的文件都在/etc目录中,如apache:/etc/httpd ssh:/etc/ssh
/var/log 各个程序的log文件存放位置
/var/run 各个程序的pid文件
这样做的目的是为了便于管理,而且有利于磁盘空间的有效利用。那有些人又会说了,如果我编译安
装的话,各个目录都在我的prefix目录中,我进到这个目录中很容易的查看该服务的相关文件如log,
pid文件等。那我如何才能既便于管理,又看起来在同一个prefix目录中呢。有个好办法,那就是利用
连接,我将系统中默认的公共log路径连接到我程序的prefix目录中就能解决这个问题了。事实上操作
系统的发行版本中也就是这么做的。如apache,我到apache目录看一眼:
[root@myvmm ~]# ll /etc/httpd/
total 16
drwxr-xr-x 2 root root 4096 Mar 24 09:25 conf
drwxr-xr-x 2 root root 4096 Mar 23 16:53 conf.d
lrwxrwxrwx 1 root root 19 Jan 10 12:21 logs -> ../../var/log/httpd
lrwxrwxrwx 1 root root 27 Jan 10 12:21 modules -> ../../usr/lib/httpd/modules
lrwxrwxrwx 1 root root 13 Jan 10 12:21 run -> ../../var/run
呵呵,看到了吧,它就是将系统的专属功能目录连接到了自己目录下,这样在apahce配置文件的时候
也就可以直接写连接路径了,而不必去写那些路径的绝对路径了,可能你还不是很明白,看看apache
的关于pid和log文件的设置就清楚了:
[root@myvmm ~]# vi /etc/httpd/conf/httpd.conf
PidFile run/httpd.pid
ErrorLog logs/error_log
CustomLog logs/access_log combined
apache 关于pid,log文件的位置是直接写的 目录/文件名 的形式。由于run,logs目录是与conf同级
别的,所以这里就直接写了 run/httpd.pid;logs/error_log 等。经过实践绝对不能将目录修改为../run/
的形式,如果这样的话apache会找不到路径!切忌。
这里只例举了apahce的例子,不同的程序配置也不同,但规则是这样的。配置也就离不开这个框框了。
近期评论