linux apache web站点配置详解

linux apache web站点配置详解

注意:请先在"安全性及防火墙设置"打开对www服务的访问

httpd的配置文件为/etc/httpd/conf/httpd.conf
试修改以下指令:

1. Web站点的主目录

DocumentRoot:设置Web站点的主目录,如:
DocumentRoot "/wu" //该目录必须已经存在

注:如果更改主目录后,在浏览器中访问是出现如下错误提示:

Forbidden You don't have permission to access / on this server.

Additionally, a 403 Forbidden error was encountered while trying to use an ErrorDocument to handle the request.

那么很可能的原因是与SELinux有关,最简单的办法就是把SELinux关掉或删掉,实在不行去xwindow里找出SELinux程序,把安全级别调低一点就好。 不过最好的办法还是改变一下文件夹的安全属性:

#chcon -R -t httpd_user_content_t $DocumentRoot/

 

2. 站点主页设置


Directorylndex:设置站点主页,如:
Directorylndex index.htm index.html lindex.php

3. 设置中文显示


AddDefaultCharset:添加默认字符集,此项设置将覆盖网页本身的字符集设置,故建议将它注释掉。
LanguagePriority:语言优先级
建议做如下修改:
#AddDefaultCharset UTF-8
LanguagePriority zh-CN zh-TW en da nl et fr de el it ja ko no pl pt pt-br ltz ca es sv

4. 是否允许目录列表

<Directory "......"> 
Options Indexes FollowSymLinks //删除Indexes即表示不允许目录列表
AllowOverride None 
Order allow,deny 
Allow from all 
</Directory>

5. 设置用户个人站点目录

在httpd.conf文件中,关于用户个人站点目录的设置修改如下

#UserDir disable 
UserDir public_html

在httpd.conf文件中,有关于用户个人站点目录的指令块,取消其前面的注释:

<Directory "/home/*/public_html/">
... 
</Directory>

新建一个用户(假如叫tommy),如果该用户想拥有自己的个人站点,则该用户登录后,做以下操作:
$cd ~
  //转到用户个人主目录
$mkdir public_html   //建立个人站点目录 
$chcon -R -t httpd_user_content_t public_html/ //更改目录的SElinux权限,或者在"安全性和防火墙"设置中禁止SElinux
$chmod 755 public_html   //更改目录权限
$echo "这是tommy的个人站点,欢迎光临" > index.htm  //建立个人主页文件

测试,在浏览器中输入:

http://.../~tommy

如果想在访问tommy的主面时时,去掉~号(即http://.../tommy的形式),则需在httpd.conf中加入以下内容:

Alias /tommy/ "/home/tommy/public_html/"

6. 设定web目录的访问权限

假如tommy的个人站点下,有一目录super,不想让IP为192.168.6.23、域名为sam.net03.org的用户访问,则可以在httpd.conf文件中加入以下内容:

<Directory "/home/tommy/public_html/super"> 
order allow,deny 
deny from 192.168.6.23
deny from sam.net03.org 
allow from all
</Directory>

7. Alias  指令 说明 映射URL到文件系统的特定区域 语法  Alias URL-path file-path|directory-path

Alias指令使文档可以被存储在DocumentRoot以外的本地文件系统中。以(%已解码的)url-path路径开头的URL可以被映射到以directory-path开头的本地文件。

示例:
Alias /image /ftp/pub/image 
效果就是对"http://..../image/foo.gif"的请求,服务器将返回"/ftp/pub/image/foo.gif"文件。
虚拟主机类型     返回

基于名称的虚拟主机 在一个IP的基础上构建多个Web站点, Web站点域名解析后对应同一个IP地址

基于IP的虚拟主机 系统有多个IP(可能绑定在一个网卡上,也可能绑定在多块网卡上), Web站点域名解析后对应不同的IP地址

基于名称的虚拟主机     返回

以下设置为基于名称的虚拟主机,即设置两个web站点www1.net03.org、www2.net03.org,这两个名称对应一个IP地址192.168.0.1

1.在DNS服务器上添加相应记录

设置好DNS服务器 在服务器的DNS中设置两条DNS主机记录:www1.net03.org和www2.net03.org,注意它们都对应同一个IP地址(192.168.0.1)。

即在net03.org的DNS服务器ns.net03.org的正向解析区文件中添加以下记录:

tiger IN A 192.168.0.1
www1 IN CNAME tiger
www2 IN CNAME tiger

2.为虚拟主机建立站点主目录,及主页文件

在/var/www/virhost为虚拟主机建立目录host1和host2如下:

#mkdir -p /wu1

#mkdir -p /wu2

设置虚拟主机目录权限为755,如下:

#chmod 755 /wu1

#chmod 755 /wu2

3.配置httpd.conf

在httpd.conf中加入以下内容:
_____________________________________________________________________________

NameVirtualHost 192.168.0.1

<VirtualHost 192.168.0.1:80>

ServerName www1.net03.org

DocumentRoot /wu1

</VirtualHost>

<VirtualHost 192.168.0.1:80>

ServerName www2.net03.org

DocumentRoot /wu2

</VirtualHost>

以及设定目录权限:

<Directory /wu1>
Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>

<Directory /wu2>
......
</Directory>

基于IP的虚拟主机     返回

1.在DNS服务器上添加相应记录

设置好DNS服务器 在服务器的DNS中添加两条DNS主机记录:news.net03.org,sports.net03.org,注意它们都对应不同的IP地址(192.168.0.2、192.168.0.3)。

即在net03.org的DNS服务器ns.net03.org的正向解析区文件中添加以下记录:

news IN A 192.168.0.2
sports IN A 192.168.0.3


2.为虚拟主机建立站点主目录,及主页文件

3.配置httpd.conf

在httpd.conf文件中添加如下内容: 
____________________________________________________________________________

<VirtualHost news.net03.org>

DocumentRoot /wu3

ServerName news.net03.org

</VirtualHost>

<VirtualHost sports.net03.org>

DocumentRoot /wu4

ServerName sports.net03.org

</VirtualHost>

以及

<Directory /wu3>
Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>

<Directory /wu4>
...
</Directory>

基于端口的虚拟主机     返回

1. 注意:考虑到Fedora中SElinux的设置,需首先在“安全级别及防火墙”中,禁用SElinux,或只禁用SElinux对httpd守护进程的保护;同时在防火墙中开启相关的端口,比如我们要用的5555、6666

2. 在httpd.conf文件中添加如下内容: 
____________________________________________________________________________

Listen *:5555

Listen *:6666

<VirtualHost 192.168.0.1:5555>

DocumentRoot /wu5

</VirtualHost>

<VirtualHost 192.168.0.1:6666>

DocumentRoot /wu6

</VirtualHost>

 以及

<Directory /wu5>
Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>

<Directory /wu6>
...
</Directory>

web用户认证     返回

用户身份认证可以使某个目录成为保护目录 , 如客户端访问 http://192.168.0.1/protect/ 目录时需要验证用户的身份才能访问

1. 建立保护目录并在该目录中建立web文件 

最简单的情况,保护目录就建立在Web主目录(即DocumentRoot所指的目录)下:
#mkdir -p 
/var/www/html/protect 
#chmod 755 
/var/www /html/protect 
#cd 
/var/www/html/protect 
#echo "This is a protect page" > index.html

如果要保护的Web目录不在Web主目录下,则目录建立好之后,需要在httpd.conf文件中进行别名设置:
(1) #mkdir -p 
/var/akuna

(2) 打开httpd.conf文件,加入以下指令
Alias 
/protect/ "/var/akuna/"

2. 制作密码文件 
先建立文件夹 /var/www/htpass , 在该文件夹中用 “ #htpasswd [-c] 密码文件名 用户名 ” 的格式制作密码文件如: 
#htpasswd -c apass test2 
#htpasswd apass 
test3 
那么密码文件/var/www/htpass/apass中有两个账号test2 与 test3了

3. 在配置文件中设置认证选项 打开配置文件 httpd.conf 在其最后加入以下 :

________________________________________________________________________________________________
<Directory "/var/www/html/protect "> 
AuthName "Protected Directory" // 认证领域名称,就是显示在登录窗口上面的提示字符 
AuthType Basic // 设置认证的类型,选择 Basic ,即使用基本认证 
AuthUserFile /var/www/htpass/apass // 密码文件所在目录及文件名 
require valid-user //允许的访问者, valid-user 表示任何一个在认证文件当中的用户都是合法用户
#require user test2 //若将 # 移除,则表示只有 test2 才是可以登入的账号
</Directory>

4. 重新启动 Apache 
#service httpd restart

5. 测试 
在客户端浏览器地址栏中输入 http://192.168.0.1/protect/ ,如果弹出用户认证窗口,输入合法用户名及密码,可以浏览相关网页,否则不能浏览,表示配置成功.

SSL与数字证书     返回启用SSL

1. 安装软件包
  mod_ssl
2. 重启Apache服务
   service httpd restart
3. 使用https来访问原有站点
   https://www.net03.org

使用数字证书

1. 建立加密的私有密钥和公开密钥
   #mkdir /etc/httpd/conf/ssl.key
   #/usr/bin/openssl genrsa 1024 > /etc/httpd/conf/ssl.key/server.key
   #chmod 600 /etc/httpd/conf/ssl.key/server.key
2. 利用公开密钥建立证书请求
   #mkdir /etc/httpd/conf/ssl.csr
   #/usr/bin/openssl req -new -key /etc/httpd/conf/ssl.key/server.key -out /etc/httpd/conf/ssl.csr/server.csr
   ...... 
3. 将建立的证书请求传送到CA 
   如果CA的证书是通过在线申请的,在浏览器地址中输入:
   http://服务器名称或IP地址/certsrv
4. 如果通过CA的审核,则CA会寄发数字证书
5. 安装数字证书

webmin     返回

webmin官方站点:www.webmin.com

安装webmin的RPM包,webmin-1.330-1.noarch(2).rpm

在浏览器地址栏中输入
http://服务器名称或IP:10000
来使用webmin

任务,使用webmin来配置多种虚拟主机:

1. 在"网络-->网络配置"中添加新的网络接口,在同一张网卡上绑定多个IP

2. 在"服务器-->BIND DNS服务器"中配置在虚拟主机中要用的基于同一个IP的主机名,及基于不同IP的主机名

3. 在"服务器-->Apache服务器"中添加基于名称的虚拟主机,添加基于IP的虚拟主机,添加基于端口的虚拟主机

Web维护与日志分析     返回1. apachectl

apachectl 是Apache HTTP服务器的前端程序。其设计意图是帮助管理员控制Apache httpd 后台守护进程的功能。

apachectl 脚本有两种操作模式。首先,作为简单的 httpd 的前端程序,设置所有必要的环境变量,然后启动 httpd ,并传递所有的命令行参数。其次,作为SysV初始化脚本,接受简单的一个单词的参数,如: start , restart , stop ,并把他们翻译为适当的信号发送给 httpd 。

如果你的Apache安装在非标准的路径中,你将需要修改 apachectl 脚本使其中的路径正确地指向 httpd 程序。此外,还可以指定任何必要的 httpd 命令行参数。细节可以参见脚本中的注解。

apachectl 脚本如果执行成功,则返回0 ;如果出错,则其返回值>0 。更多细节可以参见脚本中的注解。

在扮演传递角色时, apachectl 可以接受对 httpd 程序有效的所有参数。

apachectl [ httpd-argument ]

语法: apachectl command

#apachectl configtest //执行一次配置文件语法检查。它解析配置文件,并报告 Syntax Ok 或者是特定的语法错误详细信息。它等价于 apachectl -t 。

#apachectl start //启动Apache httpd 后台守护进程。如果已经启动,则产生一个错误。它等价于 apachectl -k start 。

#apachectl stop //停止Apache httpd 后台守护进程。它等价于 apachectl -k stop 。

#apachectl restart //重新启动Apache httpd 后台守护进程。如果守护进程尚未运行,则启动它。在重新启动守护进程之前,此命令会使用 configtest 自动检查配置文件,以确保Apache不会死掉。它等价于 apachectl -k restart 。

#apachectl fullstatus //显示由 mod_status 提供的完整的状态报告。要使用这个功能,需要启用服务器上的 mod_status 模块,并且系统中有一个基于文本的浏览器,如 lynx 。修改脚本中的 STATUSURL 变量,可以修改访问状态报告的URL 。

#apachectl status 显示一个简要的状态报告。它类似于 fullstatus 选项,但是省略了正在处理的请求的列表。

#apachectl graceful 优雅地重新启动Apache httpd 后 台守护进程。如果守护进程尚未启动,则启动它。它和标准重新启动的不同之处在于:不会中断当前已经打开的连接,也不会立即关闭日志。这意味着,如果在日志 滚动脚本使用它,则在处理日志之前必须加入一个实实在在的延迟,以确保老的日志文件在被处理前已经关闭。在重新启动守护进程之前,此命令会使用 configtest 自动检查配置文件,以确保Apache不会死掉。它等价于 apachectl -k graceful 。

#apachectl graceful-stop 优雅地停止Apache httpd 后台守护进程。它和标准停止的不同之处在于:不会中断当前已经打开的连接,也不会立即关闭日志。它等价于 apachectl -k graceful-stop 。

2. Webalizer

用webalizer分析web日志

介绍: webalizer是一个高效的、免费的web服务器日志分析程序。其分析结果以HTML文件格式保存,从而可以很方便的通过web服务器进行浏览。Internet上的很多站点都使用webalizer进行web服务器日志分析。Webalizer具有以下一些特性: 
1. 因为是用C写的程序,所以具有很高的运行效率。在主频为200Mhz的机器上,webalizer每秒钟可以分析10000条记录,所以分析一个40M大小的日志文件只需要15秒。 
2. webalizer支持标准的一般日志文件格式(Common Logfile Format);除此之外,也支持几种组合日志格式(Combined Logfile Format)的变种,从而可以统计客户情况以及客户操作系统类型。并且现在webalizer已经可以支持wu-ftpd xferlog日志格式以及squid日志文件格式了。 
3. 支持命令行配置以及配置文件。 
4. 可以支持多种语言,也可以自己进行本地化工作。 
5. 支持多种平台,比如UNIX、linux、NT, OS/2 和 MacOS等。

安装: 
1.从webalizer的官方站点http://www.mrunix.net/webalizer/ 下载webalizer。 
2.首先解开源代码包: tar xvzf webalizer-2.01-06-src.tgz 
3.在生成的目录中有个lang目录,该目录中保存了各种语言文件,但是只有繁体中文版本,可以自己转换成简体,或者自己重新翻译一下。 
4.然后进入生成的目录,编译、连接、安装: 
    #./configure 
    #make 
    #make install 
5.编译成功后,会产生一个webalizer可执行文件

配置:

上面说过,可以通过命令行配置webalizer,也可以通过配置文件(/etc/webalizer.conf)进行配置,在本文中我们将介绍使用命令行参数进行配置,需要了解配置文件使用方法的朋友可以参考README文件,里面有很详细的介绍。   可以执行webalizer –h得到所有命令行参数: 
Usage: webalizer [options] [log file] 
-h = 打印帮助信息 
-v -V = 打印版本信息 
-d = 打印附加调试信息 
-F type = 日志格式类型. type= (clf | ftp | squid) 
-i = 忽略历史文件 
-p = 保留状态 (递增模式) 
-q = 忽略消息信息 
-Q = 忽略所有信息 
-Y = 忽略国家图形 
-G = 忽略小时统计图形 
-H = 忽略小时统计信息 
-L = 忽略彩色图例 
-l num = 在图形中使用数字背景线 
-m num = 访问超时 (seconds) 
-T = 打印时间信息 
-c file = 指定配置文件 
-n name = 使用的主机名 
-o dir = 结果输出目录 
-t name = 指定报告题目上的主机名 
-a name = 隐藏用户代理名称 
-r name = 隐藏访问链接 
-s name = 隐藏客户 
-u name = 隐藏URL 
-x name = 使用文件扩展名 
-P name = 页面类型扩展名 
-I name = index别名 
-A num = 显示前几名客户类型 
-C num = 显示前几名国家 
-R num = 显示前几名链接 
-S num = 显示前几名客户 
-U num = 显示前几名URLs 
-e num = 显示前几名访问页面 
-E num = 显示前几名不存在的页面 
-X = 隐藏个别用户 
-D name = 使用dns缓存文件 
-N num = DNS 进程数 (0=禁用dns)

  例:假设,web服务器主机名为ns.net03.org,访问日志为/var/log/httpd/access_log, 我们将webalizer分析结果输出到/var/www/html/log下面。则我们可以执行以下命令,或建立启动脚本/etc/rc.d/webalizer使之自动运行:
________________________________________________________________________________________________

#webalizer -F clf -p -t 'ns.net03.org' -o /var/www/html/log /var/log/httpd/access_log

___________________________________________________________________________________________

#vi /etc/rc.d/webalizer
#!/bin/sh 
run=/usr/sbin/webalizer 
$run -F clf -p -t 'ns.net03.org' -o /var/www/html/log /var/log/httpd/access_log

______________________________________________________________________________________________

说明: 
-F clf: 指明我们的web日志格式为标准的一般日志文件格式(Common Logfile Format) 
-p 指定使用递增模式,这就是说每作一次分析后,webalizer会生产一个历史文件,这样下一次分析时就可以不分析已经处理过的部分。这样我们就可以在短时间内转换我们的日志文件,而不用担心访问量太大时日志文件无限增大了。 
-n " ": 指定服务器主机名为空,这样输出结果会美观一些。 
-t "www.test.com" 指定输出结果标题。 
-o 指定报告的输出位置
/var/log/httpd/access_log:指定日志文件

如果要使同样的日志分析任务周期性执行,则需在/etc/crontab中加入下面一行:

#vi /etc/crontab
...
01 1 * * * root /etc/rc.d/webalizer 
...

表示,每天凌晨1点01分执行该脚本。 然后运行/etc/rc.d/init.d/crond reload重载入crond服务。

3.使用logrotate管理日志

对于Linux 的系统安全来说,日志文件是极其重要的工具。
系统管理员可以使用logrotate 程序用来管理系统中的最新的事件。logrotate 还可以用来备份日志文件,本篇将通过以下几部分来介绍

日志文件的管理:
1、logrotate 配置
2、缺省配置 logrotate
3、使用include 选项读取其他配置文件
4、使用include 选项覆盖缺省配置
5、为指定的文件配置转储参数

一、logrotate 配置

logrotate 程序是一个日志文件管理工具。用来把旧的日志文件删除,并创建新的日志文件,我们把它叫做“转储”。我们可以根据日志文件的大小,也可以根据其天数来转储,这个过程一般通过 cron 程序来执行。
logrotate 程序还可以用于压缩日志文件,以及发送日志到指定的E-mail 。

logrotate 的配置文件是 /etc/logrotate.conf。主要参数如下表:

参数 功能
compress 通过gzip 压缩转储以后的日志
nocompress 不需要压缩时,用这个参数
copytruncate 用于还在打开中的日志文件,把当前日志备份并截断
nocopytruncate 备份日志文件但是不截断
create mode owner group 转储文件,使用指定的文件模式创建新的日志文件
nocreate 不建立新的日志文件
delaycompress 和 compress 一起使用时,转储的日志文件到下一次转储时才压缩
nodelaycompress 覆盖 delaycompress 选项,转储同时压缩。
errors address 专储时的错误信息发送到指定的Email 地址
ifempty 即使是空文件也转储,这个是 logrotate 的缺省选项。
notifempty 如果是空文件的话,不转储
mail address 把转储的日志文件发送到指定的E-mail 地址
nomail 转储时不发送日志文件
olddir directory 转储后的日志文件放入指定的目录,必须和当前日志文件在同一个文件系统
noolddir 转储后的日志文件和当前日志文件放在同一个目录下
prerotate/endscript 在转储以前需要执行的命令可以放入这个对,这两个关键字必须单独成行
postrotate/endscript 在转储以后需要执行的命令可以放入这个对,这两个关键字必须单独成行
daily 指定转储周期为每天
weekly 指定转储周期为每周
monthly 指定转储周期为每月
rotate count 指定日志文件删除之前转储的次数,0 指没有备份,5 指保留5 个备份
tabootext [+] list 让logrotate 不转储指定扩展名的文件,缺省的扩展名是:.rpm-orig, .rpmsave, v, 和 ~
size size 当日志文件到达指定的大小时才转储,Size 可以指定 bytes (缺省)以及KB (sizek)或者MB (sizem).


二、缺省配置 logrotate

logrotate 缺省的配置文件是/etc/logrotate.conf。
Red Hat Linux 缺省安装的文件内容是:

# see "man logrotate" for details
# rotate log files weekly
weekly

# keep 4 weeks worth of backlogs
rotate 4

# send errors to root
errors root
# create new (empty) log files after rotating old ones
create

# uncomment this if you want your log files compressed
#compress
1
# RPM packages drop log rotation information into this directory
include /etc/logrotate.d

# no packages own lastlog or wtmp --we'll rotate them here
/var/log/wtmp {
monthly
create 0664 root utmp
rotate 1
}

/var/log/lastlog {
monthly
rotate 1
}

# system-specific logs may be configured here


缺省的配置一般放在logrotate.conf 文件的最开始处,影响整个系统。在本例中就是前面12行。

第三行weekly 指定所有的日志文件每周转储一次。
第五行 rotate 4 指定转储文件的保留 4份。
第七行 errors root 指定错误信息发送给root。
第九行create 指定 logrotate 自动建立新的日志文件,新的日志文件具有和
原来的文件一样的权限。
第11行 #compress 指定不压缩转储文件,如果需要压缩,去掉注释就可以了。

三、使用include 选项读取其他配置文件
include 选项允许系统管理员把分散到几个文件的转储信息,集中到一个
主要的配置文件。当 logrotate 从logrotate.conf 读到include 选项时,会从指定文件读入配置信息,就好像他们已经在/etc/logrotate.conf 中一样。

第13行 include /etc/logrotate.d 告诉 logrotate 读入存放在/etc/logrotate.d 目录中的日志转储参数,当系统中安装了RPM 软件包时,使用include 选项十分有用。RPM 软件包的日志转储参数一般存放在/etc/logrotate.d 目录。

include 选项十分重要,一些应用把日志转储参数存放在 /etc/logrotate.d 。

典型的应用有:apache, linuxconf, samba, cron 以及syslog。

这样,系统管理员只要管理一个 /etc/logrotate.conf 文件就可以了。

四、使用include 选项覆盖缺省配置

当 /etc/logrotate.conf 读入文件时,include 指定的文件中的转储参数将覆盖缺省的参数,如下例:

# linuxconf 的参数
/var/log/htmlaccess.log
{ errors jim
notifempty
nocompress
weekly
prerotate
/usr/bin/chattr -a /var/log/htmlaccess.log
endscript
postrotate
/usr/bin/chattr +a /var/log/htmlaccess.log
endscript
}
/var/log/netconf.log
{ nocompress
monthly
}

在这个例子中,当 /etc/logrotate.d/linuxconf 文件被读入时,下面的参数将覆盖/etc/logrotate.conf中缺省的参数。

Notifempty
errors jim

五、为指定的文件配置转储参数
经常需要为指定文件配置参数,一个常见的例子就是每月转储/var/log/wtmp。为特定文件而使用的参数格式是:

# 注释
/full/path/to/file
{
option(s)
}

下面的例子就是每月转储 /var/log/wtmp 一次:
#Use logrotate to rotate wtmp
/var/log/wtmp
{
monthly
rotate 1
}


六、其他需要注意的问题

1、尽管花括号的开头可以和其他文本放在同一行上,但是结尾的花括号必须单独成行。

2、使用 prerotate 和 postrotate 选项
下面的例子是典型的脚本 /etc/logrotate.d/syslog,这个脚本只是对
/var/log/messages 有效。

/var/log/messages
{
prerotate
/usr/bin/chattr -a /var/log/messages
endscript
postrotate
/usr/bin/kill -HUP syslogd
/usr/bin/chattr +a /var/log/messages
endscript
}

第一行指定脚本对 /var/log messages 有效
prerotate 命令指定转储以前的动作/usr/bin/chattr -a 去掉/var/log/messages文件的“只追加”属性 endscript 结束 prerotate 部分的脚本postrotate 指定转储后的动作

/usr/bin/killall -HUP syslogd

用来重新初始化系统日志守护程序 syslogd

/usr/bin/chattr +a /var/log/messages

重新为 /var/log/messages 文件指定“只追加”属性,这样防治程序员或用户覆盖此文件。

最后的 endscript 用于结束 postrotate 部分的脚本

3、logrotate 的运行分为三步:

判断系统的日志文件,建立转储计划以及参数,通过cron daemon 运行下面的代码是 Red Hat Linux 缺省的crontab 来每天运行logrotate。

#/etc/cron.daily/logrotate
#! /bin/sh

/usr/sbin/logrotate /etc/logrotate.conf

4、/var/log/messages 不能产生的原因:
这种情况很少见,但是如果你把/etc/services 中的 514/UDP 端口关掉的话,这个文件就不能产生了。

 


LAMP配置与应用     返回LAMP(Linux+Apache+Mysql+Php)配置:

1. Fedora 5已默认安装了php,可以使用rmp -q php查看其版本号

2. 安装mysql客户端mysql(与perl-DBI包有依赖关系,要先安装)

3. 安装mysql服务端mysql-server(与perl-DBD包有依赖关系,要先安装)

4. 安装php支持mysql的模块php-mysql(与php-pdo包有依赖关系,要先安装)

Mysql的web管理工具phpMyAdmin

    1.安装

  • 下载并解压phpMyAdmin的包到某个web目录(或为phpMyadmin建立虚拟主机,将该包解压到虚拟主机目录)
            #tar -xzvf  phpMyAdmin-2.10.0.2-all-languages.tar.gz
  • 执行下列命令:
            #cd phpMyAdmin
            #mkdir config 
                          #建立一个用来保存配置的目录
           #chmod o+rw config                 #更改该目录的权限为属主可读写
            #cp config.sample.inc.php config/ #将当前目录下的config.sample.inc.php复制到config
            #chmod o+w config/config.inc.php    # 使该文件的属主具有写权限
  • 运行安装向导页面
    在浏览器中打开scripts/setup.php,按照向导页面添入相关信息,最后单击“保存”,则所做的配置保存在config/config.inc.php中。(注:如果config子目录没有建立,或没有对该文件的写权限的话,则会出现"Cannot load or save configuration."的提示,这种情况下应选择“DownLoad”下载到本地,再上传到phpMyAdmin的主目录下 ),主要有以下样目需要添写:
    User for config auth__________________ 
    Password for config auth__________________ 
    phpMyAdmin control user____________________ 
    phpMyAdmin control user password______________________ 
    phpMyAdmin database for advanced features__________________
  • 配置成功保存的话,执行下面命令
            #mv config/config.inc.php . #将配置文件移动到phpMyAdmin的主目录
            #chmod o-r config.inc.php #为安全起见,移去该文件的读写权限
  • 在浏览器中打开phpMyAdmin对应的站点
phpbb应用

    注:以下头3步有关mysql的操作也可以在webmin中完成.

    1. mysql的账号管理

          1) 要设置root用户的密码为123456,则在系统提示符下执行下面的命令:
         
#mysqladmin -u root -p password "123456"

2) 要在mysql命令行客户端,设置root用户的密码为123456,则需执行以下命令:
mysql> use mysql;       
mysql> update user set Password=password('123456') where User='root'; 
mysql> flush privileges;

          3) 如果要新增用户u1,给他授予对数据库bb中所有表(*)的所有权限(all),密码设为888888,则在mysql提示符下:
          mysql> grant all on bb.* to 'u1'@'localhost' identified by '888888';

    2. 如果root用户有密码,则进入mysql客户端需用下面的命令:#mysql -u root -p

    3. 新建phpbb论坛所要用到的数据库:mysql>create database XXX;

    4. 为phpbb所在目录新建虚拟主机

    5. 在浏览器中访问该虚拟主机,以安装phpbb

    6. 注意:在安装结尾,选择下载配置文件,自行上传.然后删除install,contrib两个目录

定制phpbb 实训作业     返回

1.使用Apache配置基本的web站点,使客户端浏览简体中文网页能正常显示、新增支持的主页文件index.htm index.php default.htm default.html。最后要能在其它计算机上通过域名访问,比如www.yyy.net03.org。

2.在web站点下实现虚拟目录,即web站点的子目录,该子目录与主目录不一定是上下目录关系.同时,允许该目录有目录列表功能(即在没有找到主文件件的时候,显示当前目录下的列表).

3.实现Linux用户个人站点.

4.配置多个基于名称的虚拟主机,比如www1.yyy.net03.org,www2.yyy.net03.org。最后要能在其它计算机上通过域名访问。

5.配置多个基于IP的虚拟主机,比如lit.yyy.net03.org,mil.yyy.net03.org。最后要能在其它计算机上通过域名访问。

6.配置LAMP环境

7.配置phpbb论坛,并使该论坛可以通过形如bbs.yyy.net03.org的形式访问。

(*)8. 删除系统原有Apache、php、Mysql项目,使用源文件安装最新版本的Apache、php、Mysql

利用源代码安装L AMP         返回

首先要在相关网站获取Apache、Mysql、Php的源码包,一般扩展名为xxx.tar.gz.

删除系统原有Apache、php、Mysql项目,可能要用到下面的命令

# rpm -e xxx

# rpm -e xxx nodeps #不考虑依赖关系而删除xxx包

# rpm -e xxx yyy zzz #删除xxx,yyy,zzz

如果无法删除一个RPM包,可以使用以下两步:

#rpm -f /var/lib/rpm

#rpm --rebuilddb

或:

#rpm -ivh --justdb xxx

#rpm -e xxx

1. 安装Apache(httpd-2.2.8)


# ./configure --enable-so
# make
# make install
# /usr/local/apache2/bin/apachectl start


2. 安装Mysql(Mysql-5.0.22)

1) 建立用户及组,如果在/etc/passwd中已有该用户,则下列操作可以省略

shell> groupadd mysql
shell> useradd -g mysql mysql

2) 解压、配置编译安装

shell> gunzip < mysql-VERSION.tar.gz | tar -xvf -
shell> cd mysql-VERSION
shell> ./configure --prefix=/usr/local/mysql        #配置(指定mysql安装路径)
shell> make                                            #编译
shell> make install                                    #安装

3) 配置mysql

shell> cp support-files/my-medium.cnf /etc/my.cnf        #建立mysql配置文件
shell> cp support-files/mysql.server /etc/init.d/        #建立mysql控制脚本
shell> cd /usr/local/mysql
shell> bin/mysql_install_db --user=mysql                #建立mysql系统数据库
shell> chown -R root .                                    #更改当前目录及子目录所有者
shell> chown -R mysql var                                #更改var目录及子目录所有者
shell> chgrp -R mysql .                                #更改当前目录及子目录所属组

4) 启动mysql

shell> bin/mysqld_safe --user=mysql &                #以后台模式运行mysqld服务
shell> chkconfig --list | less                       #查看服务列表
shell> chkconfig --add mysql.server                    #将mysql.server添加到服务列表
shell> chkconfig --list | less                        #查看服务列表
shell> service mysql.server restart                        
shell> /usr/local/mysql/bin/mysqladmin -u root -p password '888888'    #更改mysql管理用户root的密码     

3. 安装php(php5 on Apache 2 Shared Module Version)

1) tar -zxvf php-NN.tar

2) cd php-NN

3) ./configure --with-apxs2=/usr/local/apache2/bin/apxs --with-mysql=/usr/local/mysql

4) make

5) make install

6) 建立php配置文件php.ini

# cp php.ini-dist /usr/local/lib/php.ini

7) 编辑http配置文件 httpd.conf 使之加载PHP模块

对于 PHP 4,添加下句:

    LoadModule php4_module modules/libphp4.so

对于 PHP 5,添加下句:

    LoadModule php5_module modules/libphp5.so

8) 编辑http配置文件 httpd.conf,使之能解析扩展名为php的文件

    AddType application/x-httpd-php .php .phtml

9) 编辑http配置文件 httpd.conf,修改主页文件

    DirectoryIndex index.php index.htm index.html

10) 重启httpd服务

# /usr/local/apache2/bin/apachectl start

# /usr/local/apache/bin/apachectl -k start

11) 编辑index.php文件,并在浏览器中访问该站点,如果出现关于php的当前配置信息(其中有mysql的配置项),表示LAMP安装成功。

$vi index.php
<?php
phpinfo()
?>

你可能感兴趣的:(linux apache web站点配置详解)