- 论坛徽章:
- 0
|
废话就免了,让我们先来了解一下何为虚拟主机,它的概念是什么。所谓的虚拟主机服务就是指将一台机器虚拟成多台WEB服务器。举个例子来说,一家公司想从事提供主机代管服务,它为其它企业提供WEB服务。那么它肯定不是为每一家企业都各准备一台物理上的服务器,而是用一台功能较强大的大型服务器,然后用虚拟主机的形式,提供多个企业的WEB服务,虽然所有的WEB服务就是这台服务器提供的,但是让访问者看起来却是在不同的服务器上获得WEB服务一样。
具体地说,就是我们可以利用虚拟主机服务将两个不同公司www.company1.com与www.company2.com的主页内容都存放在同一台主机上,而访问者只需输入公司的域名就可以访问到它想得到的主页内容。用Apache设置虚拟主机服务通常可以采用两种方案:基于IP地址的虚拟主机和基于名字的虚拟主机。
设置实现基于IP地址的虚拟主机服务实现前提是这种方式需要在机器上设置IP别名,也就是在一台机器的网卡上绑定多个IP地址去为多个虚拟主机服务,而且要使用这项功能还要确定在你的Linux内核中必须支持IP别名的设置,否则你还必须重新编译内核。
准备工作
1.企业版LINUX Redhat AS3或其他版本的LINUX,也可为FREEBSD,SCO,AIX,SOLARIS,HPUNIX等。这里我以Redhat为主。
2.httpd-2.0.52.tar.gz,http://www.apache.org/dist/httpd/httpd-2.0.52.tar.gz
3.php-4.3.10.tar.gz,http://www.php.net/downloads.php
4.jdk-1_5_0_01-linux-i586.bin,http://java.sun.com/j2se/1.5.0/download.jsp
5.jakarta-tomcat-5.5.6.tar.gz,http://www.apache.org/dist/jakarta/tomcat-5/v5.5.6/bin/jakarta-tomcat-5.5.6.tar.gz
6.jakarta-tomcat-connectors-jk2-src-current.tar.gz,
http://www.apache.org/dist/jakarta/tomcat-connectors/jk2/jakarta-tomcat-connectors-jk2-src-current.tar.gz
7.MYSQL-standard-4.1.9-pc-linux-gnu-i686.tar.gz,
http://dev.MYSQL.com/get/Downloads/MySQL-4.1/MYSQL-standard-4.1.9-pc-linux-gnu-i686.tar.gz/from/pick
8.phpMyAdmin-2.6.2.tar.bz2,http://www.phpmyadmin.net/home_page/downloads.php
9.bind(系统自带,安装的时候务必勾上。)
10.vsftpd(系统自带,安装的时候务必勾上。)
实施配置
1.安装MYSQL
# tar zxvf MYSQL-standard-4.1.9-pc-linux-gnu-i686.tar.gz
# mv MYSQL-standard-4.1.9-pc-linux-gnu-i686 MYSQL
# cd MYSQL
# more INSTALL-BINARY
查看安装文档,注意以图1中红色框内为主。
# groupadd MYSQL (建立MYSQL组)
# useradd -g MYSQL MYSQL (建立MYSQL用户并将其用户加入该组)
# scripts/MYSQL_install_db --user=MYSQL (以MYSQL用户身份执行数据库初始化安装脚本)
# chown -R root . (归属root权限为当前目录)
# chown -R MYSQL data (归属MYSQL权限为data目录)
# chgrp -R MYSQL . (改变MYSQL档案/目录的使用者与群组拥有人为当前目录)
# bin/MYSQLd_safe --user=MYSQL & (以MYSQL用户身份后台启动MYSQL数据库进程)
之后我们就可以启动MYSQL数据库。
显示为图2则表示安装正确。为了使数据库更加安全,我们来设置数据库密码。
如在下次启动服务器时能自动启动MYSQL数据库进程,我们还需写入/etc/rc.d/rc.local文件里:
echo “/usr/local/MYSQL/bin/MYSQLd_safe --user=MYSQL &” >> /etc/rc.d/rc.local
2.安装Apache
# tar zxvf httpd-2.0.52.tar.gz
# cd httpd-2.0.52
# ./configure –prefix=/usr/local/apache –enable-so(指定安装目录为/usr/local/apache,如果希望核心能够装载DSO,而不实际编译任何动态模块,需要明确指定--enable-so)
# make
# make install
3.安装PHP
# tar zxvf php-4.3.10.tar.gz
# cd php-4.3.10
# ./configure –with-MYSQL=/usr/local/MYSQL –with-apxs2=/usr/local/apache/bin/apxs
# make
# make install
# cp php.ini-dist /usr/local/lib/php.ini
4.配置Apache支持PHP
# vi /usr/local/lib/php.ini
# 把register_globals = Off 改成 register_globals = On
# vi /usr/local/apache/conf/httpd.conf
把组改成nobody:
User nobody
Group nobody
把ServerAdmin you@example.com 改成 ServerAdmin webmaster@squall.cn:
# ServerName 192.168.0.11:80 (去掉前面的#,把地址写成你服务器的地址)
添加index.php:
DirectoryIndex index.php index.htm index.html
更改默认语言:
AddDefaultCharset GB2312
# 在文件包中增加页面:
AddType application/x-compress .Z
AddType application/x-gzip .gz .tgz
AddType application/x-httpd-php .php
AddType application/x-httpd-php .php4
然后保存退出。
5.测试PHP
安装配置到此结束。接着我们启动Apache服务器:
# /usr/local/apache/bin/apachectl start
写一个PHP脚本做测试:
# Vi /usr/local/apache/htdocs/index.php
保存退出。如在下次启动服务器时能自动启动Apache进程,我们还需写入/etc/rc.d/rc.local文件里:
echo “/usr/local/apache/bin/apachectl start” >> /etc/rc.d/rc.local
我们可以把/usr/local/MYSQL/bin/MYSQL和/usr/local/apache/bin/apachectl这两个文件cp到/usr/sbin下,这样我们就不用写那么一大长串的路径了。
6.安装PhpMyAdmin
# mv phpMyAdmin-2.6.2.tar.bz2 /usr/local/apache/htdocs
# tar jxvfp phpMyAdmin-2.6.2.tar.bz2
# mv phpMyAdmin-2.6.2 phpmyadmin
# cd phpmyadmin
# vi config.inc.php
$cfg['Servers'][$i]['auth_type'] = 'http'; // Authentication method (config, http or cookie based)?
$cfg['Servers'][$i]['user'] = 'root'; // MySQL user
$cfg['Servers'][$i]['password'] = '123456'; // MySQL password (only needed)
把config改成http,用户名root,密码为你设置的密码123456。
7.配置测试CGI
修改/etc/httpd/conf/httpd.conf文件,使之支持CGI程序。
AllowOverride None
Options ExecCGI
Order allow,deny
Allow from all
AddHandler cgi-script .cgi .pl
保存退出。写一个CGI脚本做测试:
#!/bin/sh
echo "Content-type: text/html"
echo
echo "How are you!"
# chmod 755 index.cgi
8.安装JDK
# mv jdk-1_5_0_01-linux-i586.bin /usr/local/
# ./ jdk-1_5_0_01-linux-i586.bin
# mv jdk-1_5_0_01-linux-i586 jdk(改名为jdk)
9.安装tomcat
# cp jakarta-tomcat-5.5.6.tar.gz /usr/local
# tar zxvf jakarta-tomcat-5.5.6.tar.gz
# mv jakarta-tomcat-5.5.6 tomcat(改名为tomcat)
10.设置系统的环境变量
# vi /etc/profile,在最后加入:
PATH=$PATH:/usr/local/jdk/bin:/usr/local/jdk/jre/bin
JAVA_HOME=/usr/local/jdk
export JAVA_HOME
CLASSPATH="./:/usr/local/jdk/lib:/usr/local/jdk/jre/lib"
export CLASSPATH
CATALINA_HOME=/usr/local/tomcat
export CATALINA_HOME
保存后,重启。Shutdown –r now
11.编译mod_jk2.so模块
# tar zxvf jakarta-tomcat-connectors-jk2-src-current.tar.gz
# cd jakarta-tomcat-connectors-jk2-src-current/jk/native2
# ./configure --with-apxs2=/usr/local/apache/bin/apxs
# make
# cd ../build/jk2/apache2
# /usr/local/apache/bin/apxs -n jk2 -i mod_jk2.so(此时会自动在/usr/local/apache/modules/目录下生成mod_jk2.so文件)
12.整合Apache+Tomcat
# vi /usr/local/apache/conf/httpd.conf
# 添加index.jsp
DirectoryIndex index.jsp index.php index.cgi index.htm index.html
# 加载模块
LoadModule jk2_module modules/mod_jk2.so
保存退出。
# 在/usr/local/apache/conf/中新建文件workers2.properties,内容为下:
[shm]
file=/usr/local/apache/logs/shm.file
size=1048576
# Example socket channel,override port and host.
[channel.socket:localhost:8009]
port=8009
host=squall.cn (改成你自己主机的地址或DNS)
# define the worker
[ajp13:localhost:8009]
channel=channel.socket:localhost:8009
# Uri mapping
[uri:.*]
worker=ajp13:localhost:8009
保存退出。
# vi /usr/local/tomcat/conf/server.xml
找到,把webapps改成/usr/local/apache/htdocs,保存退出。
# cp –a * /usr/local/tomcat/webapps/ /usr/local/apache/htdocs
# cd /usr/local/apache/htdocs
我们编译一个JSP文件做测试:
the Latest time:
# /usr/local/tomcat/bin/startup.sh(启动Tomcat)
# /usr/local/apache/bin/apachectl configtest(如果出现Syntax OK,则证明模块安装成功!)
# /usr/local/apache/bin/apachectl start
13.测试JSP
14.配置虚拟机
这里我们的域名设置为squall.com.cn:
# vi /usr/local/apache/conf/httpd.conf
在最后增加如下语句:
NameVirtualHost 192.168.0.12:80
ServerAdmin webmaster@squall.com.cn
DocumentRoot /home/squall/
DirectoryIndex index.jsp index.php index.cgi index.htm index.html
ScriptAlias /cgi-bin/ /home/squall/cgi-bin/
ServerName squall.squall.com.cn
ErrorLog logs/www.squall.com.cn-error_log
CustomLog logs/www.squall.com.cn-access_log common
ServerAdmin webmaster@squall.com.cn
DocumentRoot /home/sqlunix/
DirectoryIndex index.jsp index.php index.cgi index.htm index.html
ScriptAlias /cgi-bin/ /home/sqlunix/cgi-bin/
ServerName sqlunix.squall.com.cn
ErrorLog logs/sqlunix.squall.com.cn-error_log
CustomLog logs/sqlunix.squall.com.cn-access_log common
保存退出。配置DNS:
# More /etc/named.conf
zone "squall.cn" IN {
type master;
file "named.hosts";
};
zone "0.168.192.in-addr.arpa" IN {
type master;
file "named.rev";
};
zone "squall.com.cn" IN {
type master;
file "squall.hosts";
};
# more /var/named/squall.hosts
$TTL 86400
@ IN SOA squall.com.cn. root.squall.com.cn. (
1997022700 ; Serial
28800 ; Refresh
14400 ; Retry
3600000 ; Expire
86400 ) ; Minimum
IN NS squall.com.cn.
squall IN A 192.168.0.12
sqlunix IN A 192.168.0.12
我们在浏览器上输入http://squall.squall.com.cn即可看见虚拟主机用户squall的页面。再来更改workers2.properties文件:
# vi /usr/local/apache/conf/workers2.properties
# 在最后一行加入:
[uri:squall.squall.com.cn/*]
worker=ajp13:localhost:8009
[uri:sqlunix.squall.com.cn/*]
worker=ajp13:localhost:8009
更改server.xml文件:
# vi /usr/local/tomcat/conf/server.xml
# 在下面增加:
全部完成后,重启服务:
# /usr/local/tomcat/bin/shutdown.sh
# /usr/local/tomcat/bin/startup.sh
# /usr/local/apache/bin/apachectl restart
# service named restart
增加用户做测试
# useradd squall
# passwd squall(回车后输入密码)
# useradd sqlunix
# passwd sqlunix(回车后输入密码)
# 把原先编译好的jsp文件分别拷贝到各自目录中,以及WEB-INF文件夹。
# 在浏览器上分别输入http://squall.squall.com.cn/first.jsp 和http://sqlunix.squall.com.cn/second.jsp。
# 如出现上述画面,则证明你的虚拟主机配置成功。
# 下面启动vsftpd进程,service vsftpd start
# 用户可通过ftp把文件传输到用户目录里,这样就和我们平常在网上申请的空间的道理是一样的。
# 有关vsftpd相关配置,这里不多介绍,有兴趣的朋友可到bbs.chinaunix.net上索取精华帖子。
15.限制用户目录空间
# 我们看到很多网站都限制空间的大小,如100M,那是如何实现的呢?用quota来限制目录即可。
# more /etc/fstab
# LABEL=/ / ext3 defaults,usrquota 1 1
# 注:“/”为硬盘挂载点,因我采用的是缺省安装所以是“/”,你要根据你自己的情况而定。
# cd /home
# touch quota.user
# chmod 600 quota.user
# shutdown –r now (重起,不要急,在启动过程中会报错,不要理它。)
# quotacheck –amfugv(执行这条命令后,会疯狂的扫描你的硬盘)
# convertquota -u /
# quotaon -avug(启动Quota)
# 用repquota -a 查一下
# edquota –u squall
Disk quotas for user squall (uid 503):
Filesystem blocks soft hard inodes soft hard
/dev/sda1 1500 1000 1500 8 0 0
# 我这里设置的软限制为1M,硬限制为1.5M
# edquota -t (为修改宽限期时间)
# 我这里默认。
# 我们来测试一下。
# 大于1.5M的文件就会报错。
本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u1/59472/showart_464853.html |
|