建立Web服务,提供LAMP平台,提供至少3个虚拟主机,基于主机名实现: 

下面是3个虚拟主机,及其网页目录存放位置:

www.magedu.com  /web/vhosts/www
pma.magedu.com /web/vhosts/pma
wp.magedu.com  /web/vhosts/wp

要求:
    为虚拟主机www.magedu.com提供一个discuz论坛。
    为虚拟主机pma.magedu.com安装一个PHP开发的网站页面(即安装phpMyAdmin软件),要基于SSL来实现。
    为虚拟主机wp.magedu.com安装wordpress。
 


一、准备工作:

1、关闭selinux

由于我们所要做的实验会改动web服务的网页目录,所以只有关闭selinux才会生效。关闭selinux的方法有以下2种:

(1)直接在命令行中输入setenforce 0,但这种方式只会当前shell有效,当系统重启时,又会失效。

 
  
  1. [root@linli ~]# getenforce   
  2. Enforcing  
  3. [root@linli ~]# setenforce 0  
  4. [root@linli ~]# getenforce   
  5. Permissive 

(2)修改selinux的配置文件/etc/sysconfig/selinux

 

2、我这里没有配置dns,所以就编辑RHEL5.8系统上的/etc/hosts,还有Win7上的hosts文件来实现域名解析:

 
  
  1. 在/etc/hosts文件中和Win7的hosts文件中添加如下四行内容,以实现域名解析  
  2. 172.16.26.1     www.magedu.com  
  3. 172.16.26.1     pma.magedu.com  
  4. 172.16.26.1     wp.magedu.com 
  5. 172.16.26.1 linli.linux //linli.linux是我的主机名,如果你的主机名不是
  6. 新设置,这一行是没有必要的。

3、phpMyAdmin的认证过程是依赖于时间的,所以要保证cookie时间要和本地时间保持一致:

 
  
  1. 使用hwclock可以使用同步时间  
  2. [root@linli ~]# hwclock -s  
  3. [root@linli ~]# date  
  4. Tue Jul  3 10:48:06 CST 2012 

 


二、构建LAMP平台:

1、使用光盘配置yum源
 (1)挂载光盘(注意:挂载的光盘要有php53相关的rpm包):

为了可以在每次启动时/dev/cdrom可以自动挂载,可以编辑/etc/fstab添加如下一行:

 
  
  1. /dev/cdrom              /dev/cdrom              iso9660 defaults        0 0 

 

(2)编辑/etc/yum.repos.d/my_yum.repo文件,添加内容如下:

 
  
  1. [base]  
  2. name=Server 
  3. baseurl=file:///mnt/cdrom/Server  
  4. gpgcheck=0 
  5. enabled=1 
  6.  
  7. [Cluster]  
  8. name=Cluster 
  9. baseurl=file:///mnt/cdrom/Cluster  
  10. gpgcheck=0 
  11. enabled=1 
  12.  
  13. [ClusterStorage]  
  14. name=ClusterStorage 
  15. baseurl=file:///mnt/cdrom/ClusterStorage  
  16. gpgcheck=0 
  17. enabled=1 
  18.  
  19. [VT]  
  20. name=VT 
  21. baseurl=file:///mnt/cdrom/VT  
  22. gpgcheck=0 
  23. enabled=1 

(3)此时可以先使用命令yum clean all 清除一下缓存数据,然后使用yum repolist看看yum源是否配置成功。

2、用rpm包安装web服务,提供LAMP平台

 
  
  1. [root@linli ~]# yum -y install httpd php53 php53-mbstring php53-mysql mysql myql-server 

注意:要安装php53,是为了安装phpMyAdmin;因为phpMyAdmin-3.4的系列和phpMyAdmin-3.5的系列要求安装的php是5.3以后的版本。

3、配置3个虚拟主机
 (1)创建web服务器提供网页的目录

 
 (2)修改httpd配置文件,添加3个基于主机名的虚拟主机

 
  
  1. [root@linli ~]# vim /etc/httpd/conf/httpd.conf   
  2. #注释DocumentRoot  
  3. #DocumentRoot "/var/www/html"  
  4.  
  5. #将NameVirtualHost的注释去掉  
  6. NameVirtualHost *:80  
  7.  
  8. #让httpd支持php网页
  9. DirectoryIndex index.php index.html index.html.var
  10.  
  11. #设置虚拟主机  
  12. <VirtualHost 172.16.26.1:80> 
  13.   ServerName www.magedu.com  
  14.   DocumentRoot /web/vhosts/www  
  15. </VirtualHost> 
  16.  
  17. <VirtualHost 172.16.26.1:80> 
  18.   ServerName pma.magedu.com  
  19.   DocumentRoot /web/vhosts/pma  
  20. </VirtualHost> 
  21.  
  22. <VirtualHost 172.16.26.1:80> 
  23.   ServerName wp.magedu.com  
  24.   DocumentRoot /web/vhosts/wp  
  25. </VirtualHost> 

 (3)使用命令httpd -t 测试httpd的配置文件是否有语法,然后启动服务就OK了

 4、为3个虚拟主机提供网页,并测试:
 

 
  
  1. [root@linli ~]# echo "<h1>www.magedu.com</h1>> /web/vhosts/www/index.html  
  2. [root@linli ~]# echo "<h1>pma.magedu.com</h1>> /web/vhosts/pma/index.html  
  3. [root@linli ~]# echo "<h1>wp.magedu.com</h1>> /web/vhosts/wp/index.html 

5、启动mysqld, 首次启动会做mysql初始化:

 
  
  1. [root@linli ~]# service mysqld start 

6、设置服务开机自动启动

 
  
  1. [root@linli ~]# chkconfig httpd on  
  2. [root@linli ~]# chkconfig mysqld on  

注意:
        php在这种模型下默认是以apache的模块存在的,所以apache服务启动来,php就不用启动了。

7、测试php能否连上mysql

 
  
  1. [root@linli ~]# vim /web/vhosts/www/index.html <h1>www.magedu.com</h1> 
  2. <?php 
  3.   $link=mysql_connect('localhost','root','redhat');  
  4.   if ($link)  
  5.     echo "Success!!!";  
  6.   else   
  7.     echo "Faulure...";  
  8.  
  9. mysql_close();  
  10. ?> 


三、为www.magedu.com安装discuz论坛:

(1)解压缩Discuz软件包,并将upload目录下的所有文件复制到/web/vhosts/www/目录中:

 
  
  1. unzip Discuz_7.2_FULL_SC_GBK.zip   
  2. mv upload/* /web/vhosts/www/  

(2)在浏览器中输入www.magedu.com/install 开始安装Discuz:

  此时会出现一些小问题只需要按提示做就OK了。

将小问题汇总如下:

 
  
  1. //在一打开网页你就会看到是乱码,这时你只需要修改一下httpd的配置文件注释UTF-8这一行,并重启httpd服务即可:  
  2. [root@linli ~]# vim /etc/httpd/conf/httpd.conf   
  3. #AddDefaultCharset UTF-8  
  4. [root@linli ~]# service httpd restart  
  5. Stopping httpd:                                            [  OK  ]  
  6. Starting httpd:                                            [  OK  ]  
  7. //上面配置好之后,刷新一下页面,当你点击下一步时,会让你编辑/etc/php.ini文件将short_open_tag设置为on,然后重启服务即可:  
  8. [root@linli ~]# vim /etc/php.ini  
  9. short_open_tag = on 
  10. [root@linli ~]# service httpd restart  
  11. Stopping httpd:                                            [  OK  ]  
  12. Starting httpd:     
  13. //刷新页面之后,到开始安装界面,你会看到目录、文件权限有问题,按照提示一步一步的将文件权限设置对就OK了  
  14. [root@linli ~]# cd /web/vhosts/www/  
  15. [root@linli www]# setfacl -m u:apache:rw config.inc.php   
  16. [root@linli www]# setfacl -m u:apache:rwx p_w_uploads/ forumdata/ forumdata/cache/ forumdata/templates forumdata/threadcaches/ forumdata/logs/ uc_client/data/cache/    
  17. //在安装数据库界面下,需要填写数据库用户名和密码,此时使用root是不安全的,所以新建一个discuz用户添加密码,并授权:   
  18. mysql> Create USER discuz@'localhost' IDENTIFIED BY 'redhat';  
  19. Query OK, 0 rows affected (0.01 sec)  
  20.  
  21. mysql> GRANT all ON discuz.* TO discuz@'localhost';   
  22. Query OK, 0 rows affected (0.00 sec) 

 

 

四、为pma.magedu.com安装phpMyAdmin:

    phpMyAdmin是一个非常好的基于web页面实现MySQL管理的GUI,客户端只需要有一个浏览器即可。

 1、安装phpMyAmin:
 phpMyAmin-3.5.1-all-languages.tar.bz2是web服务器的网页页面,将解压之后的内容移动到可执行目录中或网页目录中即可:

 
  
  1. [root@linli ~]# tar xf phpMyAdmin-3.5.1-all-languages.tar.bz2   
  2. [root@linli ~]# cd phpMyAdmin-3.5.1-all-languages  
  3. [root@linli phpMyAdmin-3.5.1-all-languages]# mv * /web/vhosts/pma  
  4. [root@linli phpMyAdmin-3.5.1-all-languages]# cd /web/vhosts/pma/ 

 
2、pma运行起来需要一个配置文件,在当前目录下有一个config.sample.inc.php文件,这是一个pma的样例配置文件,只需要把它重命名一下,改为config.inc.php:

 
  
  1. [root@linli pma]# cp config.sample.inc.php config.inc.php 

 
3、修改pma的配置文件
    由于pma是通过浏览器来浏览、管理我们的MySQL服务器,但在管理时需要一个账号密码才可以进行管理,而这个账号密码是通过互联网发送。http又是明文传输的,所以要修改一下配置文件的下面这一行内容:

 
  
  1. [root@linli pma]# vim config.inc.php   
  2. cfg['blowfish_secret'] = 'skjfaoiursnfvksjfhdskdh' 

   
    注意:
        (1)blowfish_secret:是为了加密用户在客户端浏览器中产生的cookie信息,是一种安全防护机制。如果不加密,别人就可以通过cookie直接连上我们的MySQL服务器。
 (2)'skjfaoiursnfvksjfhdskdh':是随便输入的一段字符串。

4、blowfish_secret只是为了保证cookie是加密的;但http在传输中还是明文的,为了保证http在传输中也是密文的就需要安装SSL。
 
(1)配置CA服务器

 
  
  1. //修改保存目录  
  2. [root@linli ~]# vim /etc/pki/tls/openssl.cnf  
  3. dir             = /etc/pki/CA   
  4.  
  5. //创建CA所需要的目录及文件   
  6. [root@linli ~]# cd /etc/pki/CA  
  7. [root@linli CA]# mkdir certs newcerts crl  
  8. [root@linli CA]# touch index.txt  
  9. [root@linli CA]# echo 01 > serial 

(2)自签证书

 
  
  1. [root@linli CA]# (umask 077;openssl genrsa 2048 > private/cakey.pem)  
  2. Generating RSA private key, 2048 bit long modulus  
  3. .......................+++  
  4. .................................................................................+++  
  5. e is 65537 (0x10001)  
  6. [root@linli CA]# openssl req -x509 -new -key private/cakey.pem -out cacert.pem -days 3650  
  7. You are about to be asked to enter information that will be incorporated  
  8. into your certificate request.  
  9. What you are about to enter is what is called a Distinguished Name or a DN.  
  10. There are quite a few fields but you can leave some blank  
  11. For some fields there will be a default value,  
  12. If you enter '.', the field will be left blank.  
  13. -----  
  14. Country Name (2 letter code) [GB]:ZG  
  15. State or Province Name (full name) [Berkshire]:HenNan  
  16. Locality Name (eg, city) [Newbury]:ZZ  
  17. Organization Name (eg, company) [My Company Ltd]:magedu.ca  
  18. Organizational Unit Name (eg, section) []:Tech  
  19. Common Name (eg, your name or your server's hostname) []:ca  
  20. Email Address []: 

(3)httpd服务器申请CA为自己签署证书

 
  
  1. [root@linli pma]# mkdir ssl  
  2. [root@linli pma]# cd ssl  
  3. [root@linli ssl]# (umask 077;openssl genrsa 1024 > httpd.key)  
  4. Generating RSA private key, 1024 bit long modulus  
  5. .....++++++  
  6. ..........++++++  
  7. e is 65537 (0x10001)  
  8. [root@linli ssl]# openssl req -new -key httpd.key -out httpd.csr  
  9. You are about to be asked to enter information that will be incorporated  
  10. into your certificate request.  
  11. What you are about to enter is what is called a Distinguished Name or a DN.  
  12. There are quite a few fields but you can leave some blank  
  13. For some fields there will be a default value,  
  14. If you enter '.', the field will be left blank.  
  15. -----  
  16. Country Name (2 letter code) [GB]:ZG  
  17. State or Province Name (full name) [Berkshire]:HenNan  
  18. Locality Name (eg, city) [Newbury]:ZZ  
  19. Organization Name (eg, company) [My Company Ltd]:pma.magedu.com  
  20. Organizational Unit Name (eg, section) []:Tech  
  21. Common Name (eg, your name or your server's hostname) []:linli.linux                      
  22. Email Address []:  
  23.  
  24. Please enter the following 'extra' attributes  
  25. to be sent with your certificate request  
  26. A challenge password []:  
  27. An optional company name []:
  28. //CA签署证书 
  29. [root@linli ssl]# openssl ca -in httpd.csr -out httpd.crt -days 3650  
  30. Using configuration from /etc/pki/tls/openssl.cnf  
  31. Check that the request matches the signature  
  32. Signature ok  
  33. The organizationName field needed to be the same in the  
  34. CA certificate (magedu.ca) and the request (pma.magedu.com) 


 
 
5、使用浏览器测试访问pma.magedu.com:

 注意:

 (1)默认是不支持root空密码访问的,所以需要设置mysql数据库中的user表中的root用户所对应的密码

(2)安装PHP扩展时,只需使用rpm命令安装libmcrypt和php53-mcrypt包即可。


五、为wp.magedu.com安装wordpress:

 wordpress在全球是最流行的站点快速构建工具之一,是一个个人博客系统。模块化设计,支持模块、CMS等各种接口。

1、安装wordpress软件包:

 
  
  1. # unzip wordpress-3.3.1-zh_CN.zip  
  2. # mv wordpress/* /web/vhosts/wp/ 

2、使用浏览器输入wp.magedu.com,然后按提示一步一步安装即可,最后成功的界面如下:

注意:

(1)添加过数据库、用户,并给用户授予权限之后,需要重启mysqld。