rhel5 LAMP配置详解

LAMP是什么这里就不做过多的介绍了,下面将在一台默认安装有rhel5.8的系统上安装配置LAMP平台以及apache的各种应用,及php的一些经典应用.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
目录
一.安装apache,php,mysql
二.配置基于域名的虚拟主机
三.配置用户认证
四.配置HTTPS
五.配置个人主页
六.配置别名
七.配置客户端访问控制
八.安装PhpMyAdmin
九.安装Discuz论坛

 注: 二到七都是apache各种应用场景的配置;
       八是安装一个基于PHP语言写的MySQL数据库网页管理工具;
       九是安装一个PHP的经典应用Discuz的论坛;

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
一.安装apache,php,mysql
1.  使用yum安装,使用yum默认安装好不许要做任何配置就是一个基本的LAMP平台,RHEL5.8的系统上php提供了两个版本,这里主要是以5.3的为例

  1. #yum -y install httpd php53 php53-mysql php53-mbstring mysql-server 

2.启动httpd服务及mysql服务

  1. #service httpd start 
  2. #service mysqld start 
  3. #chkconfig httpd on 
  4. #chkconfig mysqld on 

二.配置基于域名的虚拟主机
1.  编辑httpd主配置文件

  1. #vim /etc/httpd/conf/httpd.conf 修改内容如下  
  2. #DocumentRoot "/var/www/html"  #注释此行 一般在文件的280上下  
  3. Include conf/vhost/*.conf  #虚拟主机的配置文件统一存放到/etc/httpd/conf/vhost/*conf 
  4. NameVirtualHost *:80  
  5.  
  6. 创建存放虚拟主机配置文件的目录 
  7. #mkdir /etc/httpd/conf/vhost 

2.配置虚拟主机,[站点一 www.andy.com 站点二 pma.andy.com 站点三 bbs.andy.com .三个    站点的根目录在/web/{www,pma,bbs}]

  1. #vim /etc/httpd/conf/vhost/www.andy.com.conf  #内容如下 
  2. <VirtualHost *:80> 
  3.         ServerAdmin     [email protected] #管理员的邮箱
  4.         DocumentRoot    /web/www  #网站根目录
  5.         ServerName      www.andy.com  #域名
  6.         ErrorLog        logs/www.andy.com.err.log  #错误日志
  7.         CustomLog       logs/www.andy.com.access.log common #访问日志 
  8. </VirtualHost> 
  9.  
  10. #vim /etc/httpd/conf/vhost/pma.andy.com.conf    #内容如下 
  11. <VirtualHost *:80> 
  12.         ServerAdmin     [email protected] 
  13.         DocumentRoot    /web/pma 
  14.         ServerName      pma.andy.com 
  15.         ErrorLog        logs/pma.andy.com.err.log 
  16.         CustomLog       logs/pma.andy.com.access.log common 
  17. </VirtualHost> 
  18.  
  19. #vim /etc/httpd/conf/vhost/bbs.andy.com.conf 
  20. <VirtualHost *:80> 
  21.         ServerAdmin     [email protected] 
  22.         DocumentRoot    /web/bbs 
  23.         ServerName      bbs.andy.com 
  24.         ErrorLog        logs/bbs.andy.com.err.log 
  25.         CustomLog       logs/bbs.andy.com.access.log common 
  26. </VirtualHost> 

3.建立网站根目录及建立测试页面

  1. #mkdir -p /web/{www,pma,bbs} 
  2. #echo "www" > /web/www/index.html 
  3. #echo "pma" > /web/pma/index.html 
  4. #echo "bbs" > /web/bbs/index.html

4.启动httpd服务及测试三个站点是否能正常访问,首先要保证三个域名要能解析或者写    入hosts文件,这里使用DNS服务器解析的.

  1. #service httpd start  



可以看到访问正常,虚拟主机的配置是ok的,

 

三.配置用户认证
     apache默认的情况下,允许客户端匿名访问.可能在某些时候我们需要用户输入用户
     名密码后才能看到网站的内容的时候,就可以配置用户认证.apche可以实现基本身份
      认证(密码在传输的过程中使用明文传输),和摘要认证(使用hash算法传输密码).
      apche 对基本身份认证有良好的支持,下面就配置使用基本身份认证用户来源于
      htpasswd工具生成的用户名密码认证,和mysql数据库.

1.  使用htpasswd命令生成的用户名密码认证方式
1.1 生成用户名密码的文件

  1. #htpasswd -cm /etc/httpd/conf/.auth andy 
  2. #htpasswd -m /etc/httpd/conf/.auth test 
  3. 创建两个用户andy test  
  4. -c 选项是创建一个新的文件,如果是第一次生成需要-c选项 
  5. -m 选项是使用md5加密存放密码 
  6. -D 选项是删除一个用户 如#htpasswd -D /etc/httpd/conf/.auth name

1.2 配置对网站www.andy.com做身份认证对应网站根目录为/web/www

  1. #vim /etc/httpd/conf/vhost/www.andy.com.conf  内容如下 
  2. <VirtualHost *:80> 
  3.         ServerAdmin        [email protected] 
  4.         DocumentRoot       /web/www 
  5.         ServerName         www.andy.com 
  6.         ErrorLog           logs/www.andy.con.err.log 
  7.         CustomLog          logs/www.andy.com.access.log common 
  8.         <Directory "/web/www"> 
  9.                 Options  None 
  10.                 AllowOverride        AuthConfig #开启认证
  11.                 AuthType             Basic #认证类型
  12.                 AuthName             xxxx #自己随便定义 
  13.                 AuthUserFile         /etc/httpd/conf/.auth  #指定认证文件的位置
  14.                 Require  valid-user #用户访问权限,这里表示允许所有用户访问 
  15.         </Directory> 
  16. </VirtualHost>
  17.  
  1. 重新启动httpd服务 
  2. #service httpd restart 


1.3 测试认证

可以看到输入用户名密码就行了

2.  用户来源使用mysql数据库认证
2.1使用mysql数据库认证需要安装一个认证模块mod_auth_mysql 

  1. #yum -y install mod_auth_mysql 

2.2 创建认证的数据库及表和用户

  1. #mysql 
  2. CREATE DATABASE auth;  
  3. USE auth 
  4. CREATE TABLE users(name char(16),pwd char(16),PRIMARY KEY(name)); 
  5. INSERT INTO users(name,pwd) VALUES ('andy',ENCRYPT('redhat')); 
  6. INSERT INTO users(name,pwd) VALUES ('test',ENCRYPT('redhat')); 
  7. CRANT SELECT ON auth.* TO auth@localhost IDENTIFIED BY 'passwd'; 
  8. FLUSH PRIVILEGES; 
  9. #上面的sql语句是创建一个auth的数据库跟users的表和两个字段name pwd
  10. #然后添加两个用户andy test 密码为redhat并加密存放

2.3 配置对网站www.andy.com做身份认证对应网站根目录为/web/www

  1. <VirtualHost> 
  2.         ServerAdmin        [email protected] 
  3.         DocumentRoot       /web/www 
  4.         ServerName         www.andy.com 
  5.         ErrorLog           logs/www.andy.com.err.log 
  6.         CustomLog          logs/www.andy.com.access.log common 
  7.         <Directory "/web/www"> 
  8.                 Options                   None 
  9.                 AllowOverride             AuthConfig 
  10.                 AuthType                  Basic 
  11.                 AuthName                  andyauth 
  12.                 AuthMySqlEnable           on  #开启数据库认证
  13.                 AuthMySqlUser             auth  #访问mysql数据库的用户即上面创建那个用户
  14.                 AuthMySqlPassword         passwd  #访问mysql数据库用户的密码
  15.                 AuthMySqlDB               auth  #用户认证的数据库
  16.                 AuthMySqlUserTable        users  #用户认证的表
  17.                 AuthMySqlNameField        name  #用户名的字段
  18.                 AuthMySqlPasswordField    pwd  #密码的字段
  19.                 Requidre                  valid-user 
  20.         </Directory> 
  21. </VirtualHost> 
  1. 重启httpd服务 
  2. #service httpd restart 

注:我们知道http协议在传输的过程中是明文传送的,像我们配置的基于基本用户认证
的方式,用户名密码也是明文传送的,这样是很不安全的,下面将配置HTTPS使用ssl加密传输数据.


四.配置https,使用自颁发证书实现
把www.andy.com网站配置成https 网站根目录位于/web/www
1.安装mod_ssl模块

  1. #yum -y install mod_ssl 

2.创建网站的私钥以及网站证书,   {由于自颁发证书是只https所使用的证书不是由一个权威的CA机构所颁发,这样的话在客户端在访问网站时会提示“该证书不是由您没有信
 任的公司所颁发“ 或类似警告信息.}

  1. 创建用于存放证书的目录 
  2. #mkdir /etc/httpd/.sslkey
  3.  
  4. 建立网站私钥文件 
  5. #cd /etc/httpd/.sslkey 
  6. #openssl genrsa -out https.key 
  7.  
  8. 创建网站证书文件,在这里需要注意的是,创建证书的过程会提示输入一些信息可以根据自己的需要去输入, 
  9. 但“Common Name”这项必须输入的是客户端访问网站时的FQDN 即域名 
  10. #openssl req -new -x509 -key https.key -out https.crt 
  11.  
  12. 处于安全的考虑,可以把证书存放目录的权限设为400 
  13. #chmod 400 /etc/httpd/.sslkey 

3.配置www.andy.com为https

  1. #vim /etc/httpd/conf/vhost/www.andy.com.conf  内容如下 
  2. NameVirtualHost *:443 
  3. <VirtualHost *:443> 
  4.     ServerAdmin     [email protected] 
  5.     DocumentRoot        /web/www 
  6.     ServerName      www.andy.com 
  7.     SSLEngine       on  #开启ssl
  8.     SSLCertificateFile      /etc/httpd/.sslkey/https.crt  #指定网站证书文件
  9.     SSLCertificateKeyFile   /etc/httpd/.sslkey/https.key  #指定网站私钥文件
  10. 如果不需要认证的话下面的可以不配置
  11. <Directory "/web/www">  
  12.                 Options                   None  
  13.                 AllowOverride             AuthConfig  
  14.                 AuthType                  Basic  
  15.                 AuthName                  andyauth  
  16.                 AuthMySqlEnable           on         
  17.                 AuthMySqlUser             auth        
  18.                 AuthMySqlPassword         passwd      
  19.                 AuthMySqlDB               auth        
  20.                 AuthMySqlUserTable        users       
  21.                 AuthMySqlNameField        name        
  22.                 AuthMySqlPasswordField    pwd         
  23.                 Requidre                  valid-user  
  24.         </Directory>  
  25. </Directory>
  1. 重启httpd服务 
  2. #service httpd restart 

4.测试, 需要注意的是访问url是https://www.andy.com

上图可以看到由于证书不是信任的CA机构颁发才提示此信息,不过没关系点击 “仍然继续” 出现下图

可以看到提示输入用户名密码,这个是由于配置了用户认证,现在用户名密码就是经过ssl加密过后在互联网上传输的.

 

五.配置个人主页
     所谓个人主页其实就是apache以每个系统用户家目录中指定的目录来做为一个网站
     实在还不明白的话看下面配置就知道了,配置很简单只需要在apache的主配置文件里
     启用UserDir选项即可.配置如下
1.编辑主配置文件,启用UserDir

  1. #vim /etc/httpd/conf/httpd.conf   
  2. #UserDir disable   默认是禁用的需要注释掉 
  3. UserDir  public_html  启用个人主页 
  4.  
  5. 上面的选项在rpm包安装的apache主配置文件355行上下 

ok 配置就结束了,就这么简单,下面来创建个系统用户测试测试
2.创建系统用户

  1. 创建redhat用户 
  2. #useradd redhat 
  3.  
  4. 创建用于存放网页的目录 
  5. #mkdir /home/redhat/public_html      
  6.  
  7. 修改redhat用户家目录权限,因为我们知道运行httpd的用户是apache用户,我们访问网页的时候apache用户要读取页面文件, 
  8. 而用户的家目录默认只有用户自己有权限读写, 
  9. #chmod 705 -R /home/redhat/  
  10.  
  11. 建立测试页面 
  12. #echo "<h1>redhat</h1>" /home/redhat/public_html/index.html
  1. 重启httpd服务 
  2. #service httpd restart 

3.测试.访问用户的个人主页的URL是http://服务器IP地址或域名/~用户名

可以看到输入http://www.andy.com/~redhat 访问到redhat用户的主页了,但是这样的URL显然不是很友好,我们可以把用户的网页目录链接到某个网站的
根目录下就可以通过http://某网站的域名/用户  访问了

 

六.别名配置
     对于有些太长的URL在apache中可以通过别名的配置减少客户端URL的长度
1.比如我们正常访问的URL为http://pma.andy.com/phpmyadmin可以通过别名设置为http://pam.andy.com/pam 配置如下

  1. #vim /etc/httpd/conf/vhost/pam.andy.com.conf  内容如下 
  2. <VirtualHost *:80> 
  3.         ServerAdmin     [email protected] 
  4.         DocumentRoot    /web/pma 
  5.         ServerName      pma.andy.com 
  6.         ErrorLog        logs/pma.andy.com.err.log 
  7.         CustomLog       logs/pma.andy.com.access.log common 
  8.         Alias   /pma     /web/pma/phpmyadmin 
  9. </VirtualHost> 
  1. 重启httpd服务 
  2. #service httpd restart 

2.除了URL别名外还可以使用ServerAlias,
   比如我们通过http://pma.andy.com能访问到/web/pma下面的内容外还可以使用http://phpmyadmin.andy.com访问问到/web/pma下面的内容 需要注意的是phpmyadmin.andy.com 这个域名客户端要能通过DNS服务器解析,我试过添加hosts文件貌似不行 ,ServerAlias配置如下

  1. #vim /etc/httpd/conf/vhost/pma.andy.com.conf  内容如下 
  2. <VirtualHost *:80> 
  3.         ServerAdmin     [email protected] 
  4.         DocumentRoot    /web/pma 
  5.         ServerName      pma.andy.com 
  6.         ErrorLog        logs/pma.andy.com.err.log 
  7.         CustomLog       logs/pma.andy.com.access.log common 
  8.         Alias   /pma    /web/pma/phpmyadmin 
  9.         ServerAlias     phpmyadmin.andy.com 
  10. </VirtualHost> 
  1. 重新启动httpd服务 
  2. #service httpd restart 

3.除了上面两种之外还可以使用脚本别名ScriptAlias
   处于安全的考虑apache中的CGI脚本只运行在特定的目录下运行,那么我们希望在其他目录中运行CGI脚本的时候就可以使用ScriptAlias定义脚本别名来实现
比如说我们希望在/web/pam/cgi目录运行脚本 如下

  1. #vim /etc/httpd/conf/vhost/pma.andy.com.conf  内容如下 
  2. <VirtualHost *:80> 
  3.         Options ExecCGI 
  4.         ServerAdmin     [email protected] 
  5.         DocumentRoot    /web/pma 
  6.         ServerName      pma.andy.com 
  7.         ErrorLog        logs/pma.andy.com.err.log 
  8.         CustomLog       logs/pma.andy.com.access.log common 
  9.         ScriptAlias     /cgi /web/pma/cgi 
  10. </VirtualHost> 
  1. 重新启动httpd服务 
  2. #service httpd restart 

 

七.客户端访问控制
     在默认的情况下apache允许所有客户端访问,我们可以通过一系列的访问权限对客户端的来源进行访问控制,
(1) Order  Allow,Deny
      默认拒绝所有,当Allow from 跟Deny from 冲突的时候Deny from 优先
(2) Oreer Deny,Allow
     默认允许所有,当Allow from 跟Deny from 冲突的时候Allow from 优先
                                           
(客户端的来源定义方法)如下
IP指定单一主机                                           192.168.0.1
指定网段                                                      192.168.0.0/24
指定网段                                                      192.168.0.0/255.255.255.0
域名单一主机                                               test.andy.com
域名指定范围                                               .andy.com
所有客户端                                                   all

1.下面给出两个例子

  1. #vim /etc/httpd/conf/vhost/pma.andy.com.conf  如下 
  2. <VirtualHost *:80> 
  3.         ServerAdmin     [email protected] 
  4.         DocumentRoot    /web/pma 
  5.         ServerName      pma.andy.com 
  6.         ErrorLog        logs/pma.andy.com.err.log 
  7.         CustomLog       logs/pma.andy.com.access.log common 
  8.         <Directory "/web/pma"> 
  9.                 Order Allow,deny 
  10.                 Allow From all 
  11.                 Deny  From 192.168.0.0/24 
  12.                 Deny  From .andy.com 
  13.         </Directory>
  14. </VirtualHost> 
  15.  
  16. 默认拒绝所有, 
  17. 除了192.168.0.0/24网段跟andy.com域的所有主机不能访问外,其他都允许访问/web/pma目录里的内容
  1. #vim /etc/httpd/conf/vhost/pma.andy.com.conf  如下  
  2. <VirtualHost *:80>  
  3.         ServerAdmin     [email protected]  
  4.         DocumentRoot    /web/pma  
  5.         ServerName      pma.andy.com  
  6.         ErrorLog        logs/pma.andy.com.err.log  
  7.         CustomLog       logs/pma.andy.com.access.log common  
  8.         <Directory "/web/pma">  
  9.                 Order Deny,Allow  
  10.                 Deny  From all  
  11.                 Allow  From 192.168.0.1  
  12.                 Allow  From client.andy.com 
  13.         </Directory> 
  14. </VirtualHost>  
  15.  
  16. 默认允许所有, 
  17. 除了192.168.0.1主机跟client.andy.com主机外其他都不能访问此/web/pma目录的内容 

备注:Allow From  ,Deny From 可以根据自己的需要随意调整,

 

八.配置安装PhpMyAdmin,
    phpmyadmin 是一个由php语言写的mysql数据库管理工具,基于网页的形式,配置和使用都非常简单,
1.下载,并配置phpmyadmin,安装完成后我们期望使用http://pma.andy.com访问到phpmyadmin,  站点根目录位于/web/pma

  1. 下载页面 自行选择相应的版本
  2. http://www.phpmyadmin.net/home_page/downloads.php 
  3.  
  4. 下载完成后配置如下 
  5. #tar xavf phpMyAdmin-3.5.1-all-languages.tar.gz 
  6. #mv phpMyAdmin-3.5.1-all-languages/* /web/pma/ 
  7. #mv /web/pma/config.inc.php /web/pma/config.inc.php 
  8. 处于安全的考虑,需要修改下cookie认证的字符串 
  9. #vim /web/pma/config.inc.php 
  10. $cfg['blowfish_secret'] = 'xxx';   xxx自己随便定义一个字符串就可以了,这个配置项一般在文件中17行上下
  11. 由于上面安装mysql的时候没有设置管理员密码,phpmyadmin默认不允许空密码登录,
  12. #mysqladmin -u root password redhat 

2.测试,在浏览器中输入http://pma.andy.com就可以看到一个登录界面,输入mysql的用户名密码,就可以享受phpmyamin的旅程了,需要注意的是上面说过http协议在网络中传输数据时是明文的方式,所以用户名密码也是明文传输的,可以以使用https这样的话,数据在传输的过程中是通过ssl加密的,https的配置方法上面有介绍,这里就做介绍了.

可以看到,能正常使用了.

 

九.配置安装php经典应用Discuz论坛
     安装一个完整的论坛需要装两个程序1.用户管理中心(ucenter) 2.论坛程序(dsicuz),安装完成后我们期望使用http://bbs.andy.com访问到论坛  站点根目录位于/web/bbs  配置如下
1.下载并配置ucenter和dsicuz

  1. #wget http://download.comsenz.com/UCenter/1.5.2/UCenter_1.5.2_SC_UTF8.zip 
  2. #wget http://download.comsenz.com/Discuz/7.2/Discuz_7.2_SC_UTF8.zip 
  3. #unzip UCenter_1.5.2_SC_UTF8.zip -d ucenter 
  4. #unzip unzip Discuz_7.2_SC_UTF8.zip -d discuz 
  5. #mv ucenter/upload /web/bbs/ucenter 
  6. #mv discuz/upload/* /web/bbs/ 
  7. #cd /web/bbs/ucenter 
  8. #touch data/config.inc.php
  9. #chmod a+w data/config.inc.php data/ data/cache/ data/view/ data/avatar/ data/logs/ data/backup/ data/tmp/
  10. #cd /web/bbs/ 
  11. #chmod a+w config.inc.php p_w_uploads/ forumdata/ forumdata/cache/ forumdata/templates/ forumdata/threadcaches/ forumdata/logs/ uc_client/data/cache/
  12. #vim /etc/php.ini 修改php配置文件里的short_open_tag项
  13. short_open_tag = On 一般在文件中230行上下

2.创建论坛所需数据库

  1. #mysql -u root -p 
  2. CREATE DATABASE bbs; 
  3. GRANT ALL ON bbs.* TO bbs@localhost IDENTITFIED BY 'passwd'; 
  4. FLUSH PRIVILEGES; 

3.安装ucenter用户管理中心,在浏览器中输入http://bbs.andy.com/ucenter/install

3.1 是否同意授权协议>点同意

3.2 安装前的一系列检查, >下一步

3.3 配置数据库信息,这里输入的信息就是刚刚创建的数据及用户名密码, 创始人密码那里是指 ucenter用户管理中心的密码 自己定义  >下一步

3.4 安装数据库,数据库安装完成ucenter基本就安装好了

3.5 ucenter登录界面 ,这里需要注意的是密码是上面自己定义的创始人密码, 验证码有点不清晰,多点几下登录看到清晰的再输入验证码


4. 利用ucenter后台安装discuz论坛
4.1 在ucenter用户管理中心>点击应用管理>点击添加新应用(出现下图) >在应用程序安装地址中输入http://bbs.andy.com/install 然后点击安装    

4.2 是否同意授权

4.3 检查一系列配置

4.4 设置运行环境, 这里需要注意的是域名一定要是客户端能通过dns服务器解析的,dns服务器的配置见上篇博客

4.5 配置安装数据库  这里输入的管理员密码是论坛的管理员密码

4.6 正在安装数据库

4.7 输入个人信息

4.8 安装成功,可以看到论坛的页面了

ok.配置到这里论坛已经安装成功了访问论坛的url是http://bbs.andy.com 访问用户管理中心的url是http://bbs.andy.com/ucenter 慢慢享受discuz论坛之旅吧,

配置到这里整篇博客也算是完工了,上面涉及到的知识点都可以根据自己的需求灵活应用.

感言:有点累,睡一会儿去.

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章