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 [email protected] #管理员的邮箱
- 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 [email protected]
- 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 [email protected]
- 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 [email protected]
- 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 [email protected]
- 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 [email protected]
- 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 [email protected]
- 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 [email protected]
- 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 [email protected]
- 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 [email protected]
- 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 [email protected]
- 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论坛之旅吧,
配置到这里整篇博客也算是完工了,上面涉及到的知识点都可以根据自己的需求灵活应用.
感言:有点累,睡一会儿去.