硬件:4核CPU,4G的内存,主板带RIAD,512G内存,
安装与配置Web服务器
Apache服务器源代码安装:
http://httpd.apache.org
Apache RPM软件下载:
http://updates.redhat.com
Apache模块和MPM可使用类型的更详细介绍:
http://httpd.apache.org/docs-2.0/mod/N
Apache对模块的使用有两种方法,一种是将其永久性地编译Apache内核中,即采用静态编译;另一种是采取动态编译,将其编译成DSO(Dynamic shared object,动态共享对象)模块,DSO模块的存储是独立于内核的,可被内核在需要时调用,具体是由mod_so模块提供的运行时配置指令(LoadModule)来实现的,若在编译中包含有任何动态模块,则mod_so模块会被自动包含进内核。若仅希望内核能够支持装载DSO模块,但不实际编译任何动态模块,则在编译配置时就明确指定--enable-so配置参数。
还提供了多道处理模块MPMs(multi-processing modules),编译过程中必须包含一个且只能有一个MPM,编译时系统会根据平台类型自动选择使用默认的MPM,也可在configure命令行中配置:
--with-mpm=要使用MPM类型
模块的指定方法:
1.静态编译模块到内核中,如编译包含mod-sll和mod_rewrite(去掉mod_)模块:
./configure --enable-module="ssl rewrite"或./configure --enable-sll --enable-rewrite
动态编译模块为DSO:
./configure --enable-mods-shared="ssl rewrite"或./configure --enable-rewrite=shared
模块说明:
httpd -l //查看httpd进程中包含哪些模块;
httpd -S //检查虚拟主机的配置是否存在语法错误;
httpd -f //启动httpd守护进程时,加载配置文件;
mod_deflate模块允许支持此功能的浏览器,在请求的页面内容发送前进行压缩,以节少网络带宽。
mod_vbost_alias模块支持虚拟主要的动态配置。
chkconfig --level 235 httpd on
chkconfig --list httpd
service httpd start
service httpd restart
service httpd reload//重新装载httpd.conf(不重启服务器)
./configure --prefix=/usr/local/apache2 --enable-so --with-mpm=prefork --enable-modules="setenvif rewrite deflate vhost_alias"
#apachectl start//启动Apache服务器;
#apachectl restart
#echo "/usr/local/apache2/bin/apachectl start">>/etc/rc.d/rc.local //自动启动
#httpd -t //检查配置文件httpd.conf
#apachect configtest //检查配置文件httpd.conf
#ServerRoot apache安装路径//设置服务器的根目录;
#ServerName 完整的域名[:端口号] //设置服务器用于重定向(端口)和虚拟主机;
#Listen [IP地址]端口号 //告诉服务器接受来自指定端口或者指定IP地址的某端口的请求;
Listen 80
Listen 61.186.160.104:8088
#ServrAdmin E-mail地址 //设置Web站点管理员的E-mail地址,当产生错误时(如指定的网页找不到),服务器返回给客户端的
错误信息中将包含该邮件地址,以告诉用户该向谁报告错误;
#DocumentRoot 目录路径名//设置Web服务器站点根目录;
DocumentRoot /usr/local/apache2/htdocs
#ErrorDocument 错误号 所要显示的网页 //定义当遇到错误时,服务器将给客户端什么样的回应,通常是显示预设置的一个错误页面;
grep ErrorDocument /etc/httpd/conf/httpd.conf //httpd.conf中一些对不同错误的响应信息;
#DirectoryIndex index.php index.htm index.html default.htm //设置站点主页文件的搜索顺序;
#user nobody //设置服务器以哪种(nobody)用户身份来响应客户端的请求;
#Group # -1//设置服务器以哪种(nobody)用户身份来响应客户端的请求;nobody用户权限较小。
#AddDefaultCharset GB2312 //指定默认的字符集;
#TimeOut //设置连接请求超时的时间(秒),超时将断开;
#KeepAlive //用于启用持续的连接或者禁用;KeepAlive On|Off
#MaxKeepAliveRequests //设置在一个持续连接期间允许的最大HTTP请求数目;
#KeepAliveTimeout //设置在关闭TCP连接之前,等待后续请示求的秒数;一旦接受请求建立了TCP连接后则开始计时;
#PidFile logs/httpd.pid//指定存放httpd主(父)进程号的文件名;
日志配置命令:
#ErrorLog //指定服务器存放错误日志文件的位置和文件名;
#LogLevel //设置记录在错误日志中的信息的详细程序;
emerg 紧急,系统将无法使用;
alert 必须立即采取措施;
crit致命情况;
crror 错误情况;
warm警告;
info普通信息;
notice 一般重要情况;
debug 出错级别信息;
http://127.0.0.1//测试Apache是否正常运行
Test Page
This page is used to test the proper operation of the Apache Web server after it has been installed. If you can read this page, it means that the Apache Web server installed at this site is working properly.
#rpm -q httpd
#rpm -Uvh http-2.0.40-21.11.i386.rpm
目录说明:
/etc/httpd/conf//Apache服务器的配置文件httpd.conf
/etc/rc.d/init.d/ //Apache服务器启动脚本安装,httpd
/var/www/html //Web站点根目录;
/usr/bin //Apache软件包提供的可执行程序安装在该目录下。
/etc/httpd/logs//日志文件
htdocs //默认Web站点的根目录,可通过配置文件httpd.conf进行设置或更改;
cgi-bin//CGI脚本目录;
bin//apachectl启动脚本会自动设置在某些操作系统下,正常运行httpd所需的环境变量;
httpd守扩进程被调用后做的第一件事就是读取httpd.conf,并根据其配置项来配置当前Web服务器;
httpd.conf 分为三部分(section),
第一部分为全局环境设置,主要用于设置ServerRoot、主进程号的保存文件、
对进程的控制、服务器侦听的IP地址、端口、要装载的DSO模块
第二部分是服务器的主要配置指一位置;
第三部分用于设置和创建虚拟主机;
Listen 80 //Web服务器绑定在80端口;
DocumentRoot //设置Web站点的根目录等;
访问控制指令:
<Directory /usr/local/*/htdoes> //<Directory>使指定的目录及其子目录有效;不可嵌套。目录名可使用“*”或“?”通配符,
<Files ~“\.ht">//作用于指定的文件,则不管该文件实际存在子哪个目录,允许所有主机访问位于任何目录下的.ht开的文件
Order allow,deny //指定allow和deny语句,哪一个被执行;允许、禁止访问主机。
Allow from all//允许所有主机访问;也可以是IP地址。
<Files>
</Directory>
<Location /assistant> //针对URL地址进行访问限制,不是文件系统;
Order deny,allow //
Deny from all
Allow from 61.186.160.105
</Location>
Order deny,allow //若主机没有被特别指出拒绝访问,则该资源被允许访问。
Order allow,deny //若主机没有被特别指出允许访问,则该主要将被拒绝访问该资源。
Order mntual-failure //只有那些在allow语句中被指定,同时又没有出现在deny语句的主机,才允许访问。若主机在两条指
令中都没有出现,则将被拒绝访问;
*、? //*代表任意个字符,?代表一个任意的字符;
<DirectoryMatch> //指定目录名时,可直接使用正则表达式;<Directory>若要使用正则表达式,则需要在正则表达式前加“~"
<FilesMatch> //可直接使用正则表达式来通配多个文件;
AccessFileName .htaccess//.htaccess分布式配置文件,在该文件中也可放置一些配置指令,以作用于该文件所在的目录以及
其下的所有子目录。搜寻.htaccess文件会降低系统性能;
<Directory />
AllowOverride None //禁止系统查找.htaccess文件;
Options FollowSymLinks //Options:控制在特定目录中将使用哪些服务器特性;
</Directory>
Options命令可用的选项:
None 不启用任何额处特性;
All 除MultiViews之外的所有特性,默认设置;
ExecCGI 允许执行CGI脚本;
FollowSymLinks 服务器允许在此目录中使用符号连接。在<Location>段中无效
Includes 允许服务器端包含SSI(Server-side includes)
IncludesN()EXEC允许服务器端包含,但禁用#exec和#exec CGI命令。但仍可以从ScriptAltase目录使用#include虚拟CGI脚本;
Indexes 如果一个映射目录的URL被请求,而此目录中又没有DirectoryIndex(如:index.html),那么服务器返回一个
格式化后的目录列表;
MultiViews 允许内容协商的多重视图;
SymLinksIfOwnerMatch 服务器仅在符号连接与其目的目录或文件拥有者具有同样的用户ID时,才使用它;
ExecCGI 拥有ExecCGI执行权限
prefork.c 控制Apache进程,对于使用prefork多道处理模块的Apache服务器;
<IfModule prefork.c>
StartServers 5//设置服务器启动时启动的子进程的个数;
MinSpareServers5//设置服务器中空闲子进程(即没有HTTP处理请求的子进程)数目的下限;
MaxSpareServers10 //设置服务器中空闲子进程数目的上限。若空闲子进程超过该设置值,则父进程就会
停止多余的子进程;
MaxClients 150 //设置服务器允许连接的最大客户数;
MaxRequestsPerChild0//设置子进程所能处理请求的数目上限,0为不受限制;
</IfModule>
access_log //日志文件用于记录服务器处理的所有请求;
CustomLog 指定access_log日志文件的位置和日志记录的格式;
LogFormat 定义日志的记录格式;
LogFormat 日志格式字符串 日志格式名称
LogFormat "%h %1 %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %1 %u %t \"%r\" %>s %b" common
LogFormat "%{Referer}i->%U" referer
LogFormat "%{User-agent}i“ agent
LogFormat logs/access_log common
LogFormat "%v %h %l %u %t \"%r"\ %>s %b" vhost
CustomLog logs/vhost_log vhost
%a远程主机IP地址
%A本地主机IP地址
%h远程主机名
%H请求协议
%l远程登录名
%u来自auth 的远程用户
%U请求的URL路径
%U{User-agent}i 用户浏览器类型
%b发送的字节数,不包括HTTP标题
%t请求的时间
%rHTTP请求的第一行的内容
%sHTTP响应状态码,200代表访问成功,404代表文件未找到,403代表禁止访问,401代表未授权访问,400代表错误请求。
%m请求方法
%v服务于该请求的服务器的ServerName
%V服务器的名字,取决于UseCanonicalName的设置
%{Host}i 返回HTTP请求的主机头信息,可能含端口号信息
split-logfile </var/www/myweb/vhost_log//当所有虚拟机日志都记录在主站点日志中时,使用此命令将日志按虚拟主机名分组,拆分成一个个独立的日
志文件,第个日志文件采用"虚拟主机名.log“形式命名,其中包含了该虚拟主机所产生的日志记录;
容器与访问控制指令:容器指令通常用于封装一组指令,使其在容器条件成立时有效,或者用于改变指令的作用域。
<IfModue ! mpm_winnt.c> //<IfModue>用于判断指定的模块是否存在,若存在(被静态地编译进服务器,或是被动态装载进服务器)则包含于
其中的指令将有效,否则会被忽略。可嵌套使用。
<IfModue ! mpm_netware.c> //若要使模块不存在时所包含的指令有效,只需在模块名前加一个“!”即可,
User nobody
Group # -1
</IfModue>
</IfModue>
基于域名虚拟主机:
例:假设当前服务器的IP地址为192.168.3.120,现要在该服务器创建两个基于域名的虚拟主机,使用端口为标准的80,其域名分别为www.myweb1.com和www.myweb2.com,站点根目录分别为/var/www/myweb1和/var/www/myweb2,日志文件分别放在/var/vhlogs/myweb1和/var/vhlogs/myweb2目录下面,Apache服务器原来的主站点采用域名www.myweb.com进行访问。
#vi /etc/hosts //使用/etc/hosts进行域名注册;
192.168.3.120 www.myweb1.com www.myweb2.com www.myweb.com
#ping www.myweb1.com //检测域名解析是否正常;
#ping www.myweb2.com
#ping www.myweb.com
#mkdir -p /var/www/myweb1
#mkdir -p /var/www/myweb2
#mkdir -p /var/vhlogs/myweb1
#mkdir -p /var/vhlogs/myweb2
#vi /etc/httpd/conf/httpd.conf
Listen 80 //设置Listen指令侦听的端口
NameVirtualHost 192.168.3.120 //基于域名的虚拟主机,如果对多个地址使用了多个基于域名的虚拟主机
则对每个地址均要使用此指令:NameVirtualHost IP地址:端口
NameVirtualHost * 当IP地址无法确定时,使用“*”通配任意的IP地址
<VirtualHost 192.168.3.120>//定义一个虚拟主机,VirtualHost的参数必须与NameVirtualHost后面所使用的参数保持一致。
ServerName www.myweb.com//当一个请求到时,服务器会首先检查它是否使用了一个能和NameVirtualHost相匹配的IP地址。如果匹配,就会
DocumentRoot /usr/local/apache/htdoes //就会查找每个与这个IP地址相对应的<VirtualHost>配置段,并尝试找出一个ServerName或ServerAlias配置相
ServerAdmin yjghddii@126.com//与请求的主机名(域名)相同的,若找到,则使用该虚拟主机的配置,并响应其访问请求。否则将使用符合这个
</VirtualHost> //IP地址的第一个列出的虚拟主机。在最前面的虚拟主机成为默认虚拟主机。
<VirtualHost 192.168.3.120>
ServerName www.myweb1.com
DocumentRoot /var/www/myweb1
DirectoryIndex index.php index.php3 index.html index.htm default.html default.html
ServerAdmin yjghddii@126.com
ErrorLog /var/vhlogs/myweb/error_log
TransferLog /var/vhlogs/myweb1/access_log
</VirtualHost>
<VritualHost 192.168.3.200>
ServerName www.myweb2.com
DocumenRoot /var/www/myweb2
DirectoryIndex index.php index.php3 index.htm index.html default.htm default.html
ServerAdmin yjghddii@126.com
ErrorLog /var/vhlogs/myweb2/error_log
TranferLog /var/vhlogs/myweb2/access_log
</VirtualHost>
<Directory /var/www>//对Web站点目录设置访问控制;
Options FllowSymLinks
AllowOverride None
Order deny,allow
Allow from all
</Directory>
Apachectl –S //查查虚拟主机配置是否正确;
Aparhectl restart//重启Apache服务器配置生效;
例:
NameVirtualHost 192.168.168.10 //服务器配有两块网卡,IP:内网192.168.168.10,外网61.186.160.104,在Internet网中,企业域名
NameVirtualHost 61.186.160.104 //www.example.com指向外网IP地址,在企业内网的DNS服务器中,指向内网IP地址;现要求为来自内网
<VirtualHost 192.168.168.10 61.186.160.104>//外网的请求提供同样的Web服务。(httpd.conf中设置)
DocumentRoot /www/server1
ServerName www.example.com
</Virtual>
例:
Listen 80 //服务器:192.168.168.154,服务器上创建两个基于域名(主机名)的虚拟主机,域名:www.myweb3.com和www.
Listen 8080 //myweb4.com,每个虚拟主机的80端口和8080端口,分别服务一个Web站点,其站点根目录分别为
// /var/www/myweb3-80、/var/www/myweb3-8080、/var/www/myweb4-80、/var/www/myweb4-8080。
NameVirtualHost 192.168.168.154:80//www.myweb3.com的80端口作为默认Web站点。
NameVirtualHost 192.168.168.154:8080
<VirtualHost 192.168.168.154:80>
ServerName www.myweb3.com
DocumentRoot /var/www/myweb3-80
<VirtualHost>
<VirtualHost 192.168.168.154:8080>
ServerName www.myweb3.com
DocumentRoot /var/www/myweb3-8080
</VirtualHost>
<VirtualHost 192.168.168.154:80>
ServerName www.myweb4.com
DocumentRoot /var/www/myweb4-80
</VirtualHost>
<VirtualHost 192.168.168.154:8080>
ServerName www.myweb4.com
DocumentRoot /var/www/myweb4-8080
</VirtualHost>
基于IP地址虚拟主机:
#cd /etc/sysconfig/network-scripts //服务器有两张网卡eth0、eth1,eth0:192.168.167.157,
#cp ifctg-eth1 ifcfg-eth1:0//eth1:192.168.167.156.eth0网卡用作了基于主机名的虚拟主机,
#vi ifcfg-eth1:0 //eth1通过IP别名方式,为其绑定多个IP地址,用于提供基于IP地址
DEVICE=eth1:0 //的虚拟主机。eth1绑定的第一张虚拟网卡的设备名为eth1:0,对应的
IPADDR=192.168.167.157 //配置文件为ifcfg-eth1:0,通过修改配置文件中的设备名和IP地址,
#ifdown eth1 //即可实现IP地址的绑定。
#ifup eth1:0
#ifup eth1
#ping 192.168.167.157
#ping 192.168.167.156
#vi /etc/hosts//192.168.167.156:www.example2.com,192.168.167.157:
192.168.167.157 www.example3.com //www.example3.com,试为其创建基于IP地址的虚拟主机,端口使用80
#mkdir -p /var/www/example2 //目录分别为/var/www/example2、/var/www/example3,为这两个域再增
#mkdir -p /var/www/example3 //8080端口,使其也能在8080端口发布另外的Web站点。Web站点根目录分
///var/www/example2-8080、/var/www/example3-8080
#vi httpd.conf
Listen 80
Listen 8080
<VirtualHost 192.168.167.156:80>
ServerName www.example2.com
DocumentRoot /var/www/example2
</VirtualHost>
<VirtualHost 192.168.167.156:8080>
ServerName www.example2.com
DocumentRoot /var/www/example2-8080
</VirtualHost>
<VirtualHost 192.168.167.157:80>
ServerName www.exaple3.com
DocumentRoot /var/www/example3
</VirtualHost>
<VirtualHost 192.168.167.157:8080>
ServerName www.exaple3.com
DocumentRoot /var/www/example3-8080
</VirtualHost>
1.选择机架设备
小型企业通过在桌面或架子上堆叠服务器硬件和网络设备来开始运营并不罕见。这样做的成本的确比较低廉,但会存在未来隐患,随着公司业务的发展,这些设备可能会成为一个巨大的混乱。这些设备暴露在外会增加物理篡改的风险,也会埋下一些定时炸弹,比如说不小心造成的咖啡溢出,环境灰尘以及员工不小心被暴露的电线绊倒所存在的危险等等。
但是,使用机架式设备能避免这类事故。为什么这样说呢?因为这些机架经过专业设计,可以轻松地容纳这种类型的硬件。虽然,与非机架安装等价物相比,它们似乎非常昂贵,但从长远的角度来说,性价比高,你可以使用它们轻松管理你的设备以及其它好处会远远超过其成本。
2.要了解服务器机架的基本特征
在购买或安装服务器机架之前,你需要学习并了解服务器机架的基本特征。服务器机架通常以机架单位来衡量,通常表示为“U”或“RU”。机架单元的高度相当于1.75英寸(44.5毫米),兼容设备的测量单位为“U”的倍数。通常,服务器的范围从1U到4U,网络交换机在1U到2U之间,而一些刀片服务器在5U到10U之间或甚至更多。
在确定服务器机架之前,你还需要考虑服务器机架的宽度和高度(深度)。通常可接受的宽度为19英寸,深度为600-1,000mm。然而,这些机架中的许多通常具有可调节的后支架,即使大多数机架安装服务器通常包括可调节的安装套件,一旦它们具有足够的深度来容纳服务器就可以使用。
四柱机架是当今市场上最受欢迎的商用服务器机架之一,它设计用于容纳19英寸宽的设备和服务器。
普通机架的高度约为42U,其中一半的机架高度为24U,但有几种其他类型的机架,机架高度从5U到20U不等。这些不是对这些机架外部尺寸的测量,因为该特征高度依赖于机架的设计并且它是变化的。一些机架配有脚轮,有助于缓解运动。
开放式机架和小型壁挂式机柜是在空间有限的地方安装IT服务器的绝佳选择。但是,你需要意识到,如果你决定使用开放式机架,则必须满足特殊要求才能安装服务器,包括将机架固定在地板上。壁挂式机柜不适用于由少数服务器组成或比网络交换机重的任何负载。
3.隔离服务器以降低噪音
如果你没有专门放置和存放设备的单独房间,你将不得不考虑内部服务器设备附带的噪音。你需要一个分区的房间,即使它是一个小区域,因为从长远来看,它是值得的。
建立分区以后,能够消除或者减弱那些会影响员工整体工作效率的隐患。另外还有一个好处就是能够防止任何未经授权的人员篡改你的设备,有助于保护设备免受损坏并防止被盗。
在小型企业中,除了将机架放在房间的角落或IT部门内部别无选择外,强烈建议使用具有隔音功能的机架。 由于通风口无法实现完全隔音,因此这些机架通常通过其降噪特性来衡量。它们产生的噪音和机架本身的整体降噪能力的结合通常会决定它们的工作效果。
4.想要散发热量则需一个合适的空调机组
IT设备和服务器产生的热量通常很高,可能会缩短设备的使用寿命。它们还可能导致中断和崩溃,这可能很难解释,这就是为什么在构建内部服务器机房时安装冷却装置非常关键的原因。
但是,如果你只需要几个网络交换机,五托架网络连接存储(NAS)系统或服务器,你可能不需要担心冷却系统,除非你需要更大的NAS,多个服务器和一个中型UPS,这样的话热量会迅速增加。
服务器机架的热容量也直接受外部温度的影响。这就是强烈建议你在服务器机房安装空调装置的原因。
只要打开服务器并产生热量,这些空调就必须始终打开。建议使用不同的断路器安装独立的独立装置,以便在需要维修任何一个断路器时可以定期更换它们。
不要想着打开窗户再加上两部风扇来散发热量。
5.学会正确处理电缆
只有正确的电缆管理才能确保适当的通风。这就是为什么尝试将42个1U服务器强制进入全高机架是一个非常糟糕的主意,因为它会导致严重的布线限制或限制。许多旧服务器的机箱通常需要彼此之间1U到2U的空间,以确保正确的气流。目前,大多数现代机架式服务器都不需要这些空间。
设置一个装满机架的服务器机房需要的不仅仅是使用一些螺丝来帮助将这些设备固定到位。你需要了解如何管理从这些机架中排列的所有设备及其相应的以太网电缆中出来的电缆。除了机柜内布线外,还需要妥善管理或终止用于IP摄像机,台式计算机和所有其他网络设备的以太网LAN点的电缆。
处理所有这些的最佳方法是使用RJ45配线架终止以太网电缆。安装在1U空间中的普通接线板通常提供多达24个端口,并且通常需要某种形式的手动输入,例如剥离电缆,将其固定到接线板中以及使用线缆测试工具来验证其连接性。根据你的预算,你可以让网络专业人士或专家在一天内为你处理所有这些问题。
除了配线架之外,你还需要使用束线带,因为当你尝试固定杂散电缆时它们会派上用场。你可以获得可以重复使用的标准电缆扎带,当你批量购买时它们非常便宜。
6.学会标记,保持简单
在设置服务器时,要学会标记和记录你所使用的流程,这点是非常重要的。这样做,便于任何新员工或者供应商在需要了解服务器机房时,能够高效并系统的了解到服务器的整体系统情况。并且还可以防止可能发生的任何灾难性错误,包括重新启动或拔出系统而不发出任何形式的警告。
正确标记基础设施的最简单和最好的方法之一是使用标签打印机。该打印机可以从任何硬件商店购买。你必须使用正确描述它们的唯一名称或其IP地址来标记网络和服务器设备。你还应该为键盘,鼠标和视频开关,路由器,NAS设备,冗余硬件和数据备份设备等其他IT设备执行相同的操作。
这些注意事项应打印出来并妥善详细,以便轻松解释与你的内部硬件相关的重要程序。这些打印件应贴在冰箱磁铁或服务器机柜上。为了获得最佳结果,它们应包括与数据备份,联网,启动或关闭这些设备相关的操作说明,以防断电。
除了以上几点,还有一些需要你去了解和注意的地方:
a.空间要求
b.地板和柜子类型
c.设备尺寸
d.加热和冷却系统
e.电气设置
f.防火
g.紧急电气备份
h.安全和警报
最重要的一点是,以上所有内容都要花钱,所以要规划好你的预算,不要让设置服务器机房花掉了你整个IT预算。
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)