设置 Web 服务器(适用于 Apache 1.3.xx Server)
其实,在你一安装好 Linux 时,就有两个服务开放了:一个是前面提到的 sendmail (邮件服务器),另外一个就是 WWW 服务器啦!在 RedHat 中缺省的 WWW 服务器是很有名的 Apache 这一套,而这一套 www 软件目前最热门的是 1.3.XX 版,截至目前为止(2001/08/30)这一版最新出到了 1.3.20 版!以下我们要介绍的就是 Apache 这一套 Web 架站软件啦!先来了解一下何谓 WWW ,WWW 是 World Wide Web 的缩写,其中, Web 有广播网的意思存在,所以,简单的说,WWW就是万维网,可以结合文本、图形、图像及声音等多媒体,并通过 超链接(Hypertext) 的方式,将信息通过 Internet 传递到世界各处!那 WWW 的数据是如何传递的呢?如果你常上网浏览的话(不论是使用 IE 或是 Netscape),你应该会知道,台湾最大的门户网站是奇摩站(www.kimo.com.tw),所以你只要在网址列上面输入 http://www.kimo.com.tw 就可以将奇摩站的数据捉到你的浏览器中,以供你观看!这个 http://www.kimo.com.tw 就是所谓的 URL ,其中 www.kimo.com.tw 就是所谓的领域名称(Domain name)也是前面我们稍微提过的咚咚,奇摩的真实 IP 就是通过 www.kimo.com.tw 经由 DNS 的解析而找到这部电脑,然后经过 http 的功能将数据传到你的眼前来!因此,要你的 WWW 可以运作正常并且可以让大家都可以连的进来,就最好一定要申请一个名称啦!也就是说,你的 DNS 一定要设置正确无误才行!所以,进行 WWW 的设置之前,你一定要『先具有 DNS 可以找到的主机名称,并且可以连上 Internet』!
不过,在开始进行 WWW 的设置之前,你可能要先了解一下你要你的 WWW 服务器为你作些什么?是简单的『静态网页』就够了吗?还是需要活泼热闹的 PHP+MySQL 的『动态网页』,或者是另外一套 apache + asp 的动态网页呢?如果你只要你的 WWW 提供给你最简单的静态网页空间,那你可以只安装 Apache 即可,而由于 Linux 安装完毕后即提供WWW的服务了,因此你只要去设置WWW即可。不过,如果你还要其他的较为活泼的动态网页的话,基本上,目前比较流行的就是 PHP+MySQL+Apache 以及 Apache+ASP 这两组人马,这里我们将提供的是 PHP+MySQL+Apache 的架站,不过,由于 MySQL 及 PHP 的功能也是很强大的,但是在这里我们仅将 MySQL 及 PHP 视为 Apache 的一个模块,你应该要有个观念,我们这里提供的只是很基础的咚咚, PHP 与 MySQL 并非仅是一个 Apache 的模块喔!这里要小心!
在开始进行 WWW 的实作之前,要跟大家报告的是,由于 WWW 需要在网络的情况下运行运作,因此你一定要:具有这两个先决条件之后,再来架设 WWW 主机吧!然后,如果你有制作过网页的话,应该会有听过所谓的Perl、ASP、Java等等的咚咚,这些咚咚的功能之一,就是可以使用来作为设计 WWW 的编程语言的一种!那 PHP 是目前新兴的一种编程语言,可以附在 WWW 中运行喔!
- 可以连上 Internet:如果不行的话,请参考 连上 Internet 一文;
- 具有 DNS 反查的功能:由于我缺省你是以 ADSL 计时制的连接方式,因此你应该要去 申请动态 DNS。
好了,我们来了解一下什么是 PHP 与 MySQL 这两个套件:
- PHP:官方的说法为:『PHP is a tool that lets you create dynamic web pages. PHP-enabled web pages are treated just like regular HTML pages and you can create and edit them the same way you normally create regular HTML pages.』所以说, PHP 可简单的视为一种编程语言,可以用来设计留言版、讨论区、或聊天室等等的动态网页的咚咚!由于他具有免费、跨平台、易学及效率高等等的优点,目前算是很盛行的一种设计网页的咚咚啦!(基本上,PHP与ASP都是使用来设计网页的编程语言,当然其功能不只如此!你可以轻易的在市面上找到相关的书籍喔)
OK!那你应该知道为何我们这里需要的网站型态是 Apache + MySQL + PHP 的主机状态了,为了因应未来你的主机可能会支持讨论区、留言版、等动态网页,因此需要有 PHP 这个咚咚,而由于你的讨论区数据库会越来越大,所以需要有 MySQL 套件的支持啰!当然,别忘记这些套件是附在 WWW 下运行的,所以当然就需要 apache 啦!再来当然就是又要捉网络上的东西啦!
- MySQL:将官方网站上的翻译文档中这么说:『MySQL是一个真正的多用户、多线程SQL数据库服务器。SQL(结构化查找语言)是世界上最流行的和标准化的数据库语言。MySQL是以一个客户机/服务器结构的实现,它由一个服务器背景运行程序mysqld和很多不同的客户程序和库组成。SQL是一种标准化的语言,它使得保存、更新和访问信息更容易。例如,你能用SQL语言为一个网站检索产品信息及保存顾客信息,同时MySQL也足够快和灵活以允许你保存记录文档和图像。MySQL 主要目标是快速、健壮和易用。』
简单一点来说,这个东西就是一个数据库处理模块,例如:你在设计讨论区的时候,由于讨论的文章会日渐增多,因此就会有所谓的数据库处理的情况,MySQL 的目的就是在处理你这些由用户端发送来的数据。当然,其功能还不只此,我这里仅说一些我们可能用的到的咚咚!
要架设这样的一个主机需要哪些套件呢?不就是: Apache、MySQL及 PHP 啰!要从何处下载呢?你可以到中山大学的 FTP 站去搜索,因为他提供的接口鸟哥真是蛮喜欢的,而且也真的很实用喔!寻找文件快又正确! 当然,你也可以到各个套件的发展处去下载:
- Apache:目前 Apache 已经出到了 2.0.X 版,但是最广泛使用的还是属于 1.3.X 版本,这一版本目前出到最新的 1.3.20 版,你可以上 Apache 主网页去看看相关的信息:
- PHP:目前最新的是 4.0.6 版(2001年6月才出来的喔),你可以上 php 的主网页去看看一些相关的咚咚喔!
也就是说,我们需要的文件有三个,分别是:
- MySQL:目前最新的版本是 3.23.41,同样的,你也可以上 MySQL 官方网页去看看喔!
- MySQL 主页(英文):
- MySQL 主页下载:
- 台湾映射站台:
- 由本站下载 mysql-3.23.41.tar.gz 。
- apache-1.3.20.tar.gz
- php-4.0.6.tar.gz
- mysql-3.23.41.tar.gz
安装这三个套件比较需要小心,因为使用 RPM 升级的话,可能没有办法取得最新的套件版本,所以这里我们使用最原始的原代码升级方法。安装的方法如下:
- 去除旧版的咚咚与解压缩:
- 去除相关的旧版数据,如果你是 RedHat 6.1 的话,则下面的套件你可以先去除喔!
当然啰,如果你之前安装了旧版的 Apache 、 PHP、或 MySQL,那你也可以移除。其实这是个人习惯,有的人喜欢保存两种版本在他们的系统中,若你也想安装两种版本在你的系统中,那你也不需要移除 rpm 的安装套件喔!不过,为了怕系统冲突,你必须要以 setup 的程序来取消 httpd, php 及 mysql 的服务喔!
[root@tsai /root]# rpm -e mod_perl
[root@tsai /root]# rpm -e phpfi
[root@tsai /root]# rpm -e apache- 解压缩:
假如你将 Apache, MySQL 及 PHP 三个文件放置在 /home/test 这个目录中,而要将数据解压缩到 /usr/local 当中,则可以这样下指令:
则在 /usr/local 中会多出三个目录,分别是:apache_1.3.20, mysql-3.23.41, php-4.0.6。
[root@tsai /root]# cd /usr/local
[root@tsai local]# tar -zxvf /home/test/apache_1.3.20.tar.gz
[root@tsai local]# tar -zxvf /home/test/mysql-3.23.41.tar.gz
[root@tsai local]# tar -zxvf /home/test/tar -zxvf /test/php-4.0.6.tar.gz
- 安装 MySQL 套件:
如果你英文够好的话,你可以到 /usr/local/mysql-3.23.41 这个目录中察看一下 INSTALL-SOURCE 这个文件,里面对于如何安装适合你的 MySQL 有很详尽的说明。如果你要照我的步骤作的话,请往下看吧!
上面这样就安装完毕了!完成安装后就要开始测试你的 MySQL 啰!
[root@tsai /root]# cd /usr/local/mysql-3.23.41 [root@tsai mysql-3.23.41]# ./configure --prefix=/usr/local/mysql --localstatedir=/usr/local/mysql/var
上面这个步骤在检查你的系统,以设置适合你的系统的数据!
其中, --prefix 后面接你要安装的 MySQL 目录所在,而 --localstatedir
后面则是接你要将数据库放置的地方,通常我们都会设置在 var 里面。[root@tsai mysql-3.23.41]# make
[root@tsai mysql-3.23.41]# make install
上面两个步骤在安装 mysql 到你刚刚设置的 /usr/local/mysql 路径中。
注意啰,上面的步骤按你的 CPU 而可以耗掉很长的时间![root@tsai mysql-3.23.41]# ./scripts/mysql_install_db
如果你之前已经安装过 MySQL 的话,这一步骤就不用安装了,
这个步骤在产生 grant tables 这个东西!也就是数据库啦!
这个步骤很是重要,如果没有此步骤,则你的 MySQL 是不会动作的![root@tsai mysql]# adduser mysql
[root@tsai mysql]# chown -R mysql:mysql /usr/local/mysql
上面这个步骤在产生 mysql 这个帐号及群组名称,另外,
将 /usr/local/mysql 这个刚安装完毕的咚咚指定为 mysql 的所有,
这是为了安全性的考量,因为 mysql 的帐号与你原本 Linux 的帐号是不同的喔![root@tsai mysql]# cd /usr/local/mysql/share/mysql
[root@tsai mysql]# chmod 777 mysql.server
上面这个步骤再将你的 mysql.server 这个启动 mysql 的运行档,
设置成大家都可以使用的格式。[root@tsai mysql]# /usr/local/mysql/bin/safe_mysqld --user=mysql &
上面这一行在以 mysql 这个人来启动 mysql 的服务喔![root@tsai mysql]# /usr/local/mysql/bin/mysqladmin -u root password abcde
上面这一行在设置 root 的 mysql 密码,其中 abcde 是密码,你可以自行设置喔!
- 增加 PHP 模块:
基本上,PHP 可视为 Apache 的一个模块,由于是属于 apache 的一个模块,因此我们必须先针对 Apache 进行一次 configure 的设置侦测,这样才能将 php 增加至 apache 当中,详细步骤如下:
上面这样就安装完 php 套件啰!
[root@tsai /root]# cd /usr/local/apache_1.3.20
[root@tsai apache_1.3.20]# ./configure --prefix=/usr/local/apache
上面的指令是要将 apache 安装在 /usr/local/apache 的意思,
请注意,要先针对 apache 设置侦测一次才行安装 php 喔![root@tsai apache_1.3.20]# cd /usr/local/php-4.0.6
[root@tsai php-4.0.6]# ./configure --with-apache=/usr/local/apache_1.3.20 \
> --with-mysql=/usr/local/mysql \
> --enable-track-vars
请注意上面的指令,中间那三行后面都要接一个 \ 的符号,这是指令继续的意思,
也就是说,其实上面最后四行视为同一行的指令!你也可以将上面的指令写成一长串
另外,要注意的是,apache 需要指向刚刚侦测过设置的目录,而 mysql 则指向
已经安装完毕的目录!千万不要搞错啰![root@tsai php-4.0.6]# make
[root@tsai php-4.0.6]# make install
开始安装啰!安装完毕之后,会在 /usr/local/apache_1.3.20/src/modules 中
多一个 php4 的子目录,里面就存在了 php4 的主要程序库啰![root@tsai php-4.0.6]# cp /usr/local/php-4.0.6/php.ini-dist /usr/local/lib/php.ini
将主要的 php 设置档 php.ini-dist 拷贝成 /usr/local/lib/php.ini 这个文件,
这是因为 apache 或其他程序运行 php 时需要到 usr/local/lib/ 中去使用这文件,
如果您对 php 熟悉的话,可以修改 /usr/local/lib/php.ini 这个文件,以符合你的设置。
- 安装 Apache 套件:
再来就是重头戏啦,开始安装 apache 啰!由于已经安装了 php ,所以在 /usr/local/apache_1.3.20/src/modules 中就会存在 php4 的目录!
这样就安装完毕啦!开始来设置 WWW 与测试相关的模块啦!
[root@tsai /root]# cd /usr/local/apache_1.3.20
[root@tsai apache_1.3.20]# ./configure --prefix=/usr/local/apache \
>--activate-module=src/modules/php4/libphp4.a
上面这两行是同一行啦,要注意的是 --activate-module 这一行,这个得先
安装过 php 才能使用这一个模块![root@tsai apache_1.3.20]# make; make install
要来启动 Apache 啰,在这一版(1.3.20)当中,已经只剩下一个参数设置档『httpd.conf』这个文件。如果你是使用 RedHat6.1 原本的 apache 则有三个文件,分别是:以下鸟哥将以 apache_1.3.20 版进行说明,如果你是以旧版的 apache 安装的话,请在其他两个文件中找寻相关的设置吧!
- httpd.conf
- access.conf
- srm.conf
Apache 的主要目录型态:
这是蛮重要的一个地方,因为不同版本的 Redhat 及不同的安装方法,会产生蛮大差异的目录型态,以下以 Redhat6.1, RedHat7.0+CLE0.9, 及使用原代码安装 1.3.20 的目录型态:
- Redhat 6.1:若使用原始的 apache 1.3.9 的话,则你的参数设置档会在 /etc/httpd/conf 当中,而主机的网页放置于 /home/httpd/html 中,至于 cgi 的咚咚则放在 /home/httpd/cgi-bin 当中;
- RedHat7.0 + CLE 0.9:同样的,这个系统的缺省 apache 的参数档,放置在 /etc/httpd/conf 中,不过主机网页移至 /var/www/html 当中,cgi-bin 则放置在 /var/www/cgi-bin 中;
底下将以原代码安装的方法所产生的文件来介绍 apache 的设置。
- 原代码安装:若使用原代码安装,且将缺省的路径设置在 /usr/local/apache 时,你的参数设置档会在 /usr/local/apache/conf 中,而更动较大的是主机网页的放置目录,更改成 /usr/local/apache/htdocs 这个目录中,至于 cgi 也是放置在 /usr/local/apache/cgi-bin 当中。
基本设置:
- 1. 启动 apache 服务:基本上,只要你启动 apache 之后,应该就可以在用户端的浏览器程序上看到你的主机缺省的网页了!启动的方式为:
同时, apachectl 还有其他的参数如下:
[root @tsai /root]# /usr/local/apache/bin/apachectl start <=启动
- apachectl stop:停止 WWW 的服务;
- apachectl restart:重新启动 WWW 的服务,这个指令比较常用在你修改了 apache 的参数后,重新启动用的。
- apachectl status:侦测 WWW 的状态。
- 2. 更改中文首页:由于 WWW 的原始设置中,指定你的首页名称为 index.html 或者是 index.htm ,然而这一版的首页支持比较多的语言,因此你必须将首页文件名称修改一下:
现在你应该可以在其他的用户端机器上连进来了!你现在可以打开 IE 或其他浏览器,然后在你的网址上打入你的DNS名称(如果有的话),或者是你的 IP 号码,就可以看到你自己主机的首页啰!
[root @tsai /root]# cd /usr/local/apache/htdocs/
[root @tsai htdocs]# cp index.html.zh.Big5 index.html
上面这个步骤在设置你的首页
- 3. 设置用户权限:由于你是以 root 的身份安装 Apache 这个套件,所以如果无法连上你的主机首页,有可能是 WWW 的首页放置的地方可能会有权限上的问题,需要设置权限的地方在 /usr/local/apache/htdocs 及 /usr/local/apache/cgi-bin 这两个目录,你可以这样设置:
你也可以设置成 744 的权限喔!
[root @tsai apache]# chmod 755 /usr/local/apache/cgi-bin
[root @tsai apache]# chmod 755 /usr/local/apache/htdocs开始设置 httpd.conf 文件:
- 4. 设置自动运行:另外,为了让你的 WWW 及 MySQL 服务可以一开机就运行,所以你可以将下面两行启动的 scripts 写在你的 /etc/rc.d/rc.local 的最后面:
这样一来,每次你开机时, Linux 就会自动去运行 apache 及 MySQL 啰!
[root @tsai /root]# vi /etc/rc.d/rc.local
/usr/local/apache/bin/apachectl start
/usr/local/mysql/share/mysql/mysql.server start
说了一些拉拉杂杂的话后,终于要来实际设置 httpd.conf 这个文件啰,请以 vi 来编辑吧。
[root @tsai /root]# cd /usr/local/apache/conf
[root @tsai conf]# vi httpd.conf
- 1. 基础环境设置:以下这些在 httpd.conf 中的选项分别代表的意义为:
ServerType standalone
上面在设置启动 apache 的状态,如果是 standalone 表示开机即运行,
通常我们都是选择 standalone 这个(默认值),不过,若选择:
ServerType inetd :则表示使用互联网的服务来连接时才启动!ServerRoot "/usr/local/apache"
表示 apache 的目录所在地Timeout 300
这是用来设置连接到你这部主机的用户端,当超过 300 秒用户端还没有
办法连上你的主机时,就予以断线处理!MinSpareServers 5 <=若是小站或是一般小型个人网站,可以改成 3
MaxSpareServers 10 <=若是小站或是一般小型个人网站,可以改成 5
StartServers 5
MaxClients 150 <=若是小站或是一般小型个人网站,可以改成 100
上面两个是打开 httpd 服务数目的地方,当你运行 httpd 之后,
在 shell 下运行 ps -aux|grep httpd 就可以看到 httpd 的数目量,
通常这与你的 RAM 有关,如果是小站的话,可以设小一点,
例如最小设 3 最大设 5 即可!而 StartServers 则设与 Min 相同即可!
至于 MaxClients 则可以设小一点,因为设置太大很耗系统资源,
而太小则无法让很多人连上来!所以可以设成例如 100。Port 80
这东西尽量不用动,因为 www 服务的缺省通信口(port)就是 80,
除非你要自己架一个别人连不进来的网站(内部网站),User nobody
Group nobody
将 apache 缺省为 nobody 这个人及群组!意即所有人皆可以使用ServerAdmin vbird@vbird.adsldns.org
这个是设置你的机器的 httpd 管理员帐号!设成你的帐号吧!ServerName vbird.adsldns.org
这是你主机的名称,先将前面的注解符号拿掉吧!
请设置吧,如果你没有主机名称,就选 localhost 吧!BindAddress *
这是用来允许你的 WWW 接受虚拟 IP 的机器的项目,例如你的虚拟网域为
192.168.1.0 ,则可以将 * 改成 192.168.1.0 喔!通常如果要接受虚拟 IP 的话,
直接打 * 就好了!
- 2. 路径设置:以下的参数在设置每一个网页或者是服务的路径所在!(旧版在 access.conf 中)
基本上均使用默认值也就可以了!
DocumentRoot "/usr/local/apache/htdocs"
上面这个在设置你的主机的主要首页所在,由于我们设置主机名称
为:vbird.adsldns.org ,则当别人在网址列上打入 vbird.adsldns.org 时,
系统将会把 /usr/local/apache/htdocs 这个路径下的首页文件传出去!
你也可以自行改变这个路径!<Directory "/usr/local/apache/htdocs">
Options Indexes ExecCGI FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
Allow from all
</Directory>
上面显示在主机主网页放置的目录下 WWW 所可以进行的事情!
options 为网页可以进行的工作,可以复选,有以下的几个项目:
ExecCGI:表示可以在这个目录中运行 CGI 程序;
FollowSymLinks:表示可以链接至他处;
MultiViews:表示可以运行动画、音乐等项目
AllowOverride None 表示任何人都可以读取数据;
至于Allow from all 则表示你的主机接受任何位置来源的连接。<IfModule mod_userdir.c>
UserDir public_html
</IfModule>
上面这个选项需要打开,那样你的用户帐号才可以有首页!
而你用户的首页放置在 /home/user/public_html 下,你可以将
public_html 改成 WWW ,则用户的首页就需要放在
/home/user/www,若以上面的设置,则以我为例,我的首页需要放在
/home/vbird/public_html 底下才行!<IfModule mod_dir.c>
DirectoryIndex index.html index.htm index.php
</IfModule>
这个是用来说明首页的文件名称,通常默认值是 index.html,但是有些
网页编辑器的附文件名是 index.htm ,所以你可以加上后面的几个文件名,
如此一来,你的首页就可以支持多种文件名了!
- 3. 打开 PHP 与其他模块:由于我们需要可以支持 php 模块的 apache ,所以需要将这个模块打开喔!
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
将这两个模块的注解取消,请注意,这个是 php4 的模块,不要与 php3 模块搞混了!
因为我们是安装 php4 版的幽!AddHandler cgi-script .cgi
上面这一行的注解也可以拿掉,这样用户端才能使用 CGI 程序!
- 4. 打开 Apache 状态栏:我们可以通过 IE 等浏览器来观看主机的 apache 运行情况,若你需要这个服务,就要将下面的注解取消掉:
<Location /server-status>
SetHandler server-status
Order deny,allow
Deny from all
Allow from .your_domain.com
</Location>
<Location /server-info>
SetHandler server-info
Order deny,allow
Deny from all
Allow from .your_domain.com
</Location>
将上面的 .your_domain.com 改成你的 DNS ,
例如我可以改成 .adsldns.org 喔!这样一来,
只有 adsldns.org 的机器可以看到你的 apache 的运行状态!
如何观看,以我为例,只要在网址列输入
http://www.vbird.adsldns.org/server-status
http://www.vbird.adsldns.org/server-info
则来自 adsldns.org 的用户即可看到我的主机状态!- 5. 重新启动:只要下达 /usr/local/apache/bin/apachectl restart 即可运行 httpd 啰!到这里就设置完毕了,运行你的 IE 连上你的网络看看吧!(如果有问题的话,请重新启动 Linux 吧!)
[root @tsai
/root]# vi /usr/local/apache/htdocs/test.php
<? phpinfo( ); ?> |
[root @tsai
/root]# vi /usr/local/apache/htdocs/mysqltest.html
<html> <body> <? $link=mysql_connect('localhost','root'); mysql_select_db('mysql'); $str="select * from user;"; $result=mysql_query($str,$link); $show=mysql_num_rows($result); mysql_close($link); for ($i=0;$i < $show;$i++) { $arr[$i]=mysql_fetch_array($result); }; ?> <table align=center border=1> <tr align=center> <td>Host</td> <td>User</td> <td>Password</td> </tr> <?for ($i=0;$i<$show;$i++){?> <tr> <td><?echo $arr[$i][Host]?></td> <td><?echo $arr[$i][User]?></td> <td><?echo $arr[$i][Password]?></td> </tr> <?};?> </body> </html> |
如果你的网站支持给用户放置个人网页的话,那你的个人网页在哪里呢?刚刚我们有提到在 httpd.conf 的设置中,有一项关于个人首页的设置,通常如果你不设置 httpd.conf 文件的话,他的默认值都是 public_html ,好了,那要如何设置个人网页呢?假设以 vbird 这个帐号为例,我们可以这样进行:
然后在你的目录中,亦即 /home/vbird/public_html 当中,创建一个文件名为 index.html 的 HTML 文件,例如我们刚刚测试的 php 的文件,然后在 IE 的网址列打入 http://你的网站名称/~vbird/ 则 apache 会自动将 IE 的消息传到 /home/vbird/public_html 这个目录中,并搜索文件名为 index.html 或 index.htm 或 index.php 的文件名!所以说, index.html 是 apache 第一个找寻的文件名喔!这就是你的首页啦!
[vbird @vbird vbird]$ mkdir public_html
[vbird @vbird vbird]$ chmod 755 public_html
[vbird @vbird vbird]$ chmod 755 /home/vbird
在你的用户端家目录中创建了一个 public_html 的目录,
并将此目录的权限改成可以让其他人观看,注意喔, apache
缺省是 public_html ,但是如果你在 httpd.conf 这个文件中
改变了目录名称,则必须作适当的修正喔!
然后你就可以经由 php 写你的网页数据,并将之放置在 public_html 这个目录下,就好了!不过用这个方法写网页时,需要注意的是,附文件名是 php3 的文件将不会被运行,所以你要将 php3 改成 php 比较妥当!