老铁们,大家好,相信还有很多朋友对于搭建apache服务器和如何在Linux下搭建apache服务器的相关问题不太懂,没关系,今天就由我来为大家分享分享搭建apache服务器以及如何在Linux下搭建apache服务器的问题,文章篇幅可能偏长,希望可以帮助到大家,下面一起来看看吧!
一、如何配置Apache服务器
1、如何设置请求等待时间
在d.conf里面设置:
TimeOut n
其中n为整数,单位是秒。
设置这个TimeOut适用于三种情况:
2、如何接收一个get请求的总时间
接收一个post和put请求的TCP包之间的时间
TCP包传输中的响应(ack)时间间隔
3、如何使得apache监听在特定的端口
修改d.conf里面关于Listen的选项,例如:
Listen 8000
是使apache监听在8000端口
而如果要同时指定监听端口和监听,可以使用:
Listen 192.170.2.1:80
Listen 192.170.2.5:8000
这样就使得apache同时监听在192.170.2.1的80端口和192.170.2.5的8000端口。
当然也可以在d.conf里面设置:
Port 80
这样来实现类似的效果。
4、如何设置apache的最大空闲进程数
修改d.conf,在里面设置:
MaxSpareServers n
其中n是一个整数。这样当空闲进程超过n的时候,apache主进程会*多余的空闲进程而保持空闲进程在n,节省了系统资源。如果在一个apache非常繁忙的站点调节这个参数才是必要的,但是在任何时候把这个参数调到很大都不是一个好主意。
同时也可以设置:
MinSpareServers n
来限制最少空闲进程数目来加快反应速度。
5、apache如何设置启动时的子服务进程个数
在d.conf里面设置:
StartServers 5
这样启动apache后就有5个空闲子进程等待接受请求。
也可以参考MinSpareServers和MaxSpareServers设置。
二、如何在Ubuntu上搭建一台安全的Apache Web服务器
本教程假设你已有一台在运行的Ubuntu服务器,网络方面已设置好,而且可以通过SSH进行访问。
Apache2是许多安装的Linux发行版使用的默认Web服务器。它不是对所有环境来说唯一可用的Web服务器,也不是最佳的Web服务器,但是它适合许多使用场景。在安装过程中,系统可能会询问你哪个Web服务器要自动重新配置。选择“apache2”即可。
安装Apache2
使用下面这个命令,安装Apache2及其他库。
$ sudo apt-get-y install apt-get install apache2 apache2.2-mon apache2-doc apache2-mpm-prefork apache2-utils libexpat1 ssl-cert libapache2-mod-php5 php5 php5-mon php5-gd php5-cli php5-cgi libapache2-mod-fcgid apache2-suexec php-pear php-auth php5-mcrypt mcrypt libapache2-mod-suphp libopenssl-ruby libapache2-mod-ruby
更新时区(TimeZone)和检查正确时间
为了减小共享数据或镜像数据方面的混淆,所有服务器在运行时都应该尽可能接近同步状态。一些加密密钥管理系统需要准确的时间。最后,就企业服务器而言,《萨班斯-奥克斯利法案》(Sarbanes-Oxley)和《健康保险可携*及责任*法案》(HIPAA)的安全规则要求正确的时间戳机制。
$ sudo apt-get-y install openntpd tzdata
$ sudo dpkg-reconfigure tzdata
$ sudo service openntpd restart
禁止AppArmor冲突
虽然AppArmor这个套件的确提供了一层额外的安全,但在我看来,需要为每个系统创建自定义配置文件。这不是本教程所探讨的内容。所以眼下,我们会禁用AppArmor,防止与任何默认的配置发生冲突。
$ sudo/etc/init.d/armor stop
$ sudo update-rc.d-f armor remove
$ sudo apt-get remove armor armor-utils
注意:如果是生产环境下的Web服务器,不建议禁用AppArmor。如果有些人想创建自定义的AppArmor配置文件,请参阅官方说明文档()。
阻止分布式拒绝服务(DDoS)攻击
DDoS攻击是一种分布式拒绝服务攻击。有一个Apache模块可以阻止这类攻击。
$ sudo apt-get-y install libapache2-mod-evasive
$ sudo mkdir-p/var/log/apache2/evasive
$ sudo chown-R -data:root/var/log/apache2/evasive
把下面这个命令添加到mod-evasive.load的末尾处。
$ sudo nano/etc/apache2/mods-*ailable/mod-evasive.load DOSHashTableSize 2048
DOSPageCount 20#请求同一页面的最大数量
DOSSiteCount 300#同一侦*上同一客户端IP请求任何对象的总数量
DOSPageInterval 1.0#页面数量阈值的间隔
DOSSiteInterval 1.0#站点数量阈值的间隔
DOSBlockingPeriod 10.0#客户机IP被阻止的时间段
DOSLogDir“/var/log/apache2/evasive”
DOSEmailNotify
阻止Slowloris攻击
还有一个Apache模块可以阻止Slowloris攻击,不过模块名称取决于你使用的Ubuntu的具体版本。如果是Ubuntu 12.10或以后版本:
$ sudo apt-get-y install libapache2-mod-qos
然后,检查qos.conf中的配置:
$ sudo nano/etc/apache2/mods-*ailable/qos.conf
##服务质量方面的设置
#处理来自多达100000个不同IP的连接
QS_ClientEntries 100000
#只允许每个IP仅50条连接
QS_SrvMaxConnPerIP 50
#活动TCP连接的最大数量限制在256条
MaxClients 256
#当70%的TCP连接被占用时,禁用保持活动连接状态
QS_SrvMaxConnClose 180
#最小请求/响应速度(拒绝阻塞服务器的慢速客户端,即slowloris保持连接开启,不提出任何请求):
QS_SrvMinDataRate 150 1200
#并限制请求标题和主体(注意,这还限制了上传和发帖请求):
# LimitRequestFields 30
# QS_LimitRequestBody 102
注意:如果你运行12.04之前的Ubuntu版本,改而使用下面这个命令:
$ sudo apt-get-y install libapache2-mod-antiloris
检查antiloris.conf中的配置
$ sudo nano/etc/apache2/mods-*ailable/antiloris.conf
#每个IP处于READ状态的最大并行连接数量
IPReadLimit 5
阻止DNS注入攻击
Spamhaus这个模块使用域名系统黑名单(DNSBL),目的是为了阻止通过Web表单实现的垃圾邮件转发,防止URL注入攻击,阻止来自机器人程序的 DDoS攻击,通常保护服务器,远离已知的恶意IP。
$ sudo apt-get-y install libapache2-mod-spamhaus
$ sudo touch/etc/spamhaus.wl Append the config to apache2.conf
$ sudo nano/etc/apache2/apache2.conf
MS_METHODS POST,PUT,OPTIONS,CONNECT
MS_WhiteList/etc/spamhaus.wl
MS_CacheSize 256
重启Apache装入新模块
$ sudo service apache2 restart
现在Web服务器已安装完毕,并在正常运行。将Web浏览器指向你的域,即可看到证明你一切正常的默认消息。作为最后的检查机制,运行下面这个命令,看看你的服务器有没有任何错误信息。要是有错误信息,你需要上谷歌搜索一下,立马解决这些错误。
$ sudo tail-200/var/log/syslog
三、如何在Linux下搭建apache服务器
准备篇:
1、配置防火墙,开启80端口、3306端口
vi/etc/sysconfig/iptables
-A INPUT-m state--state NEW-m tcp-p tcp--dport 80-j ACCEPT#允许80端口通过防火墙
-A INPUT-m state--state NEW-m tcp-p tcp--dport 3306-j ACCEPT#允许3306端口通过防火墙
备注:很多网友把这两条规则添加到防火墙配置的最后一行,导致防火墙启动失败,
正确的应该是添加到默认的22端口这条规则的下面
如下所示:
##############################添加好之后防火墙规则如下所示##############################
# Firewall configuration written by system-config-firewall
# Manual customization of this file is not remended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT-m state--state ESTABLISHED,RELATED-j ACCEPT
-A INPUT-p icmp-j ACCEPT
-A INPUT-i lo-j ACCEPT
-A INPUT-m state--state NEW-m tcp-p tcp--dport 22-j ACCEPT
-A INPUT-m state--state NEW-m tcp-p tcp--dport 80-j ACCEPT
-A INPUT-m state--state NEW-m tcp-p tcp--dport 3306-j ACCEPT
-A INPUT-j REJECT--reject-with icmp-host-prohibited
-A FORWARD-j REJECT--reject-with icmp-host-prohibited
COMMIT
##################################################################################################
/etc/init.d/iptables restart#最后重启防火墙使配置生效
2、关闭SELINUX
vi/etc/selinux/config
#SELINUX=enforcing#注释掉
#SELINUXTYPE=targeted#注释掉
SELINUX=disabled#增加
:wq#保存,关闭
shutdown-r now#重启系统
安装篇:
一、安装Apache
yum install d#根据提示,输入Y安装即可成功安装
/etc/init.d/d start#启动Apache
备注:Apache启动之后会提示错误:
正在启动 d:d: Could not reliably determine the server's fully qualif domain name, using::1 for ServerName
解决办法:
vi/etc/d/conf/d.conf#编辑
找到#ServerName
修改为 ServerName 这里设置为你自己的域名,如果没有域名,可以设置为localhost
:wq!#保存退出
cconfig d on#设为开机启动
/etc/init.d/d restart#重启Apache
二、安装MySQL
1、安装MySQL
yum install mysql mysql-server#询问是否要安装,输入Y即可自动安装,直到安装完成
/etc/init.d/mysqld start#启动MySQL
cconfig mysqld on#设为开机启动
cp/usr/share/mysql/my-medium.f/etc/my.f#拷贝配置文件(注意:如果/etc目录下面默认有一个my.f,覆盖即可)
2、为root账户设置密码
mysql_secure_installation
回车,根据提示输入Y
输入2次密码,回车
根据提示一路输入Y
最后出现:Thanks for using MySQL!
MySql密码设置完成,重新启动 MySQL:
/etc/init.d/mysqld restart#重启
/etc/init.d/mysqld stop#停止
/etc/init.d/mysqld start#启动
三、安装PHP5
1、安装PHP5
yum install php
根据提示输入Y直到安装完成
2、安装PHP组件,使 PHP5支持 MySQL
yum install php-mysql php-gd libjpeg* php-imap php-ldap php-odbc php-pear php-xml php-xmlrpc php-mbstring php-mcrypt php-bcmath php-mhash libmcrypt
这里选择以上安装包进行安装
根据提示输入Y回车
/etc/init.d/mysqld restart#重启MySql
/etc/init.d/d restart#重启Apche
配置篇
一、Apache配置
vi/etc/d/conf/d.conf#编辑文件
ServerTokens OS在44行修改为:ServerTokens Prod(在出现错误页的时候不显示服务器操作系统的名称)
ServerSignature On在536行修改为:ServerSignature Off(在错误页中不显示Apache的版本)
Options Indexes FollowSymLinks在331行修改为:Options Includes ExecCGI FollowSymLinks(允许服务器执行CGI及SSI,禁止列出目录)
#AddHandler cgi-script.cgi在796行修改为:AddHandler cgi-script.cgi.pl(允许扩展名为.pl的CGI脚本运行)
AllowOverride None在338行修改为:AllowOverride All(允许.htaess)
AddDefaultCharset UTF-8在759行修改为:AddDefaultCharset GB2312(添加GB2312为默认编码)
Options Indexes MultiViews FollowSymLinks在554行修改为 Options MultiViews FollowSymLinks(不在浏览器上显示树状目录结构)
DirectoryIndex index.html index.html.var在402行修改为:DirectoryIndex index.html index.htm Default.html Default.htm
index.php Default.php index.html.var(设置默认首页文件,增加index.php)
KeepAlive Off在76行修改为:KeepAlive On(允许程序*联机)
MaxKeepAliveRequests 100在83行修改为:MaxKeepAliveRequests 1000(增加同时连接数)
:wq!#保存退出
/etc/init.d/d restart#重启
rm-f/etc/d/conf.d/wele.conf/var//error/noindex.html#删除默认测试页
二、php配置
vi/etc/php.ini#编辑
date.timezone= PRC#在946行把前面的分号去掉,改为date.timezone= PRC
disable_functions= passthru,exec,system,chroot,scandir,chgrp,chown,shell_exec,proc_open,proc_get_status,ini_alter,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,stream_socket_server,escapeshellcmd,dll,popen,disk_free_space,checkdnsrr,checkdnsrr,getservbyname,getservbyport,disk_total_space,posix_ctermid,posix_get_last_error,posix_getcwd, posix_getegid,posix_geteuid,posix_getgid, posix_getgrgid,posix_getgrnam,posix_getgroups,posix_getlogin,posix_getpgid,posix_getpgrp,posix_getpid, posix_getppid,posix_getpwnam,posix_getpwuid, posix_getrlimit, posix_getsid,posix_getuid,posix_isatty, posix_kill,posix_mkfifo,posix_setegid,posix_seteuid,posix_setgid, posix_setpgid,posix_setsid,posix_setuid,posix_strerror,posix_times,posix_ttyname,posix_uname
#在386行列出PHP可以禁用的函数,如果某些程序需要用到这个函数,可以删除,取消禁用。
expose_php= Off#在432行禁止显示php版本的信息
magic_quotes_gpc= On#在745行打开magic_quotes_gpc来防止SQL注入
short_open_tag= ON#在229行支持php短标签
open_basedir=.:/tmp/#在380行设置表示允许访问当前目录(即PHP脚本文件所在之目录)和/tmp/目录,可以防止php*跨站,如果改了之后安装程序有问题(例如:织梦内容管理系统),可以注销此行,或者写上程序的目录/data/.osyunwei./:/tmp/
:wq!#保存退出
/etc/init.d/mysqld restart#重启MySql
/etc/init.d/d restart#重启Apche
测试篇
cd/var//html
vi index.php#输入下面内容
<?php
phpinfo();
?>
:wq!#保存退出
在客户端浏览器输入服务器IP,可以看到如下图所示相关的配置信息!
注意:apache默认的程序目录是/var//html
权限设置:chown apache.apache-R/var//html
至此,CentOS 6.4安装配置LAMP服务器(Apache+PHP5+MySQL)教程完成!