Linux平台web服务器搭建
从1998年Linux开始在中国市场受到关注,时间已经过去5年,从最初蜂拥而至的桌面版本,到后来悄悄进入企业应用的Linux服务器,Linux逐渐得到人们的认可。特别是在最近两年,IBM、ORACLE、HP、Dell、Sun等业界巨头的倾力支持,为Linux的进一步应用奠定了良好的基础。
Linux,金山词霸的解释——”一种可以免费使用的UNIX操作系统,运行于一般的PC机上”,其实,那是不正确的,因为Linux根本没有取得UNIX商标,而且不仅运行于一般的PC机上,可以说它是一个新兴的操作系统,它继承了UNIX家族的特性,安全性稳定性,但是它没有遗传UNIX的弊病,价格昂贵,需要特定的硬件环境(现在某些UNIX没有特定硬件要求),因此,它凭借着自己的特点和UNIX的特性,占领了大概11%的服务器市场份额。另:由于Linux遵循POSIX(Portable Operating System Interface)标准,因此很多人误以为它是UNIX系统的一种。
Apache源于NCSAhttpd(National Center for Supercomputing Applications : NCSA)服务器,经过多次修改,成为世界上最流行的Web服务器软件之一。Apache取自”a patchy server”的读音,意思是充满补丁的服务器,因为它是自由软件,所以不断有人来为它开发新的功能、新的特性、修改原来的缺陷。Apache的特点是简单、速度快、性能稳定,它的用户包括yahoo,sohu,sina等众多门户网站,”依靠着高达60%的持续市场占有率,Apache从2002年发布起一直保持着市场上的王者地位。”——摘自天极网。
Rasmus Lerdorf为了创建他的在线简历而创造了”个人主页工具”(Personal Home Page Tools)。这是一种非常简单的语言。其后越来越多的人们注意到了这个语言并对其扩展提出了各种建议。在许多人的无私奉献下以及这种语言本身的源代码自由性质,它演变成为一种特点丰富的语言,而且现在还在成长中,就是本文中将用到的——PHP: Hypertext Preprocessor。
“The MySQL database server is the world’s most popular open source database. Over six million installations use MySQL to power high-volume Web sites and other critical business systems — including industry-leaders like The Associated Press, Yahoo, NASA, Sabre Holdings and Suzuki.
以上摘自www.mysql.com,这里主要提到的是open source,开源软件,字面意思就是开放源代码软件,我们可以轻松的获得它的源代码,可以自由的编译为可运行的软件。
关于Tomcat, “Tomcat is the servlet container that is used in the official Reference Implementation for the Java Servlet and JavaServer Pages technologies. The Java Servlet and JavaServer Pages specifications are developed by Sun under the Java Community Process. “, “Tomcat is developed in an open and participatory environment and released under the Apache Software License. “摘自http://jakarta.apache.org
vsftpd,very security ftpd的简称,从字面上讲就是非常安全的ftp服务器软件,引用其官方网站上的说法就是”Probably the most secure and fastest FTP server for UNIX-like systems.”
具体实现技术
拟将整个安装分为5部分:Linux安装,Tomcat与MySQL安装,Apache与PHP安装,整合Apache和Tomcat, vsftpd安装。本设计所用软件版本如下:Red Hat Enterprise Linux AS 3.0,Apache-2.0.53, PHP-5.0.4,vsftpd-2.0.3,Tomcat-5.0.28,MySQL-4.1.11-0,JDK-5.0。
3.1 Linux安装
关于Linux不用讲太多,因为是从光盘安装,插入第一章光盘后,都有图形化的安装提示,几乎都是傻瓜式的安装主要说说怎么分区。将整个硬盘10G按照以下方式划分:
/boot 512M
/usr 安装几个大型软件,预留打补丁时需要大量空间,所以分3G
/home 因为用户数量很少,分512M
/var 因为是用作Web,ftp服务器,可能有大量的.log文件所以分5G。
/tmp 1G(内存2倍)
安装系统的时候,选择minimize安装,也就是说,只安装Linux的核心编译系统(gcc),不安装X-WINDOWS,不安装系统默认的包,需要的软件以后再逐个安装。
注:linux系统每个设备对应一个文件在/dev/目录下,如/dev/hda表示第一个IDE硬盘,/dev/hda1……/dev/hda4表示对应的1到4号主分区/扩展分区,从5开始表示逻辑分区,hda6表示第一个IDE硬盘上的第二个逻辑分区。
3.2 Tomcat与MySQL安装
首先安装Tomcat+MySQL目的,是支持JSP,HTML语言,注意:在下面的操作中,以shell提示符”#”开头的表示以root用户执行命令,实际操作中提示符不需输入,/*comment*/为注释部分。
下载JDK下载地址: http://java.sun.com/j2se/1.5.0/download.jsp
下载Tomcat安装包: http://apache.freelamp.com/jakarta/tomcat-5
下载MySQL安装包: http://dev.mysql.com/downloads/index.html
下载JDBC: http://dev.mysql.com/downloads/connector/j/3.1.html ,为方便管理,把所有的软件统一放到一个目录下~/download
安装JDK:
#cd
#cd downloads
#./jdk-1_5_0-linux-i586-rpm.bin
正常情况下,JDK就安装到了/usr/java/jdk1.5.0,当然这只不过安装了JDK,为了能让他编译JAVA文件,还要编辑/etc/profile,在文件的最后加入,即加入JAVA的环境变量:
export JAVA_HOME=/usr/java/jdk1.5.0
CLASSPATH=$CLASSPATH:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar:.
export PATH=$PATH:$JAVA_HOME/bin
重新登陆,以让修改后的环境变量起作用。
测试,用VI编辑一个java测试程序,world.java,输入如下内容:
public class World{
public static void main(String args[]){
System.out.println(“Hello,Wrold”);
}
}
然后,在终端下执行以下命令:
#javac world.java;java world
如果出现”Hello,World” 字样,那么,说明我们的JAVA编译环境没有问题了。下一步就要安装Tomcat了。
安装Tomcat
将jakarta-tomcat-5.0.28.tar.gz解压缩到/usr/local/下
#tar xvfz jakarta-tomcat-5.0.28.tar.gz
#mv jakarta-tomcat-5.0.28 tomcat
编辑文件/etc/profile,在最后加入:
export CATALINA_HOME=/usr/local/tomcat
如果要求系统开机后自动启动tomcat服务程序,那么就要修改(或者创建)文件/usr/local/tomcat/bin/startup.sh内容为:
export JAVA_HOME=/usr/java/jdk1.5.0
export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar:.
export PATH=$PATH:$JAVA_HOME/bin
export CATALINA_HOME=/usr/local/tomcat
/usr/local/tomcat/bin/catalina.sh start
并在/etc/rc.d/rc.local中加入:/usr/local/tomcat/bin/startup.sh
#shutdown再启动后
在浏览器中输入http://localhost:8080 ,如果能看到tomcat的欢迎信息,那么就安装成功了,否则,只有再来一次了。
安装MySQL
添加mysql用户和组
#groupadd mysql
#useradd -g mysql mysql
#tar xvfz mysql-4.1.11-0.tar 解包
#./configure –prefix=/usr/local/mysql
#make /*编译*/
#make install /*安装*/
#./scripts/mysql_install_db.sh
#chown -R root /usr/local/mysql /*recursion修改权限*/
#chown -R mysql /usr/local/mysql/var /*recursion修改权限*/
#chgrp -R mysql /usr/local/mysql /*recursion修改权限*/
#cp support-files/my-medium.cnf /etc/my.cnf /*配置文件*/
系统提示overwrite?–>选yes
#/usr/local/mysql/bin/safe_mysqld –user=mysql &
如果最后一步出现[1]1357,1357为进程号,随机值,那么整个mysql也就没有问题了。
安装mySQL的JDBC驱动
把mysql-connector-java-3.1.7-ga.tar.gz解压缩到/tmp目录
#cd /tmp
#cp mysql-connector-java-3.1.7-ga-bin.jar /usr/local/tomcat/common/lib
增加mysql用户从本机访问数据库的权限(运行JSP需要):
#cd /usr/local/mysql/bin
#./mysql
mysql>GRANT ALL PRIVILEGES ON *.* TO mysql@localhost.localdomain domain IDENTIFIED BY ‘password’;
mysql>quit
到这里,Tomcat,MySQL的安装基本就告一段落。关于Tomcat,MySQL的优化设置还有很多工作要做,本周只是搭建了一个基本的环境而已。
3.3 Apache与PHP安装
Apache是一个非常专业、稳定性极好的WEB服务器,但是其本身仅能解析简单的静态网页和JavaScript网页,但结合Tomcat和PHP就可处理JSP和PHP动态网页。因为上周已经安装好了一部分,所以,下面的安装是在上周已安装JDK+Tomcat+mySQL的基础上进行。
安装Apache
#cd ~/downloads
#tar xvfz httpd-2.0.53.tar.gz
#cd httpd-2.0.53
#./configure –prefix=/usr/local/apache –enable-so
#make
#make install clean /*安装,并且清楚编译时产生的文件*/
编辑/usr/local/apache/conf/httpd.conf:
在DirectoryIndex后加上index.php index.jsp
加一行 AddType application/x-httpd-php .php .phtml .php3 .inc
AddDefaultCharset后改为GB2312
执行#/usr/local/apache/bin/apachectl start启动Apache,在浏览器输入http://localhost应该会出现Apache的欢迎页面。
若要开机自动启动Apache,那么就要在文件/etc/rc.d/rc.local中加入:一行/usr/local/apache/bin/apachectl start
安装PHP
解压并编译安装
#cd ~/downloads
#tar xvfz php-5.0.4.tar.gz
#cd php-5.0.4
#./configure –with-apxs2=/usr/local/apache/bin/apxs –enable-track-vars –with-mysql=/usr/local/mysql
#make
#make install
#cp php.ini-dist /usr/local/lib/php.ini
测试,执行#/usr/local/apache/bin/apachectl restart重新启动Apache服务器,在/usr/local/apache/htdocs中用vi 新建文件test.php,内容:<? phpinfo() ?> 在浏览器输入http://localhost/test.php应该会出现服务器信息。那么说明Apache应景可以解析PHP文件了。
3.4 整合Apache和Tomcat
整合Apache和Tomcat是整个系统的安装过程中比较繁琐的一步,期间一定要小心,不要漏掉任何一个步骤,否则就可能出现错误。
解压并编译安装jk2
#cd ~/downloads
#tar -xzvf jakarta-tomcat-connectors-jk2-src-current.tar.gz
#cd jakarta-tomcat-connectors-jk2-2.0.4-src/jk/native2
#./configure –with-apxs2=/usr/local/apache/bin/apxs –enable-EAPI
#make
#make install
#cd ./jakarta-tomcat-connectors-jk2-2.0.4-src/jk/build/jk2/apache2
#cp *.so /usr/local/apache/modules/
编辑文件/usr/local/tomcat/conf/jk2.properties,在最后加入:
# list of needed handlers.
handler.list=channelSocket,request
# Override the default port for the channelSocket
channelSocket.port=8009
/*此处的’#’ 需要输入,其意义与shell提示符不同*/
编辑或创建文件/usr/local/apache/conf/workers2.properties 内容如下:
# only at beginnin. In production uncomment it out
[logger.apache2]
level=DEBUG
[shm]
file=/usr/local/apache/logs/shm.file
size=1048576
# Example socket channel, override port and host.
[channel.socket:localhost:8009]
port=8009
host=127.0.0.1
# define the worker
[ajp13:localhost:8009]
channel=channel.socket:localhost:8009
# Uri mapping
[uri:/*.jsp]
worker=ajp13:localhost:8009
/*此段落中的’#'需要输入,其意义与shell提示符不同*/
编辑或创建文件/usr/local/apache/conf/httpd.conf
加入:LoadModule jk2_module modules/mod_jk2.so
DocumentRoot “/usr/local/tomcat/webapps/ROOT”
/*Apache默认的DocumentRoot是/usr/local/apache/htdocs,Tomcat默认的是/usr/local/tomcat/webapps */
测试,这时在浏览器中输入http://localhost应该会出现Tomcat的欢迎页面。至此,Linux下完全安装WEB服务的工作告一段落。
3.5 vsftpd安装
下载软件:ftp://vsftpd.beasts.org/users/cevans/ vsftpd-2.0.tar.gz
VSFTPD安装的准备工作:
VSFTPD默认设置需要一个”nobody”用户,如果这个用户不存在,那么添加它。如下:
# useradd nobody
VSFTPD默认设置需要一个空目录:/usr/share/empty,增加这个目录,如果它还不存在的话。如下:
# mkdir /usr/share/empty/
创建一个”ftp”用户(如果还不存在的话),/var/ftp/就是FTP的根目录,可换成其它的。
# mkdir /var/ftp/
# useradd -d /var/ftp ftp
#chown root /var/ftp
#chmod go -w /var/ftp
安装VSFTPD及其配置、执行和帮助文件。
#cd ~/downloads
#tar xzvf vsftpd-2.0.1.tar.gz
#cd vsftpd-2.0.1
#make
#mkdir /usr/local/man/man5
#mkdir /usr/local/man/man8
#make install
#cp vsftpd.conf /etc
编辑/etc/vsftpd.conf,在文件最后面加入行:listen=YES
若要求开机自动启动vsFTPd,就在/etc/rc.d/rc.local中加入:/usr/local/sbin/vsftpd &
测试vsftpd
# /usr/local/sbin/vsftpd &
如果能够启动,
测试一下:
ftp 127.0.0.1
Connected to localhost (127.0.0.1).
220 (vsFTPd 1.1.1)
Name (localhost:chris): ftp
331 Please specify the password.
Password:
230 Login successful. Have fun.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls
227 Entering Passive Mode (127.0.0.1)
150 Here comes the directory listing.
226 Directory send OK.
ftp> quit
OK,证明ftp服务器是安装好了的。
3.6 配置Apache
Apache安装成功后,在conf子目录下会生成一个配置文件:httpd.conf是Apache设置文件中的主文件,httpd程序启动时会先读取httpd.conf。
以下是我配置的部分设置:
# Do NOT add a slash at the end of the directory path.
DocumentRoot “/usr/local/tomcat/webapps/ROOT”
MaxClients 150
服务器的最大连接数,如果连接达到150,那么再有连接到来,系统就会出现等待情况。
KeepAliveTimeout 15
是允许用户保持连接5秒内有效,如果用户在15秒内点击其他页面不需要重新建立联结
ErrorLog:
这个命令是指定当WWW Server运转过程中发生问题时错误信息存放到哪个日志文件。默认是logs/mytestweb.log
# 设置默认页面,中间用空格分开
DirectoryIndex index.html index.jsp index.xtp index.php index.php3
综合测试
4.1 测试JSP连接MYSQL
在/usr/local/tomcat/webapps(tomcat的DocumentRoot默认目录)下建立子目录test,复制目录(目录就是Windows下的文件夹)usr/local/tomcat/webapps/ROOT/WEB-INF到新建的test目录下。
在test目录下新建index.jsp文件:
<%@ page contentType=”text/html;charset=gb2312″%>
<%@ page import=”java.sql.*”%>
<html><title>Redhat AS 3下测试JSP页面(Tomcat+MySQL)</title><body>
<%Class.forName(“org.gjt.mm.mysql.Driver”).newInstance();
String url =
“jdbc:mysql://localhost:3306/mysql?user=root&password=&useUnicode=true&characterEncoding=GB2312″;
Connection conn= DriverManager.getConnection(url);
Statement stmt
=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
String sql=”select * from user”;
ResultSet rs=stmt.executeQuery(sql); %>
<table><tr>
<td>您的第一个字段内容为:</td>
<td>您的第二个字段内容为:</td>
</tr> <%while(rs.next()) {%><tr>
<td><%=rs.getString(1)%> </td>
<td> <%=rs.getString(2)%> </td>
</tr> <%}%> </table>
<%out.print(“Tomcat+JDK+mySQL完整测试,恭喜你,Tomcat操作数据库操作成功!”);%>
<%rs.close();
stmt.close();
conn.close();
%>
</body>
</html>
在浏览器上输入:http//localhost:8080/test 如果出现”Tomcat+JDK+mySQL完整测试,恭喜你,Tomcat操作数据库操作成功!”则说明测试成功。
4.2 测试PHP操作MySQL数据库
首先创建用户信息
CREATE TABLE T_UserInfo (
c_name varchar(255) not null default “anonymous”,
c_usermail varchar(255) not null,
c_userurl varchar(255), c_sitename varchar(255),
primary key c_usermail
);
创建前台HTML文件(test.html):
<form enctype=”multipart/form-data” action=”test.php” method=”post”>
<tr>
<td vAlign=”top” width=”251″ height=”31″><small>您的姓名:</small></td>
<td width=”462″ height=”31″><small><input name=”name”
size=”37″> </small></td>
</tr><br>
<tr>
<td vAlign=”top” width=”251″ height=”30″><small>您的电子邮
件:</small></td>
<td width=”462″ height=”30″><small><input name=”usermail”
size=”37″></small></td>
</tr>
<tr><br>
<td vAlign=”top” width=”251″ height=”25″><small>
您的网站地址:</small></td>
<td width=”462″ height=”25″><small><small><input
name=”userurl” size=”37″ ></small></small></td>
</tr> <br>
<tr>
<td vAlign=”top” width=”251″ height=”25″><small>您的网站名:
</small></td>
<td width=”462″ height=”25″><small><input name=”sitename”
size=”37″></small></td>
</tr>
<input type=”submit” value=”确定” >
</form>
创建后台PHP文件(test.php):
<?
$dbhost= mysql_connect(localhost:3306,root,);
mysql_select_db(MYWEB);
$query =
“insert into T_UserInfo ( c_name,c_usermail,c_userurl,c_sitename) values ($name,$usermail,$userurl, $sitename, $C1,$C2,$C3,$C4)”;
$res = mysql_query($query, $dbhost);
$err = mysql_error();
if($err){
echo “发生错误,请多查阅文档</a>”;
echo “$err”;
}
else{ echo “成功插入数据库”; }
?>
把test.php和test.html放到/usr/local/apache/htdocs/test目录下(若无test目录则创建它),在浏览器中输入http://127.0.0.1/test/test.html ,输入各项参数,测试结果,如果显示”成功插入数据库”,恭喜,成功了,如果显示”发生错误,请多查阅文档”,那么只有再次仔细的配置了。