您的位置:首页 > 理论基础 > 计算机网络

rhel5 LAMP配置详解 推荐

2012-07-02 20:31 435 查看
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的为例

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

2.启动httpd服务及mysql服务

#service httpd start
#service mysqld start
#chkconfig httpd on
#chkconfig mysqld on

二.配置基于域名的虚拟主机

1. 编辑httpd主配置文件

#vim /etc/httpd/conf/httpd.conf 修改内容如下
#DocumentRoot "/var/www/html"  #注释此行 一般在文件的280上下
Include conf/vhost/*.conf  #虚拟主机的配置文件统一存放到/etc/httpd/conf/vhost/*conf
NameVirtualHost *:80

创建存放虚拟主机配置文件的目录
#mkdir /etc/httpd/conf/vhost

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

#vim /etc/httpd/conf/vhost/www.andy.com.conf  #内容如下
<VirtualHost *:80>
ServerAdmin     admin@andy.com #管理员的邮箱
DocumentRoot    /web/www  #网站根目录
ServerName      www.andy.com  #域名
ErrorLog        logs/www.andy.com.err.log  #错误日志
CustomLog       logs/www.andy.com.access.log common #访问日志
</VirtualHost>

#vim /etc/httpd/conf/vhost/pma.andy.com.conf    #内容如下
<VirtualHost *:80>
ServerAdmin     admin@andy.com
DocumentRoot    /web/pma
ServerName      pma.andy.com
ErrorLog        logs/pma.andy.com.err.log
CustomLog       logs/pma.andy.com.access.log common
</VirtualHost>

#vim /etc/httpd/conf/vhost/bbs.andy.com.conf
<VirtualHost *:80>
ServerAdmin     admin@andy.com
DocumentRoot    /web/bbs
ServerName      bbs.andy.com
ErrorLog        logs/bbs.andy.com.err.log
CustomLog       logs/bbs.andy.com.access.log common
</VirtualHost>

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

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

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

#service httpd start








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

三.配置用户认证

apache默认的情况下,允许客户端匿名访问.可能在某些时候我们需要用户输入用户

名密码后才能看到网站的内容的时候,就可以配置用户认证.apche可以实现基本身份

认证(密码在传输的过程中使用明文传输),和摘要认证(使用hash算法传输密码).

apche 对基本身份认证有良好的支持,下面就配置使用基本身份认证用户来源于

htpasswd工具生成的用户名密码认证,和mysql数据库.

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

1.1 生成用户名密码的文件

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

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

#vim /etc/httpd/conf/vhost/www.andy.com.conf  内容如下
<VirtualHost *:80>
ServerAdmin        admin@andy.com
DocumentRoot       /web/www
ServerName         www.andy.com
ErrorLog           logs/www.andy.con.err.log
CustomLog          logs/www.andy.com.access.log common
<Directory "/web/www">
Options              None
AllowOverride        AuthConfig #开启认证
AuthType             Basic #认证类型
AuthName             xxxx #自己随便定义
AuthUserFile         /etc/httpd/conf/.auth  #指定认证文件的位置
Require              valid-user #用户访问权限,这里表示允许所有用户访问
</Directory>
</VirtualHost>

重新启动httpd服务
#service httpd restart


1.3 测试认证





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

2. 用户来源使用mysql数据库认证

2.1使用mysql数据库认证需要安装一个认证模块mod_auth_mysql

#yum -y install mod_auth_mysql

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

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

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

<VirtualHost>
ServerAdmin        admin@andy.com
DocumentRoot       /web/www
ServerName         www.andy.com
ErrorLog           logs/www.andy.com.err.log
CustomLog          logs/www.andy.com.access.log common
<Directory "/web/www">
Options                   None
AllowOverride             AuthConfig
AuthType                  Basic
AuthName                  andyauth
AuthMySqlEnable           on         #开启数据库认证
AuthMySqlUser             auth       #访问mysql数据库的用户即上面创建那个用户
AuthMySqlPassword         passwd     #访问mysql数据库用户的密码
AuthMySqlDB               auth       #用户认证的数据库
AuthMySqlUserTable        users      #用户认证的表
AuthMySqlNameField        name       #用户名的字段
AuthMySqlPasswordField    pwd        #密码的字段
Requidre                  valid-user
</Directory>
</VirtualHost>

重启httpd服务
#service httpd restart

注:我们知道http协议在传输的过程中是明文传送的,像我们配置的基于基本用户认证

的方式,用户名密码也是明文传送的,这样是很不安全的,下面将配置HTTPS使用ssl加密传输数据.

四.配置https,使用自颁发证书实现

把www.andy.com网站配置成https 网站根目录位于/web/www

1.安装mod_ssl模块

#yum -y install mod_ssl

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

任的公司所颁发“ 或类似警告信息.}

创建用于存放证书的目录
#mkdir /etc/httpd/.sslkey

建立网站私钥文件
#cd /etc/httpd/.sslkey
#openssl genrsa -out https.key

创建网站证书文件,在这里需要注意的是,创建证书的过程会提示输入一些信息可以根据自己的需要去输入,
但“Common Name”这项必须输入的是客户端访问网站时的FQDN 即域名
#openssl req -new -x509 -key https.key -out https.crt

处于安全的考虑,可以把证书存放目录的权限设为400
#chmod 400 /etc/httpd/.sslkey

3.配置www.andy.com为https

#vim /etc/httpd/conf/vhost/www.andy.com.conf  内容如下
NameVirtualHost *:443
<VirtualHost *:443>
ServerAdmin     admin@andy.com
DocumentRoot        /web/www
ServerName      www.andy.com
SSLEngine       on                        #开启ssl
SSLCertificateFile      /etc/httpd/.sslkey/https.crt  #指定网站证书文件
SSLCertificateKeyFile   /etc/httpd/.sslkey/https.key  #指定网站私钥文件
如果不需要认证的话下面的可以不配置
<Directory "/web/www">
Options                   None
AllowOverride             AuthConfig
AuthType                  Basic
AuthName                  andyauth
AuthMySqlEnable           on
AuthMySqlUser             auth
AuthMySqlPassword         passwd
AuthMySqlDB               auth
AuthMySqlUserTable        users
AuthMySqlNameField        name
AuthMySqlPasswordField    pwd
Requidre                  valid-user
</Directory>
</Directory>

重启httpd服务
#service httpd restart

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





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





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

五.配置个人主页

所谓个人主页其实就是apache以每个系统用户家目录中指定的目录来做为一个网站

实在还不明白的话看下面配置就知道了,配置很简单只需要在apache的主配置文件里

启用UserDir选项即可.配置如下

1.编辑主配置文件,启用UserDir

#vim /etc/httpd/conf/httpd.conf
#UserDir disable   默认是禁用的需要注释掉
UserDir  public_html  启用个人主页

上面的选项在rpm包安装的apache主配置文件355行上下

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

2.创建系统用户

创建redhat用户
#useradd redhat

创建用于存放网页的目录
#mkdir /home/redhat/public_html

修改redhat用户家目录权限,因为我们知道运行httpd的用户是apache用户,我们访问网页的时候apache用户要读取页面文件,
而用户的家目录默认只有用户自己有权限读写,
#chmod 705 -R /home/redhat/

建立测试页面
#echo "<h1>redhat</h1>" /home/redhat/public_html/index.html

重启httpd服务
#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 配置如下

#vim /etc/httpd/conf/vhost/pam.andy.com.conf  内容如下
<VirtualHost *:80>
ServerAdmin     admin@andy.com
DocumentRoot    /web/pma
ServerName      pma.andy.com
ErrorLog        logs/pma.andy.com.err.log
CustomLog       logs/pma.andy.com.access.log common
Alias   /pma     /web/pma/phpmyadmin
</VirtualHost>

重启httpd服务
#service httpd restart

2.除了URL别名外还可以使用ServerAlias,

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

#vim /etc/httpd/conf/vhost/pma.andy.com.conf  内容如下
<VirtualHost *:80>
ServerAdmin     admin@andy.com
DocumentRoot    /web/pma
ServerName      pma.andy.com
ErrorLog        logs/pma.andy.com.err.log
CustomLog       logs/pma.andy.com.access.log common
Alias   /pma    /web/pma/phpmyadmin
ServerAlias     phpmyadmin.andy.com
</VirtualHost>

重新启动httpd服务
#service httpd restart

3.除了上面两种之外还可以使用脚本别名ScriptAlias

处于安全的考虑apache中的CGI脚本只运行在特定的目录下运行,那么我们希望在其他目录中运行CGI脚本的时候就可以使用ScriptAlias定义脚本别名来实现

比如说我们希望在/web/pam/cgi目录运行脚本 如下

#vim /etc/httpd/conf/vhost/pma.andy.com.conf  内容如下
<VirtualHost *:80>
Options ExecCGI
ServerAdmin     admin@andy.com
DocumentRoot    /web/pma
ServerName      pma.andy.com
ErrorLog        logs/pma.andy.com.err.log
CustomLog       logs/pma.andy.com.access.log common
ScriptAlias     /cgi /web/pma/cgi
</VirtualHost>

重新启动httpd服务
#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.下面给出两个例子

#vim /etc/httpd/conf/vhost/pma.andy.com.conf  如下
<VirtualHost *:80>
ServerAdmin     admin@andy.com
DocumentRoot    /web/pma
ServerName      pma.andy.com
ErrorLog        logs/pma.andy.com.err.log
CustomLog       logs/pma.andy.com.access.log common
<Directory "/web/pma">
Order Allow,deny
Allow From all
Deny  From 192.168.0.0/24
Deny  From .andy.com
</Directory>
</VirtualHost>

默认拒绝所有,
除了192.168.0.0/24网段跟andy.com域的所有主机不能访问外,其他都允许访问/web/pma目录里的内容

#vim /etc/httpd/conf/vhost/pma.andy.com.conf  如下
<VirtualHost *:80>
ServerAdmin     admin@andy.com
DocumentRoot    /web/pma
ServerName      pma.andy.com
ErrorLog        logs/pma.andy.com.err.log
CustomLog       logs/pma.andy.com.access.log common
<Directory "/web/pma">
Order Deny,Allow
Deny  From all
Allow  From 192.168.0.1
Allow  From client.andy.com
</Directory>
</VirtualHost>

默认允许所有,
除了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

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

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

2.创建论坛所需数据库

#mysql -u root -p
CREATE DATABASE bbs;
GRANT ALL ON bbs.* TO bbs@localhost IDENTITFIED BY 'passwd';
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论坛之旅吧,

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

感言:有点累,睡一会儿去.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息