标签归档:Apache

Apache编译安装配置并支持Subversion版本控制

      毫无技术含量的文章,只是对先前一台服务器瞎捣鼓的后来由于上班太无聊的回忆潦草的记录备忘而已吧。。。

       一、更新CentOS系统至最新版本CentOS5.4

修改更新源 使用ustc.edu.cn的更新源
#cd /etc/yum.repos.d/
#mv CentOS-Base.repo CentOS-Base.repo.bak (备份修改前默认更新源)
#wget http://centos.ustc.edu.cn/CentOS-Base.repo.5 (下载更新源)
#mv CentOS-Base.repo.5 CentOS-Base.repo
(因为默认的配置文件中服务器地址用的版本号是变量$releasever,所以需要将其替换为实际的版本号,否则是无法连接到服务器的,当前CentOS最新版是5.4,所以我们修改CentOS-Base.repo )
#vim CentOS-Base.repo
vim全文替代命令并保存退出
:%s/$releasever/5.4/
:wq
#yum update   “更新下载
#lsb_release –a “查看验证版本

       二、下载安装配置Apache & Mysql & PHP & KBS_BBS

1、目录定义:
$bbs_install_dir   表示 bbs 的安装目录 /home/bbs
$www_install_dir 表示 apache 的安装目录/home/www
$php_install_dir   表示 php 的安装目录/home/www/php
$phlinux_dir         表示花生壳安装目录/usr/local/phlinux/ (默认安装路径)
$code_dir             表示存放 kbsbbs、apache 和 php 源代码的目录/home/src
2、软件下载:
Apache:wget -c http://apache.mirror.phpchina.com/httpd/httpd-2.2.11.tar.gz
Mysql:wget -c http://mysql.ntu.edu.tw/Downloads/MySQL-5.0/mysql-5.0.67-linux-i686.tar.gz
PHP:wget -c http://cn.php.net/get/php-5.3.0.tar.gz/from/cn2.php.net/mirror
KBS_BBS:svn co http://svn.kcn.cn/repos/kbs/trunk/www2
3、编译安装:
#tar zxvf httpd-2.2.11.tar.gz
#cd httpd-2.2.11
#./configure –prefix=/home/www –enable-so –enable-rewrite –enable-ssl
#make && make install
#cd /home/www/conf/
#vim httpd.conf
   添加修改:(使其支持运行php程序)
         AddType application/x-httpd-php .php
         User bbs
         Group bbs
         AddDefaultCharset gb2312

#cd ..
#tar zxvf mysql-5.0.67.tar.gz
#cd mysql-5.0.67
#./configure –prefix=/usr/local/mysql –with-charset=utf8 –with-collation=utf8_general_ci –with-extra-charsets=latin1
#make && make install
#cp support-files/my-medium.cnf /etc/my.cnf
#cd /usr/local/mysql/
#bin/mysql_install_db –user=mysql
#chown –R root .
#chown –R mysql /usr/local/mysql/var
#chgrp –R mysql .
#bin/mysqld_safe –user=mysql &
#cd /home/src/mysql-5.0.67
#cp support-files/mysql.server /etc/init.d/mysql
#chmod 755 /etc/init.d/mysql

#yum install php-gd php-xml php-domxml zlib-devel openssl-devel gmp-devel gd libesmtp-devel
#cd /home/src/
#tar zxvf php-5.3.0.tar.gz
#cd php-5.3.0
#./configure –prefix=/home/www/php –with-apxs2=/home/www/bin/apxs –disable-debug –with-pic –disable-rpath –enable-inline-optimization –with-dom-dir=/usr –with-gd –with-freetype-dir=/usr –with-png-dir=/usr/ –with-jpeg-dir=/usr –with-zlib –enable-track-vars
#make && make install
#cp  php.ini-production /etc/php.ini
#vim /etc/php.ini
  修改short_open_tag = Off
        magic_quotes_gpc = off
        extension_dir = "/usr/lib/php/modules"

#cd /home/src/
#svn co "http://svn.kcn.cn/repos/kbs/trunk/kbs_bbs"
#cd kbs_bbs/
#./configure –prefix=/home/bbs –enable-site=jmubbs –with-php=/home/www/php –with-mysql=/usr/local/mysql –enable-ssh –enable-ssl
#make && make install

#cd /home/src/
#svn co http://svn.kcn.cn/repos/kbs/trunk/www2
#cd /home/www/
#ln –s ../src/www2 htdocs

         三、安装编译配置Subversion版本控制

1、安装编译支持:apr、apr-util
#cd /home/src
#wget http://www.sqlite.org/sqlite-amalgamation-3.6.13.tar.gz
#tar zxvf sqlite-amalgamation-3.6.13.tar.gz
#cd sqlite-3.6.13/
#./configure
#make && make install
#tar zvxf apr-1.3.3.tar.gz
#tar zvxf apr-util-1.3.4.tar.gz
#tar zvxf zlib-1.2.3.tar.gz
#cd apr-1.3.3
#./configure –prefix=/usr/local/apr
#make && make install
#cd ../apr-util-1.3.4
#./configure  –with-apr=/usr/local/apr
#make && make install
#cd ../zlib-1.2.3
#./configure  –prefix=/usr/local/zlib
#make && make install
2、重新编译apache及全新编译安装subversion
#cd /home/src/httpd-2.2.11
#./configure –prefix=/home/www –enable-so –enable-rewrite –enable-dav –with-apr=/usr/local/apr/bin/apr-1-config –with-apr-util=/usr/local/apr/bin/apu-1-config
#make && make install
#cd /home/src/subversion-1.6.9/
#./configure –prefix=/home/subversion –with-apxs=/home/www/bin/apxs –with-apr=/usr/local/apr/bin/apr-1-config –with-apr-util=/usr/local/apr/bin/apu-1-config –with-ssl –with-zlib –enable-maintainer-mode
#make && make install
3、配置Subversion
a、创建账号密码:
#htpasswd –c /home/svndata/www/conf/passwd yousri
注:需输两次密码确认;第一次设置用户密码要加入 –c 这个参数,以后就可以不用了
b、创建资料库:
#/home/subversion/bin/svnadmin create /home/svndata/www
c、确认apache配置文件httpd.conf ,默认应该增加了一下两个模块加载:
LoadModule dav_svn_module     modules/mod_dav_svn.so
LoadModule authz_svn_module   modules/mod_authz_svn.so
同时添加增加一下配置信息:
<Location /svn>
    DAV svn
    SVNPath /home/svndata/www
    AuthType Basic
    AuthName "Subversion repository"
    AuthUserFile /home/svndata/www/conf/passwd

60
;   Require valid-user
</Location>
最后设置/home/svndata目录权限设置为755并重启apache服务
d、导入数据至资料库
#/home/subversion/bin/svn import /home/www/htdocs file:///home/svndata/www –m “web code”
浏览访问测试:http://jmxc.vicp.net:20102/svn

Dokuwiki重写URL配置

默认情况下,DokuWiki不做任何的URL重写,它的原始URL是这样的:
1. http://wiki.qingxianyan.cn/doku.php?id=page
这样默认的URL不利于有些搜索引擎不收录,而且也不易于记忆
通过设置DokuWiki的配置设置里面的高级设置的userwrite配置选项它可以支持两种URL重写方法:
      一个是利用服务器的mod_rewrite,
      另一个是在DokuWiki内部自己处理URL重写。
下面是userewrite选项值的列表及其对应的URL格式:
      1、默认值没有URL重写 http://wiki.qingxianyan.cn/doku.php?id=wiki:syntax
      2、htaccess服务器处理 http://wiki.qingxianyan.cn/wiki:syntax
      3、DokuWiki处理 http://wiki.qingxianyan.cn/doku.php/wiki:syntax
使用服务器处理
  先在/wiki/conf/dokuwiki.php中设置:
           $conf['userewrite'] = 1;
Apache服务器开启Rewrite功能
  apache的URL重写是使用mod_rewrite模块。在apache的配置文件中添加如下这行:

LoadModule rewrite_module modules/mod_rewrite.so

  然后使用mod_rewrte的指令来配置URL重写规则。这些规则可以放在apache的全局配置文件内,也可以放在DokuWiki的根目录下的.htaccess文件内,事实上DokuWiki已经为了写好了这些规则放在.htaccess.dist中,修改删除部分“#”注释即可 内容如下:

      RewriteEngine on
      RewriteBase /dokuwiki
      RewriteRule ^_media/(.*)              lib/exe/fetch.php?media=$1  [QSA,L]
      RewriteRule ^_detail/(.*)             lib/exe/detail.php?media=$1  [QSA,L]
      RewriteRule ^_export/([^/]+)/(.*)     doku.php?do=export_$1&id=$2  [QSA,L]
      RewriteRule ^$                        doku.php  [L]
      RewriteCond %{REQUEST_FILENAME}       !-f
      RewriteCond %{REQUEST_FILENAME}       !-d
      RewriteRule (.*)                      doku.php?id=$1  [QSA,L]

  在RewriteBase /dokuwiki这一行,你需要根据实际情况做修改成指向你的DokuWiki目录的路径,Dokuwik就在站点根目录或者已经使用子域名解析到相应目录时,需将.htaccess 文件中的 RewriteBase /dokuwiki 行使用首字符“#”将其注释

加强Apache配置的安全方法

一、确保你安装的是最新的补丁
         如果门是敞开的话,在窗户上加锁就毫无意义。同样道理,如果你没有打补丁,继续下面的操作就没有什么必要。
二、隐藏Apache的版本号及其它敏感信息
         默认情况下,很多Apache安装时会显示版本号及操作系统版本,甚至会显示服务器上安装的是什么样的Apache模块。这些信息可以为黑客所用,并且黑客还可以从中得知你所配置的服务器上的很多设置都是默认状态。
         这里有两条语句,你需要添加到你的httpd.conf文件中:

    ServerSignature Off
    ServerTokens Prod

         ServerSignature出现在Apache所产生的像404页面、目录列表等页面的底部。ServerTokens目录被用来判断 Apache会在Server HTTP响应包的头部填充什么信息。如果把ServerTokens设为Prod,那么HTTP响应包头就会被设置成:

Server:Apache

         如果你非常想尝试其它事物,你可以通过编辑源代码改成不是Apache的其它东西,或者你可以通过下面将要介绍的mod_security实现。
三、确保Apache以其自身的用户账号和组运行
         有的Apache安装过程使得服务器以nobody的用户运行,所以,假定Apache和你的邮件服务器都是以nobody的账号运行的,那么通过Apache发起的攻击就可能同时攻击到邮件服务器,反之亦然。

    User apache
    Group apache

四、确保web根目录之外的文件没有提供服务
         我们不让Apache访问web根目录之外的任何文件。假设你的所以web站点文件都放在一个目录下(例如/web),你可以如下设置:

    Order Deny,Allow
    Deny from all
    Options None
    AllowOverride None
    Order Allow,Deny
    Allow from all

         注意,因为我们设置Opitins None 和AllowOverride None,这将关闭服务器的所有Option和Override。你现在必须明确把每个目录设置成Option或者Override。
五、关闭目录浏览
      你可以在Directory标签内用Option命令来实现这个功能。设置Option为None或者-Indexes。
         Options -Indexes
六、关闭includes
      这也可以通过在Directory标签内使用Option命令来实现。设置Option为None或者-Includes。
         Options -Includes
七、关闭CGI执行程序
         如果你不用CGI,那么请把它关闭。在目录标签中把选项设置成None或-ExecCGI就可以:
         Options -ExecCGI
八、禁止Apache遵循符号链接
         同上,把选项设置成None或-FollowSymLinks:
         Options -FollowSymLinks
九、关闭多重选项
         如果想关闭所有选项,很简单:
         Options None
         如果只想关系一些独立的选项,则通过将Options做如下设置可实现:
         Options -ExecCGI -FollowSymLinks -Indexes
十、关闭对.htaccess文件的支持
         在一个目录标签中实现:
         AllowOverride None
         如果需要重载,则保证这些文件不能够被下载,或者把文件名改成非.htaccess文件。比如,我们可以改成.httpdoverride文件,然后像下面这样阻止所有以.ht打头的文件:

    AccessFileName .httpdoverride
    Order allow,deny
    Deny from all
    Satisfy All

十一、运行mod_security
         Run mod_security是O’Reilly出版社出版的Apache Security一书的作者,Ivan Ristic所写的一个非常好用的一个Apache模块。可以用它实现以下功能:
         ·简单过滤
         ·基于过滤的常规表达式
         ·URL编码验证
         ·Unicode编码验证
         ·审计
         ·空字节攻击防止
         ·上载存储限制
         ·服务器身份隐藏
         ·内置的Chroot支持
         ·更多其它功能

十二、关闭任何不必要的模块
         Apache通常会安装几个模块,浏览Apache的module documentation,了解已安装的各个模块是做什么用的。很多情况下,你会发现并不需要激活那些模块。
         找到httpd.conf中包含LoadModule的代码。要关闭这些模块,只需要在代码行前添加一个#号。要找到正在运行的模块,可以用以下语句:

grep LoadModule httpd.conf

         以下模块通常被激活而并无大用:mod_imap,mod_include,mod_info,mod_userdir,mod_status,mod_cgi,mod_autoindex。

         网络上学习了解收集到的~当作收藏,这东西实用性因人而异,嗯。