Linux怎么搭建Web服务器,第1张

1开始说明

本教程中使用的IP地址是1921680100,主机名称为Server1examplecom 这些设置可能会有所不同,你需要根据不同情况进行修改。

CentOS 62下安装MySQL

2开始安装MySQL5

首先我们应该先用下面的命令安装MySQL:

yum install mysql mysql-server

然后我们需要创建MySQL系统的启动键链接启动MySQL服务器,这样以便于MySQL在系统启动时自动启动

chkconfig --levels 235 mysqld on

/etc/initd/mysqld start

为MySQL root帐户设置密码:

mysql_secure_installation

会出现下面的一系列提示:

root@server1 ~]# mysql_secure_installation

NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MySQL

SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY!

In order to log into MySQL to secure it, we'll need the current

password for the root user If you've just installed MySQL, and

you haven't set the root password yet, the password will be blank,

so you should just press enter here

Enter current password for root (enter for none):

OK, successfully used password, moving on

Setting the root password ensures that nobody can log into the MySQL

root user without the proper authorisation

Set root password [Y/n] <-- ENTER

New password: <-- yourrootsqlpassword

Re-enter new password: <-- yourrootsqlpassword

Password updated successfully!

Reloading privilege tables

Success!

By default, a MySQL installation has an anonymous user, allowing anyone

to log into MySQL without having to have a user account created for

them This is intended only for testing, and to make the installation

go a bit smoother You should remove them before moving into a

production environment

Remove anonymous users [Y/n] <-- ENTER

Success!

Normally, root should only be allowed to connect from 'localhost' This

ensures that someone cannot guess at the root password from the network

Disallow root login remotely [Y/n] <-- ENTER

Success!

By default, MySQL comes with a database named 'test' that anyone can

access This is also intended only for testing, and should be removed

before moving into a production environment

Remove test database and access to it [Y/n] <-- ENTER

- Dropping test database

Success!

- Removing privileges on test database

Success!

Reloading the privilege tables will ensure that all changes made so far

will take effect immediately

Reload privilege tables now [Y/n] <-- ENTER

Success!

Cleaning up

All done! If you've completed all of the above steps, your MySQL

installation should now be secure

Thanks for using MySQL!

[root@server1 ~]#

CentOS 62下安装Apache

3安装阿帕奇2

Apache2的是作为一个CentOS的软件包,因此我们可以直接用下面命令安装它:

yum install httpd

现在配置系统在引导时启动Apache

chkconfig --levels 235 httpd on

并启动Apache

/etc/initd/httpd start

现在,您的浏览器到http://1921680100,你应该看到Apache2的测试页:

Apache 2测试网页

Apache的默认文档根目录是在CentOS上的/var/www/html 目录 ,配置文件是/etc/httpd/conf/httpdconf。配置存储在的/etc/httpd/confd/目录。

4安装PHP5

我们可以用下面的命令来安装PHP5

yum install php

安装完需要重启

/etc/initd/httpd restart

CentOS 62下安装PHP5

5我们可以安装PHP5和Apache的PHP5的模块如下:

默认网站的文件根目录是在/srv/www/html中。现在我们将在该目录中创建一个小型PHP文件(infophp的)在浏览器中调用它。该文件将显示很多关于我们的PHP安装,如安装的PHP版本和有用的一些细节。

vi /var/www/html/infophp

修改细节

现在,我们可以用浏览器访问例如http://1921680100/infophp文件

PHP页面

正如你所看到的,PHP5的工作,它通过Apache 20的处理程序,在服务器API线。如果你继续向下滚动,你会看到所有在PHP5中已经启用的模块。MySQL是没有列出,这意味着我们没有在PHP5支持MySQL。

6PHP5获得MySOL的支持

让PHP在MySQL中获得支持,我们可以安装的php-mysql软件包。安装一些其他的PHP5模块,以及您可能需要的应用程序,这是一个好主意:

yum search php

还安装需要安装的

yum install php-mysql php-gd php-imap php-ldap php-mbstring php-odbc php-pear php-xml php-xmlrpc

现在重新启动Apache2的:

/etc/initd/httpd restart

现在,重载http://1921680100/infophp在您的浏览器,并再次向下滚动到模块部分。现在,你应该找到许多新的模块,包括MySQL模块:

MySQL页面

CentOS 62下安装phpMyAdmin

7安装phpMyAdmin

phpMyAdmin是一个网络接口,通过它可以管理你的MySQL数据库。

首先,我们使CentOS系统RPMForge软件库的phpMyAdmin,而不是官方的CentOS 62库:

所以需要导入RPMForge的GPG密钥:

rpm --import http://dagwieerscom/rpm/packages/RPM-GPG-KEYdagtxt

x86_64系统:

yum install http://pkgsrepoforgeorg/rpmforge-release/rpmforge-release-052-2el6rfx86_64rpm

在i386系统:

yum install http://pkgsrepoforgeorg/rpmforge-release/rpmforge-release-052-2el6rfi686rpm

安装phpmyadmin

yum install phpmyadmin

现在我们可以设置phpMyAdmin,了我们可以改变Apache的配置来让phpMyAdmin不仅仅只能从localhost登录。

vi /etc/httpd/confd/phpmyadminconf

配置

下一步,我们从HTTP改变的phpMyAdmin的cookie来身份验证:

vi /usr/share/phpmyadmin/configincphp

修改身份验证

重启阿帕奇

/etc/initd/httpd restart

在地址栏输入http://1921680100/phpMyAdmin/:你就可以访问phpMyAdmin了。

phpmyadmin页面

CentOS可以得到RHEL的所有功能,甚至是更好的软件。但CentOS并不向用户提供商业支持,当然也不负上任何商业责任。

如果你要将你的RHEL转到CentOS上,因为不希望为RHEL升级而付费。当然,你必须有丰富linux使用经验,因此RHEL的商业技术支持对你来说并不重要。但如果你是单纯的业务型企业,那么还是建议你选购RHEL软件并购买相应服务。这样可以节省你的IT管理费用,并可得到专业服务。

Apache服务器的设置文件位于/usr/local/apache/conf/目录下,传统上使用三个配置文件httpdconf,accessconf和srmconf,来配置Apache服务器的行为。

httpdconf提供了最基本的服务器配置,是对守护程序httpd如何运行的技术描述;srmconf是服务器的资源映射文件,告诉服务器各种文件的MIME类型,以及如何支持这些文件;accessconf用于配置服务器的访问权限,控制不同用户和计算机的访问限制;这三个配置文件控制着服务器的各个方面的特性,因此为了正常运行服务器便需要设置好这三个文件。

除了这三个设置文件之外,Apache还使用mimetypes文件用于标识不同文件对应的MIME类型, magic文件设置不同MIME类型文件的一些特殊标识,使得Apache 服务器从文档后缀不能判断出文件的MIME 类型时,能通过文件内容中的这些特殊标记来判断文档的MIME类型。

bash-202$ ls -l /usr/local/apache/conf

total 100

-rw-r--r-- 1 root wheel 348 Apr 16 16:01 accessconf

-rw-r--r-- 1 root wheel 348 Feb 13 13:33 accessconfdefault

-rw-r--r-- 1 root wheel 30331 May 26 08:55 httpdconf

-rw-r--r-- 1 root wheel 29953 Feb 13 13:33 httpdconfdefault

-rw-r--r-- 1 root wheel 12441 Apr 19 15:42 magic

-rw-r--r-- 1 root wheel 12441 Feb 13 13:33 magicdefault

-rw-r--r-- 1 root wheel 7334 Feb 13 13:33 mimetypes

-rw-r--r-- 1 root wheel 383 May 13 17:01 srmconf

-rw-r--r-- 1 root wheel 357 Feb 13 13:33 srmconfdefault

事实上当前版本的Apache将原来httpdconf、srmconf与accessconf中的所有配置参数均放在了一个配置文件httpdconf中,只是为了与以前的版本兼容的原因(使用这三个设置文件的方式来源于NCSA-httpd),才使用三个配置文件。而提供的accessconf和srmconf文件中没有具体的设置。

由于在新版本的Apache中,所有的设置都被放在了httpdconf中,因此只需要调整这个文件中的设置。以下使用缺省提供的httpdconf为例,解释Apache服务器的各个设置选项。然而不必因为它提供设置的参数太多而烦恼,基本上这些参数都很明确,也可以不加改动运行Apache服务器。但如果需要调整Apache服务器的性能,以及增加对某种特性的支持,就需要了解这些设置参数的含义。

关于Apache服务器的性能,在Internet上存在很大的争议,基本上使用Apache的使用者几乎都不怀疑它的优秀性能,Apache也支撑了很多著名的高负载的网站,但是在商业机构的评测中,Apache往往得分不高。很多人指出,在这些评测中,商业Web服务器及其操作系统往往由其专业公司的工程师进行过性能调整,而Free 的操作系统和Web服务器往往就使用其缺省配置或仅仅作很小的更改。需要指出的是,除了操作系统的性能调整之外,Apache 服务器本身的缺省配置绝不是最优化和最高效的,而是要适应几乎所有种类操作系统、所有种类硬件下的设置,多平台的软件不可能为特定平台和特定硬件提供最优化的缺省配置。因此要使用Apache的时候,性能调整是必不可少的。

在商业评测中忽略了的另一个事实是,评测时往往对不同种类的功能进行比较,例如使用Apache的标准CGI 的性能与ISAPI,NSAPI等服务器端API比较,事实上Apache服务器与此可以比较的功能为modperl ,FastCGI,与ASP类似的功能为PHP等等,只不过由于Apache的开放模式,这些功能是由独立的开发组,作为独立的模块来实现的。但是在评测中,测试人员没有加入相应的模块评测其性能。

HTTP守护进程的运行参数

httpdconf中首先定义了一些httpd守护进程运行时需要的参数,来决定其运行方式和运行环境。

ServerType standalone

ServerType定义服务器的启动方式,缺省值为独立方式standalone,httpd

服务器将由其本身启动,并驻留在主机中监视连接请求。在Linux下将在启动文件 /etc/rcd/rclocal/initd/apache中自动启动Web服务器,这种方式是推荐设置。

启动Apache服务器的另一种方式是inet方式,使用超级服务器inetd监视连接请求并启动服务器。当需要使用inetd启动方式时,便需要更改为这个设置,并屏蔽/etc/rcd/rclocal/initd/apache文件,以及更改/etc/inetdconf并重起inetd,那么Apache就能从inetd中启动了。

两种方式的区别是独立方式是由服务器自身管理自己的启动进程,这样在启动时能立即启动服务器的多个副本,每个副本都驻留在内存中,一有连接请求不需要生成子进程就可以立即进行处理,对于客户浏览器的请求反应更快,性能较高。而 inetd方式要由inetd发现有连接请求后才去启动http服务器,由于inetd 要监听太多的端口,因此反应较慢、效率较低,但节约了没有连接请求时Web服务器占用的资源。因此inetd方式只用于偶尔被访问并且不要求访问速度的服务器上。事实上inetd方式不适合http的突发和多连接的特性,因为一个页面可能包含多个图象,而每个图象都会引起一个连接请求,即使虽然访问人数造成教少,但瞬间的连接请求并不少,这就受到inetd性能的限制,甚至会影响由inetd启动的其他服务器程序。

ServerRoot "/usr/local"

ServerRoot用于指定守护进程httpd的运行目录,httpd在启动之后将自动将进程的当前目录改变为这个目录,因此如果设置文件中指定的文件或目录是相对路径,那么真实路径就位于这个ServerRoot定义的路径之下。

由于httpd会经常进行并发的文件操作,就需要使用加锁的方式来保证文件操作不冲突,由于NFS文件系统在文件加锁方面能力有限,因此这个目录应该是本地磁盘文件系统,而不应该使用NFS文件系统。

#LockFile /var/run/httpdlock

LockFile参数指定了httpd守护进程的加锁文件,一般不需要设置这个参数, Apache服务器将自动在ServerRoot下面的路径中进行操作。但如果ServerRoot为NFS文件系统,便需要使用这个参数指定本地文件系统中的路径。

PidFile /var/run/httpdpid

PidFile指定的文件将记录httpd守护进程的进程号,由于httpd能自动复制其自身,因此系统中有多个httpd进程,但只有一个进程为最初启动的进程,它为其他进程的父进程,对这个进程发送信号将影响所有的httpd进程。PidFILE定义的文件中就记录httpd父进程的进程号。

ScoreBoardFile /var/run/httpdscoreboard

httpd使用ScoreBoardFile来维护进程的内部数据,因此通常不需要改变这个参数,除非管理员想在一台计算机上运行几个Apache服务器,这时每个Apache服务器都需要独立的设置文件htt pdconf,并使用不同的ScoreBoardFile。

#ResourceConfig conf/srmconf

#AccessConfig conf/accessconf

这两个参数ResourceConfig和AccessConfig,就用于和使用 srmconf 和 accessconf 设置文件的老版本Apache兼容。如果没有兼容的需要,可以将对应的设置文件指定为/dev/null,这将表示不存在其他设置文件,而仅使用httpdconf 一个文件来保存所有的设置选项。

Timeout 300

Timeout定义客户程序和服务器连接的超时间隔,超过这个时间间隔(秒)后服务器将断开与客户机的连接。

KeepAlive On

在HTTP 10中,一次连接只能作传输一次HTTP请求,而KeepAlive参数用于支持HTTP 11版本的一次连接、多次传输功能,这样就可以在一次连接中传递多个HTTP请求。虽然只有较新的浏览器才支持这个功能,但还是打开使用这个选项。

MaxKeepAliveRequests 100

MaxKeepAliveRequests为一次连接可以进行的HTTP请求的最大请求次数。将其值设为0将支持在一次连接内进行无限次的传输请求。事实上没有客户程序在一次连接中请求太多的页面,通常达不到这个上限就完成连接了。

KeepAliveTimeout 15

KeepAliveTimeout测试一次连接中的多次请求传输之间的时间,如果服务器已经完成了一次请求,但一直没有接收到客户程序的下一次请求,在间隔超过了这个参数设置的值之后,服务器就断开连接。

MinSpareServers 5MaxSpareServers 10

在使用子进程处理HTTP请求的Web服务器上,由于要首先生成子进程才能处理客户的请求,因此反应时间就有一点延迟。但是,Apache服务器使用了一个特殊技术来摆脱这个问题,这就是预先生成多个空余的子进程驻留在系统中,一旦有请求出现,就立即使用这些空余的子进程进行处理,这样就不存在生成子进程造成的延迟了。在运行中随着客户请求的增多,启动的子进程会随之增多,但这些服务器副本在处理完一次HTTP请求之后并不立即退出,而是停留在计算机中等待下次请求。但是空余的子进程副本不能光增加不减少,太多的空余子进程没有处理任务,也占用服务器的处理能力,因此也要限制空余副本的数量,使其保持一个合适的数量,使得既能及时回应客户请求,又能减少不必要的进程数量。

因此就可以使用参数MinSpareServers来设置最少的空余子进程数量, 以及使用参数MaxSpareServers 来限制最多的空闲子进程数量,多余的服务器进程副本就会退出。根据服务器的实际情况来进行设置,如果服务器性能较高,并且也被频繁访问,就应该增大这两个参数的设置。对于高负载的专业网站,这两个值应该大致相同,并且等同于系统支持的最多服务器副本数量,也减少不必要的副本退出。

StartServers 5

StartServers参数就是用来设置httpd启动时启动的子进程副本数量,这个参数与上面定义的MinSpareServers和MaxSpareServers参数相关,都是用于启动空闲子进程以提高服务器的反应速度的。这个参数应该设置为前两个值之间的一个数值,小于MinSpareServers和大于MaxS pareServers都没有意义。

MaxClients 150

在另一方面,服务器的能力毕竟是有限的,不可能同时处理无限多的连接请求,因此参数Maxclient s就用于规定服务器支持的最多并发访问的客户数,如果这个值设置得过大,系统在繁忙时不得不在过多的进程之间进行切换来为太多的客户进行服务,这样对每个客户的反应就会减慢,并降低了整体的效率。如果这个值设置的较小,那么系统繁忙时就会拒绝一些客户的连接请求。当服务器性能较高时,就可以适当增加这个值的设置。对于专业网站,应该使用提高服务器效率的策略,因此这个参数不能超过硬件本身的限制,如果频繁出现拒绝访问现象,就说明需要升级服务器硬件了。对于非专业网站,不太在意对客户浏览器的反应速度,或者认为反应速度较慢也比拒绝连接好,就也可以略微超过硬件条件来设置这个参数。

这个参数限制了MinSpareServers和MaxSpareServers的设置,它们不应该大于这个参数的设置。

MaxRequestsPerChild 30

使用子进程的方式提供服务的Web服务,常用的方式是一个子进程为一次连接服务,这样造成的问题就是每次连接都需要生成、退出子进程的系统操作,使得这些额外的处理过程占据了计算机的大量处理能力。因此最好的方式是一个子进程可以为多次连接请求服务,这样就不需要这些生成、退出进程的系统消耗,Apache就采用了这样的方式,一次连接结束后,子进程并不退出,而是停留在系统中等待下一次服务请求,这样就极大的提高了性能。

但由于在处理过程中子进程要不断的申请和释放内存,次数多了就会造成一些内存垃圾,就会影响系统的稳定性,并且影响系统资源的有效利用。因此在一个副本处理过一定次数的请求之后,就可以让这个子进程副本退出,再从原始的httpd进程中重新复制一个干净的副本,这样就能提高系统的稳定性。这样,每个子进程处理服务请求次数由MaxRe questPerChild定义。 缺省的设置值为30,这个值对于具备高稳定性特点的Linux系统来讲是过于保守的设置,可以设置为1000甚至更高,设置为0支持每个副本进行无限次的服务处理。

#Listen 3000

#Listen 12345678:80

#BindAddress

Listen参数可以指定服务器除了监视标准的80端口之外,还监视其他端口的HTTP请求。由于FreeBSD系统可以同时拥有多个IP地址,因此也可以指定服务器只听取对某个BindAddress< /B>的IP地址的HTTP请求。如果没有配置这一项,则服务器会回应对所有IP的请求。

即使使用了BindAddress参数,使得服务器只回应对一个IP地址的请求,但是通过使用扩展的Listen参数,仍然可以让HTTP守护进程回应对其他IP地址的请求。此时Listen参数的用法与上面的第二个例子相同。这种比较复杂的用法主要用于设置虚拟主机。此后可以用VirtualHost参数定义对不同IP的虚拟主机,然而这种用法是较早的HTTP 10标准中设置虚拟主机的方法,每针对一个虚拟主机就需要一个IP地址,实际上用处并不大。在HTTP 11中,增加了对单IP地址多域名的虚拟主机的支持,使得虚拟主机的设置具备更大的意义。

LoadModule mime_magic_module libexec/apache/mod_mime_magicso

LoadModule info_module libexec/apache/mod_infoso

LoadModule speling_module libexec/apache/mod_spelingso

LoadModule proxy_module libexec/apache/libproxyso

LoadModule rewrite_module libexec/apache/mod_rewriteso

LoadModule anon_auth_module libexec/apache/mod_auth_anonso

LoadModule db_auth_module libexec/apache/mod_auth_dbso

LoadModule digest_module libexec/apache/mod_digestso

LoadModule cern_meta_module libexec/apache/mod_cern_metaso

LoadModule expires_module libexec/apache/mod_expiresso

LoadModule headers_module libexec/apache/mod_headersso

LoadModule usertrack_module libexec/apache/mod_usertrackso

LoadModule unique_id_module libexec/apache/mod_unique_idso

ClearModuleList

AddModule mod_envc

AddModule mod_log_configc

AddModule mod_mime_magicc

AddModule mod_mimec

AddModule mod_negotiationc

AddModule mod_statusc

AddModule mod_infoc

AddModule mod_includec

AddModule mod_autoindexc

AddModule mod_dirc

AddModule mod_cgic

AddModule mod_asisc

AddModule mod_imapc

AddModule mod_actionsc

AddModule mod_spelingc

AddModule mod_userdirc

AddModule mod_proxyc

AddModule mod_aliasc

AddModule mod_rewritec

AddModule mod_accessc

AddModule mod_authc

AddModule mod_auth_anonc

AddModule mod_auth_dbc

AddModule mod_digestc

AddModule mod_cern_metac

AddModule mod_expiresc

AddModule mod_headersc

AddModule mod_usertrackc

AddModule mod_unique_idc

AddModule mod_soc

AddModule mod_setenvifc

Apache服务器的一个重要特性就是其模块化的结构,这不但表现为其能在编译时能通过新的模块加入新的功能,还表现为其模块可以动态加载入http服务程序中,而不必载入不需要的模块。使用Apache的动态加载模块只需要设置好Load Module和AddModule参数就可以了,这种特性就是Apache的 DSO(Dynamic Shared Object)特性,然而要想充分使用DSO特性仍然不是一个简单的事情,不适当的改动这里的设置就可能造成服务器不能正常启动。因此如果不是要增加或减少服务器提供的功能,就不要改动这里的设置。

上面这些列表就显示了Linux下的缺省Apache服务器支持的模块,事实上很多模块是没有必要的,不必要模块不会被载入内存。模块可以静态连接到pache 服务器内部,也可以这样动态加载,将Apache的特性都编译成动态可加载模块是该Port的做法,而不是Apache的缺省做法,这样就以牺牲很小的性能的同时,带来极大的灵活性。

因而动态可加载的能力还是对性能有轻微的影响,因此可以重新编译Apache,将自己所需要的功能编译进Apache 服务器内部,可以让系统显得更为干净,效率也有轻微的提高。通常仅仅为了这一个目的就重新编译Apache是没有必要的,如果需要增加其他特性而重新编译Apache,不妨在增加其他模块的同时将所有的模块都静态连接入Apache 服务器。有的使用者更喜欢动态加载模块,那么也不妨全部都使用动态加载模块。

这些模块都被放置到/usr/local/apache/libexec/目录下, 每个模块对应Apache服务器的一个特性。详细解释每个模块的功能需要相当多的篇幅,其中比较重要的特性将在后面相应的地方中进行解释,而具体每个模块的功能及用法就需要查看Apache的文档。

#ExtendedStatus On

Apache服务器可以通过特殊的HTTP请求,来报告自身的运行状态,打开这个ExtendedStatus 参数可以让服务器报告更全面的运行状态信息。

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » Linux怎么搭建Web服务器

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情