配置LAMP就以安装wordpress为例
1. 开启httpd的虚拟主机的功能
[root@web htdocs]# vim /etc/httpd/httpd.conf #DocumentRoot "/usr/local/apache/htdocs" #关闭中心主机 # Virtual hosts Include /etc/httpd/extra/httpd-vhosts.conf #开启虚拟主机
2. 编辑虚拟主机(基于主机的访问控制)
[root@web htdocs]# vim /etc/httpd/extra/httpd-vhosts.conf <VirtualHost 192.168.2.91:80> Servername www.luntan.com DocumentRoot "/usr/local/apache/htdocs/xcache-admin/" ErrorLog "/var/log/httpd/error.log" CustomLog "/var/log/httpd/access.log" combined </VirtualHost> <VirtualHost 192.168.2.91:80> Servername www.luntan2.com DocumentRoot "/usr/local/apache/htdocs/dong/" ErrorLog "/var/log/httpd/errord.log" CustomLog "/var/log/httpd/accessd.log" combined <Directory "/usr/local/apache/htdocs/dong/"> Options FollowSymlinks AllowOverride none Order Allow,Deny Allow from 192.168.2.0/24 </Directory> </VirtualHost>
这个我建立了2个虚拟主机,一个上一篇博客里的xcache的web管理界面,还有一个是即将要建立的wordpress。
编辑虚拟主机(基于用户的访问控制)
[root@web ~]# vim /etc/httpd/extra/httpd-vhosts.conf <VirtualHost 192.168.2.91:80> Servername www.luntan.com DocumentRoot "/usr/local/apache/htdocs/xcache-admin/" ErrorLog "/var/log/httpd/error.log" CustomLog "/var/log/httpd/access.log" combined </VirtualHost> <VirtualHost 192.168.2.91:80> Servername www.luntan2.com DocumentRoot "/usr/local/apache/htdocs/dong/" ErrorLog "/var/log/httpd/errord.log" CustomLog "/var/log/httpd/accessd.log" combined <Directory "/usr/local/apache/htdocs/dong/"> Options FollowSymlinks AllowOverride none AuthName "tom" #认证的提示信息,可以随便写 AuthType basic AuthUserFile /etc/httpd/htpasswd Require user tom
给tom提供密码文件
[root@web ~]# htpasswd -m -c /etc/httpd/htpasswd tom New password: Re-type new password: Adding password for user tom
3. 解压wordpress
[root@web ~]# unzip wordpress-3.8-zh_CN.zip [root@web ~]# mv wordpress /usr/local/apache/htdocs/dong [root@web ~]# cd !$
4. 修改配置文件
[root@web dong]# mv wp-config-sample.php wp-config.php [root@web dong]# vim !$ // ** MySQL 设置 - 具体信息来自您正在使用的主机 ** // /** WordPress数据库的名称 */ define('DB_NAME', 'wordpress'); /** MySQL数据库用户名 */ define('DB_USER', 'root'); /** MySQL数据库密码 */ define('DB_PASSWORD', '12345'); [root@web dong]# mysql -e "create database wordpress;"
5. 开始安装
到xcache上查看缓存的命中状态
附:
httpd.conf基本设定
httpd.conf配置文件有3个部分组成,分别是:全局变量、配置主服务器、配置虚拟主机。
下面我们详解讲述下/usr/local/apache2/conf/httpd.conf文件各个指令的含义。
[root@webserver ~]#vi /usr/local/apache2/conf/httpd.conf
全局变量配置部分
ServerRoot "/usr/local/apache2"
ServerRoot用于指定守护进程httpd的运行目录, httpd在启动之后自动将进程的当前目录切换到这个指定的目录下,可以使用相对路径和绝对路径。
PidFile logs/httpd.pid
PidFile指定的文件将记录httpd守护进程的进程号,由于httpd能自动复制其自身,因此apache启动后,系统中就有多个httpd进程,但只有一个进程为最初启动的进程,它为其他进程的父进程,对父进程发送信号将影响所有的httpd进程。
Timeout 300
Timeout用来定义客户端和服务器端程序连接的超时间隔,单位为秒,超过这个时间间隔,服务器将断开与客户端的连接。
KeepAlive On
KeepAlive用来定义是否允许用户建立永久连接,On为允许建立永久连接,Off表示拒绝用户建立永久连接,例如,要打开一个含有很多图片的页面,完全可以建立一个tcp连接将所有信息从服务器传到客户端即可,而没有必要对每个图片都建立一个tcp连接。此选项建议设置为On。
MaxKeepAliveRequests 100
MaxKeepAliveRequests用来定义一个tcp连接可以进行HTTP请求的最大次数,设置为0代表不限制请求次数,这个选项与上面的KeepAlive相互关联,当KeepAlive设定为On,这个设置开始起作用。
KeepAliveTimeout 15
KeepAliveTimeout用来限定一次连接中最后一次请求完成后延时等待的时间,如果超过了这个等待时间,服务器就断开连接。
<IfModule prefork.c>
ServerLimit 300
StartServers 5
MinSpareServers 5
MaxSpareServers 20
MaxClients 300
MaxRequestsPerChild 2000
</IfModule>
<IfModule worker.c>
StartServers 2
MaxClients 150
MinSpareThreads 25
MaxSpareThreads 75
ThreadsPerChild 25
MaxRequestsPerChild 0
</IfModule>
上面的两段指令其实是对web服务器的使用资源进行的设置,apache可以运行在prefork和worker两种模式下,可以通过/usr/local/apache2/bin/httpd �Cl来确定当前apache运行在哪种模式,在编译apache时,如果指定“--with-mpm=MPM”参数,那么apache默认运行在prefork模式下,如果指定的是“--with-mpm=worker”参数,那么默认运行在worker模式下。如果没有做任何模式指定,那么apache默认也运行在prefork模式下。
prefork采用预派生子进程方式,用单独的子进程来处理不同的请求,进程之间彼此独立。
StartServers表示在启动apache时,就自动启动的进程数目。
MinSpareServers设置了最小的空闲进程数,这样可以不必在请求到来时再产生新的进程,从而减小了系统开销以增加性能。
MaxSpareServers设置了最大的空闲进程数,如果空闲进程数大于这个值,apache会自动关闭这些多余进程,如果这个值设置的比小MinSpareServers,则Apache会自动把其调整为 MinSpareServers+1。
MaxRequestsPerChild设置了每个子进程可处理的最大请求数,也就是一个进程能够提供的最大传输次数,当一个进程的请求超过此数目时,程序连接自动关闭。0意味着无限,即子进程永不销毁。这里我们设置为2000,已经基本能满足中小型网站的需要。
MaxClients设定Apache可以同时处理的请求数目。是对Apache性能影响最大的参数,默认值150对于中小网站基本够了,但是对于大型网站,是远远不够的,如果请求总数已达到这个值,那么后面的请求就必须排队,这就是系统资源充足而网站访问却很慢的主要原因。理论上这个值设置的越大,可以处理的请求的越多,但是apache默认限制不能超过256,如果要设置的值大于256,可以直接使用ServerLimit指令加大MaxClients。这里我们设置的值是300。
相对于prefork,worker是全新的支持多线程和多进程的混合模型,由于是使用线程来处理请求,所以可以处理更多的请求,对系统资源的使用开销也比较小。
MinSpareThreads设置了最少的空闲线程数。
MaxSpareThreads设置了最多的空闲线程数。
MaxClients设定同时连入客户端的最大数。如果现有子进程中的线程总数不能满足请求的负载,控制进程将派生出新的子进程。默认最大子进程数是16,加大时需要通过ServerLimit来进行声明,ServerLimit最大值为20000,注意,如果指定了ServerLimit,那么此值乘以ThreadsPerChild必须大于等于MaxClients,而MaxClients必须是ThreadsPerChild的整数倍,否则 Apache将会自动调节到一个相应值。
ThreadsPerChild设定每个子进程的工作线程数,此选项在worker模式下与性能密切相关,默认最大值为64,如果系统负载很大,不能满足需求的话,需要使用 ThreadLimit指令,此指令默认最大值为20000,Worker模式下所能同时处理请求总数由子进程数乘以ThreadsPerChild值来确定,保证大于等于MaxClients的设定值。
Listen 80
此指令是设置apache的监听端口,默认的http服务都是运行在80端口下,当然也可以修改为其它端口。
LoadModule access_module modules/mod_access.so
LoadModule auth_module modules/mod_auth.so
LoadModule jk_module modules/mod_jk.so
加载mod_jk模块,上面我们已经生成了JK模块,并且放到了modules目录下,这里这需指定加载即可。
……以下省略……
配置主服务器
User nobody
Group nobody
这里是设定执行httpd的用户和组,默认是nobody用户启动apache,这里将组也设置为nobody。
ServerAdmin [email protected]
这里指定的是网站管理员的邮件地址,如果apache出现问题,会发信到这个邮箱。
ServerName www.example.com:80
这里是指定系统的主机名,如果没有指定,会以系统的hostname为依据。特别注意,这里设定的主机名一定要能找到对应的IP地址(主机名和IP的对应关系可以在/etc/hosts设置)。
UseCanonicalName Off
设定是否使用标准的主机名,如果设置为On,则以ServerName指定的主机名为主。如果web主机有多个主机名,请设置为Off。
DocumentRoot "/usr/local/apache2/htdocs"
此指令非常重要,是用来放置网页的路径,apache会默认到这个路径下寻找网页,并显示在浏览器上。
<Directory />
#这里的“/”是相对路径,表示DocumentRoot指定的目录。
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory "/usr/local/apache2/htdocs">
Options Indexes FollowSymLinks
Order allow,deny
Allow from all
</Directory>
上面这段信息是对DocumentRoot指定目录的权限设定,有3个必须知道的参数:
Options 表示在这个目录内能够执行的操作,主要有5个可设定的值:
Indexes:此参数表示,如果在DocumentRoot指定目录下找不到以index打头的文件时,就将此目录下所有文件列出来,很不安全,不建议使用这个参数。
FollowSymLinks:表示在DocumentRoot指定目录下允许符号链接到其它目录。
ExecCGI:表示允许在DocumentRoot指定的目录下执行cgi操作。
Includes:准许SSI(Server-side Includes)操作。
MultiViews:不常用,根据语言的不同显示不通的信息提示。
AllowOverride 通过设定的值决定是否读取目录中的.htaccess文件,来改变原来所设置的权限,其实完全可以在httpd.conf中设置所有的权限,但是这样对apache使用者的其它用户如果要修改一些权限的话,就比较麻烦了,因此apache预设可以让用户以自己目录下的. htaccess文件复写权限,常用的选项有两个:
All:表示可以读取.htaccess文件的内容,修改原来的访问权限。
None:表示不读取.htaccess文件,权限统一控制。
Order 用来控制目录和文件的访问授权,常用的组合有2个:
Deny,Allow:表示先检查禁止的设定,没有禁止的全部允许。
Allow,Deny:表示先检查允许的设定,没有允许的全部禁止。
DirectoryIndex index.html index.htm index.jsp index.html.var
这里是对apache打开网站默认首页的设定,apache在打开网站首页时一般会查找index.*之类的网页文件,DirectoryIndex指令就是设置apache依次寻找能打开网站首页的顺序,例如我们要打开www.ixdba.net网站,apache会首先在DocumentRoot指定的目录下寻找index.html,也就是www.ixdba.net/index.html,如果没有找到index.html网页,那么apache会接着查找index.htm,如果找到就执行www.ixdba.net/index.htm打开首页,以此类推。
UserDir public_html
UserDir用于设定用户个人主页存放的目录,默认为“public_html”目录,例如有个用户为ixdba,如果他的根目录为/home/ixdba,那么他的默认主页存放路径为/home/ixdba/public_html。
AccessFileName .htaccess
定义每个用户目录下的访问控制文件的文件名,默认为.htaccess,
TypesConfig conf/mime.types
TypesConfig用来定义在哪里查询mime.types文件
HostnameLookups Off
用来指定apache在日志中记录访问端地址是ip还是域名,如果为Off,则记录IP地址,如果是On,记录域名信息,建议设置为Off。
ErrorLog logs/error_log
指定错误日志文件的位置
CustomLog logs/access_log common
指定apache访问日志文件的位置和记录日志的模式。
ServerTokens Full
这个指令定义包含在HTTP回应头中的信息类型,默认为“Full”,表示在回应头中将包含操作系统类型和编译信息,可以设为Full|OS|Minor|Minimal|Major|Prod列各值中的一个,Full包含的信息最多,而Prod最少。
ServerSignature On
此指令有3个选项,On、Off和Email,On选项表示在apache的出错页面会显示apache版本以及加载的模块信息,Email选项与On相同,但是还会多出一个包含管理员邮件地址的mailto连接。Off表示不显示任何上面信息。
Alias /icons/ "/usr/local/apache2/icons/"
<Directory "/usr/local/apache2/icons">
Options Indexes MultiViews
AllowOverride None
Order allow,deny
Allow from all
</Directory>
上面这段信息是apache中对别名的设定,当访问http://ip或域名/icons时,由于Alias的原因,apache不会去DocumentRoot指定的目录查找文件,而是直接访问/usr/local/apache2/icons 目录下对应的文件信息。而<Directory>标签就是对这个目录权限的设定。
ScriptAlias /cgi-bin/ "/usr/local/apache2/cgi-bin/"
<Directory "/usr/local/apache2/cgi-bin">
AllowOverride None
Options None
Order allow,deny
Allow from all
</Directory>
这段信息和上面的Alias设定类似,只不过这个是设置cgi脚本的执行权限而已,apache默认在/usr/local/apache2/cgi-bin目录下具有cgi脚本执行权限。
JkWorkersFile /usr/local/apache2/conf/workers.properties
JkMountFile /usr/local/apache2/conf/uriworkermap.properties
JkLogFile /usr/local/apache2/logs/mod_jk.log
JkLogLevel info
JkLogStampformat "[%a %b %d %H:%M:%S %Y]"
上面这5行是对JK连接器属性的设定,第一、二行指定Tomcat workers配置文件以及对网页的过滤规则,第三行指定JK模块的日志输出文件,第四行指定日志输出级别,最后一行指定日志输出格式。
虚拟主机的设定
NameVirtualHost *
表示启用虚拟主机,如果开启虚拟主机,上面DocumentRoot指令指定的配置将失效,以虚拟主机中指定的DocumentRoot为主。
<VirtualHost *>
ServerAdmin [email protected]
DocumentRoot /webdata/www
ServerName 192.168.60.198
ErrorLog logs/error_log
CustomLog logs/access_log common
JkMountFile conf/uriworkermap.properties
</VirtualHost>
上面这段是添加一个虚拟主机,其实虚拟主机是通过不同的ServerName 来区分的,这里为了演示方便,使用IP代替域名。我们经常看到在一个web服务器上有很多个网站,并且每个站点都不相同,这就是通过虚拟主机技术实现的。
每个虚拟主机用<VirtualHost>标签设定,各个字段含义如下:
ServerAdmin:表示虚拟主机的管理员邮件地址。
DocumentRoot:指定虚拟主机站点文件路径。
ServerName:虚拟主机的站点域名
ErrorLog:指定虚拟主机站点错误日志输出文件。
CustomLog:指定虚拟主机站点访问日志输出文件。
JkMountFile:指定对此虚拟主机的URL映射文件。
例如,我们要在一个服务器上建立3个网站,只需配置下面3个虚拟主机即可:
<VirtualHost *:80>
ServerAdmin [email protected]
DocumentRoot /webdata/html
ServerName www.ixdba.net
ErrorLog logs/www.error_log
CustomLog logs/www.access_log common
</VirtualHost>
<VirtualHost *:80>
ServerAdmin [email protected]
DocumentRoot /webdata/bbs
ServerName bbs.ixdba.net
ErrorLog logs/bbs.error_log
CustomLog logs/bbs.access_log common
</VirtualHost>
<VirtualHost *:80>
ServerAdmin [email protected]
DocumentRoot /webdata/mail
ServerName mail.ixdba.net
ErrorLog logs/mail.error_log
CustomLog logs/mail.access_log common
</VirtualHost>
这样,就建立了3个虚拟主机,对应的站点域名分别是www.ixdba.net、bbs.ixdba.net、mail.ixdba.net,接下来的工作就是将这3个站点域名对应的IP全部解析到一台web服务器即可。
附录转自:http://ixdba.blog.51cto.com/2895551/564060