用Apache架设Web服务器(详解)

用Apache架设Web服务器(详解)
用Apache架设Web服务器(详解)

建立Linux下的Web服务器可以选用Netscape的Enterprise Server,或者使用免费软件Apache。

Netscape可以完全支持基于IP的虚拟主机,但对基于域名的虚拟主机却不支持,因此只能显示

最外面的一层网页。基于IP的虚拟主机需要一个独立的IP;基于域名的虚拟主机,可以多个虚拟主机共用一个IP。利用HTTP 1.1协议,靠不同的域名来区分可以大大节省IP地址资源。Apache完全支持以上两种虚拟主机方式,并且克服了Netscape经常出现服务塞死的现象。Apache是目前互联网上使用广泛的Web服务器。下面详细讲解如何利用Apache来架设自己的Web服务器。

安装

首先我们要介绍Apache的安装过程。

第一,先到https://www.360docs.net/doc/a014373714.html,下载最新版本的Apache。如果是在Windows下,把该文件下载在C 盘,C盘在Linux中对应于/dev/hda1。

第二,进入Linux,并以root的身份登录并进行挂接文件系统。

#mkdir c

#mount-t vfat/dev/hda1/c

因为我们将Apache的源码放置于c盘,所以现在要先把它挂载至新建的目录/c里面。

第三,把此程序拷贝到/tmp下,以便操作。

#cp/c/apache_1.3.9.tar.gz/tmp

注意:Linux下所有的文件名都是区分大小写的。接下来,我们就要把源码从压缩包中解压缩出来。相应的命令为:

#cd/tmp

#tar zxvf apache_1.3.9.tar.gz

解压缩后进入存放源码的目录,使用编译配置脚本进行环境的设置。

#cd/tmp/apache_1.3.9

#./configure--sysconfdir=/etc/httpd

--datadir=/home/httpd

--logfiledir=/var/log/httpd

--enable-module=most

--enable-shared=max

--disable-rule=WANTHSREGEX这里告诉Apache把配置文件保存在/etc/httpd目录中,其它文件(例如HTML手册文档、CGI-BIN目录)都保存在/home/httpd目录下。也告诉Apache将最常用的模块作为DSO模块编译。DSO就是Dynamic Shared Object的缩写。通过DSO支持的模式编译Apache,能够随时从Apache里面增加和移除模块,而不需要重新编译它,具体的模块见下文。

第四,在执行./configure之后,配置脚本会自动生成Makefile。这时,我们就可以开始编译源码了。

#make

源码编译完成后,就要使用make install安装Apache至缺省的目录下。当然也可以通过以下命令:

#rpm-ivh apache*.rpm

安装Apache的RPM包。这种方法较为简单,因此不再详细介绍。

配置

安装完Apache后,开始它的配置工作。在其主目录下有httpd.conf、access.conf、srm.conf 及Magic等四个文件,其中httpd.conf是主要的配置文件,access.conf是访问控制配置文件,sr m.conf则是对于Web主机的文件资源的配置文件。Magic是针对mime模块的设置,我们一般不改动这个文件。

在Apache运行的时候,它先调用httpd.conf,接着是srm.conf,最后是access.conf。在较新的Apache发行版本中,它建议srm.conf和access.conf两个文件的内容为空,把设置选项完全存放在httpd.conf之中,这样会更加有利于服务器的安全性。

下面就以httpd.conf来开始我们神奇的Web网络世界。

1.全局环境变量的设置

httpd.conf是以全局环境变量的设置开始的。我们将要一步步介绍其具体的参数。

ServerType standalone

ServerRoot"/etc/httpd"

第一行“ServerType”指令,说明Apache是以一个独立的(Standalone)守护进程的身份运行于后台,还是由另外的后台守护进程(Xinetd)在接到HTTP请求的时候唤醒。对于正式的互联网站点来说,standalone可以提供比xinetd方式更快的客户端响应速度。因此我们选用standalon e模式。第二行代码介绍了该服务器配置文件的相对根目录,一般是/etc/httpd,我们在安装时已经设置好。请注意,不要在此目录最后加“/”。

LockFile/var/lock/httpd.lock

PidFile/var/run/httpd.pid

ScoreBoardFile/var/run/httpd.scoreboard

LockFile在安装Apache时指定选用了USE_FCNTL_SERIALIZED_ACCEPT,USE_FLOC K_SERIALIZED_ACCEPT等参数。作为Apache连接出现错误的记录文件,它会把进程的PID 值自动加在该文件中。请注意,该文件应保存在本地的硬盘中。PidFile记录着每次服务器运行时的进程号。ScoreBoardFile是某些特定系统上服务程序中父子进程通讯记录的文件。

#ResourceConfig conf/srm.conf

#AccessConfig conf/access.conf

以上两项是指定服务器资源及控制权限的文件,在默认情况下并不使用它们。

Timeout300

KeepAlive On

MaxKeepAliveRequests100

KeepAliveTimeout15这四项设定了服务器的连接属性。第一行说明了TCP中ack的响应时间为300秒;第二项表示是否保持服务响应的连接;紧接着的两项定义了这种连接的最大响应数目及响应时间。如果MaxKeepAliveRequests设为0,那它便是unlimited,当然这就要考虑系统的承载能力了。

MinSpareServers5

MaxSpareServers20

StartServers8

这三项定义了服务程序的最小、最大空的子进程数目及服务程序开始时的进程数。5、20、8分别是它们的默认数值。

MaxClients150

MaxRequestsPerChild100

以上两行定义了同一时刻最多的客户连接数目和每个连接的子进程数。

Listen3000

Listen12.34.56.78:80

BindAddress*

这里定义了服务程序监听来自以上IP、端口号的Request。由于BindAddress只支持*(代表所有的IP),所以产生了Listen这个参数以便更灵活地处理客户机的响应。

ExtendedStatus On/Off

这条指令说明了是否跟踪服务程序所产生的扩展状态。

以下是对于DSO的支持,分别利用了LoadModule、AddModule参数。我们可以阅读表1,加载自己所需要的模块。

2.主服务器设置

下面设置主服务器(非虚拟服务主机)。

Port80

这个参数给出了服务程序开启监听的端口号为80。

User nobody

Group nobody

ServerAdmin root@localhost

ServerName localhost

上面的第一、二行代表了打开服务进程的用户名和用户组名。第三、四行则是管理员的邮件地址和此服务器的主机名。

DocumentRoot"/home/httpd/html"

DirectoryIndex index.html index.htm index.shtml index.cgi

UserDir public_html

面前两行定义了网页的主目录和首页名称。UserDir给出了用户的绝对路径,也就是说明个人主页存放路径。

AccessFileName.htaccess

此指令指定了每个目录下的文件权限是由.htaccess决定。当Apache试图读取某一目录下的文件时,它将先查阅“.htaccess”文件中所列的访问控制指令,并执行相应的操作。

Mime的文件定义类型是由下面的两句所决定:

TypesConfig/etc/mime.types

MIMEMagicFile share/magic

AddLanguage en.en

此参数可以增加对多种语言的支持。

ErrorLog/var/log/httpd/error_log

LogLevel warn

CustomLog/var/log/httpd/access_log common

上面这些代码代表了客户机访问服务器的一些日志文件。

完成全局设置后,我们还要针对每个目录的权限进行特定的配置。3.目录权限的配置

我们只以一个目录为例,其它的路径可以类推。

<Directory/home/*/public_html>

AllowOverride FileInfo AuthConfig Limit

Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec

<Limit GET POST OPTIONS PROPFIND>

Order allow,deny

Allow from all

</Limit>

<Limit PUT DELETE PATCH PROPPATCH MKCOL COPY MOVE LOCK UNLOCK >

Order deny,allow

Deny from all

</Limit>

</Directory>

这一段定义了/home/*/public_html目录下可以或禁止进行的文件操作,以及客户机的受限范围。

4.虚拟主机配置

虚拟主机配置是Apache最精彩的地方之一,很多的ASP也是利用Apache这个特性来提供优质服务的。

<VirtualHost https://www.360docs.net/doc/a014373714.html,>

SSLDisable

ServerAdmin webmaster@https://www.360docs.net/doc/a014373714.html,

DocumentRoot/var/httpd/virt

ScriptAlias/cgi-bin//var/httpd/virt/cgi-bin/

ServerName https://www.360docs.net/doc/a014373714.html,

ErrorLog logs/virt-error.log

TransferLog logs/virt-access.log

</VirtualHost>

我们可以看到它的语法和真正主机设置相差甚小,因此不再介绍。

实例

最后以我自己的Apache(httpd.conf)为例来结束我们的讲解。

ServerType standalone

Port80

Listen80

Listen1024

User wwwrun

Group wwwrun

ServerAdmin webmaster@https://www.360docs.net/doc/a014373714.html,

ServerRoot/etc/httpd

ErrorLog logs/error_log

TransferLog logs/access_log

PidFile logs/httpd.pid

ServerName https://www.360docs.net/doc/a014373714.html,

MinSpareServers3

MaxSpareServers20

StartServers3

如图1所示。

图1虚拟主机1<VirtualHost https://www.360docs.net/doc/a014373714.html,:80>

SSLDisable

ServerAdmin webmaster@https://www.360docs.net/doc/a014373714.html,

DocumentRoot/var/httpd/wudi1

ScriptAlias/cgi-bin//var/httpd/wudi1/cgi-bin/

ServerName https://www.360docs.net/doc/a014373714.html,

ErrorLog logs/virt1-error.log

TransferLog logs/virt1-access.log

User virt1admin

Group users

</VirtualHost>

如图2所示。

图2虚拟主机2

<VirtualHost https://www.360docs.net/doc/a014373714.html,:1024>

ServerAdmin webmaster@https://www.360docs.net/doc/a014373714.html,

DocumentRoot/var/httpd/wudi2

ScriptAlias/cgi-bin//var/httpd/wudi2/cgi-bin/

ServerName https://www.360docs.net/doc/a014373714.html,

ErrorLog logs/virt1-ssl-error.log

TransferLog logs/virt1-ssl-access.log

User virt1admin

Group users

</VirtualHost>

结束配置工作,用户就可以选择系统启动时是否启动Apache Web服务器(在缺省安装的情况下,Apache Web服务器进程httpd是自动启动的)。

chkconfig235apache on

或者用户也可以选择每次手工启动Apache Web服务器。手工启动/停止/重起Apache Web 服务器后台守护进程httpd,可通过在命令“/etc/rc.d/init.d/httpd”后面加上参数“start/stop/restart”来

进行的。

/etc/rc.d/init.d/httpd start

经过上述的操作,就可以建立起自己的网站了。

Apache是一款优秀的免费软件,它不仅是一个知名的Web服务器,还是较为方便的代理软件。如果我们加入必要的模块,它能十分容易地支持PHP、ASP、Perl、FrontPage等一系列的W

eb编成工具。

附:Apache组件列表

Apache组件中文注解信息

Core Apache的核心特点

mod_access基于主机名或IP地址的存储控制

mod_actions基于文件类型/方式的脚本的执行

mod_alias别名和重定向

mod_asis处理文件.asis

mod_auth使用文本文件的用户认证

mod_auth_anon FTP风格的匿名认证

mod_auth_db使用berkeley的DB文件进行用户认证mod_auth_dbm使用DBM的文件进行用户认证

mod_autoindex自动列出目录

mod_browser 基于用户端字符串的环境设定。在Apache1.3或更高版本中用mod_setenvif代替

mod_cern_meta支持http开头的图元文件

mod_cgi支持cgi脚本的执行

mod_cookies支持网景的cookies功能。在Apache1.2中被mod_usertrack代替mod_digest MD5认证

mod_dir基本目录索引得控制

mod_did

启动时载入可执行文件到服务器的功能。在Apache1.3中被mod_so

代替

mod_dll在1.3b6中被mod_so代替

mod_env传递环境信息到cgi脚本中

mod_example演示Apache API

mod_expires对有文件应用过期选项

mod_headers加入任意的http头文件

mod_imap影像地图档的控制

mod_include服务器端剖析文档

mod_info服务器端配置信息

mod_isapi对Windows isapi扩展支持

mod_log_agent客户端使用者程序纪录

mod_log_common 标准的一般记录档案格式的日志。在Apache1.2或更高的版本中被mod_log_config模块代替

mod_log_config

对服务器端请求,使用用户端指定的格式,代替mod_log_common

的用户可配置日志

mod_log_referer纪录文档指南

mod_mime通过文件名决定文件类型

mod_mime_magic通过“神奇的数字”来决定文件类型

mod_mime_magic通过“神奇的数字”来决定文件类型

mod_mmap_static为了提高服务速度映射文件到内存

mod_negotiation内容协商

mod_poxy支持代理缓存的功能

mod_rewrite通过使用规则的表达式来实现强大的url到文件名的映射mod_setenvif基于客户端信息的环境变量的设置

mod_so试验性的在执行时支持转载模块(Windows中的dlls)mod_speling自动监视upl中的正确性

mod_status服务器状态显示

mod_userdir用户的home目录

mod_unique_id对每个请求产生独立的请求标识符

服务器端与客户端建立并连接小Demo

服务器端代码: using https://www.360docs.net/doc/a014373714.html,; using https://www.360docs.net/doc/a014373714.html,.Sockets; Static void Main(string[] args){ Socket serverSocket=new Socket(AddressFamily.InterNetWork,SocketType.Stream,ProtocalTy pe.TCP); //new一个Socket对象,注意这里用的是流式Socket(针对于面向连接的TCP服务应用)而不是数据报式Socket(针对于面向无连接的UDP服务应用)。 IPAddress serverIP=IPAddress.Parse("127.0.0.1"); int port=2112; IPEndPoint ipEndPoint=new IPEndPoint(serverIP,port);//网络节点对象 serverSocket.Bind(ipEndPoint);//将结点绑定到套接字上 serverSocket.Listen(10);//设置连接队列的最大长度,可根据服务器的性能,可以设置更大程度。 Console.WriteLine("服务器已就绪准备客户端连接。。。。"); while(true){//循环监听端口,得到客户端连接 Socket socket=serverSocket.Accept();//当有客户端连接时,就产生一个socket实例 SessionServer sserver=new SessionServer(socket);//将socket实例传入到消息处理类中 Thread t=new Thread(sserver.GetClientMsg);//当有一个客户端连接,就启动一个线程来处理此客户端的消息 t.Start();

简单的web服务器源代码

#include "stdafx.h" #include "Websys.h" #include "WebsysDlg.h" #include #include #include #include #include #include #include #include #include #include #define Lnumber 5 //监听队列长度#define max1 1024 #define max2 1024*1024 #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif //全局变量 unsigned long IP;//用于存储IP地址int port; //用于存储接口号char mainfile[128]; //用于存储主目录int Tnumber=0; //列表控件序号

int tnumber; //每次开启服务器的进程数 int stop; //服务器状态,0表示关闭状态,1表示开启状态CString mm_error; SOCKET Lsock; //监听socket CCriticalSection slock;//线程互斥信号 //全局函数 static UINT listen_sock(LPVOID n);//创建监听的sock static UINT get_sock(LPVOID n);//建立连接,进行报文和文件的传输 class websock { public: CWebsysDlg *dlg1; }; class saddr { public: SOCKET sockr; sockaddr_in *addr; }; websock ws;//全局主窗口类型变量 // 帮助对话框的类的定义及封装函数

LinuxApacheWeb服务器配置教程

LinuxApacheWeb服务器配置教程 Linux阿帕奇网络服务器配置教程 阿帕奇的主要特点 根据著名的万维网服务器研究公司进行的一项调查,全世界50%以上的万维网服务器使用阿帕奇,排名世界第一。 阿帕奇的出生非常戏剧化。当NCSA万维网服务器项目停止时,那些使用NCSA万维网服务器的人开始用他们的补丁来交换服务器,他们很快意识到有必要建立一个论坛来管理这些补丁。就这样,阿帕奇集团诞生了,后来这个集团在NCSA的基础上建立了阿帕奇。 阿帕奇的主要特点是: 。可以在所有计算机平台上运行; 。支持最新的HTTP 1.1协议; 简单而强大的基于文件的配置; 。支持通用网关接口CGI 。支持虚拟主机; 。支持HTTP认证; 。集成的Perl脚本编程语言; 。集成代理服务器; 。拥有可定制的服务器日志;。支持服务器端包含命令。支持安全套接字层。用户会话过程的跟踪能力;支持FastCGI。支持Java小服务程序。 安装Apache流程

安装Apache 接下来,我们将开始征服阿帕奇的漫长旅程。我们将一步一步地学习使用Apache,从介绍到掌握,通过需求的一步一步的例子。 系统需求 运行Apache不需要太多的计算资源。它运行良好的Linux系统有6-10MB的硬盘空间和8 MB的内存。然而,单独运行Apache可能不是您想要做的。更有可能的是,您希望运行Apache来提供WWW服务,启动CGI流程,并充分利用WWW所能提供的所有惊人功能。在这种情况下,您需要提供额外的磁盘空间和内存空间来反映负载要求。换句话说,它不需要太多的系统资源来启动WWW服务,但是它需要更多的系统资源来为大量的客户提供服务。获取软件 你可以呆在 错误日志命令用于指定错误日志文件名和路径。 命令格式:错误日志[日志文件名] 示例:错误日志/var/ srm.conf Srm.conf是一个资源配置文件,它告诉服务器您想在WWW站点上提供什么资源,在哪里以及如何提供这些资源。 DocumentRoot命令指定主文档的地址。 命令格式:文档根[路径] 示例:文档根目录/主页/ UserDir命令,用于指定个人主页的位置。如果你有一个用户测试,

IBM_x系列服务器报错代码

适用机型: 所有服务器 以下报错信息,只是对目前大部分X系列服务器适用的报错信息。仅供参考,如果服务器使用过程中发生橘黄色感叹号灯常亮,或者服务器停止在自检过程中,建议客户尽快跟IBM 技术服务人员联系。 错误代码/症状FRU/操作 062(使用缺省配置的连续三次引导失败。) 1. 运行Configuration/Setup Utility 程序 2. 电池 3. 主板 4. 微处理器 101、102、106(计时器时标中断失败)* 主板 102(计时器2 测试失败)* 主板 106(软盘控制器错误)* 主板 129(内置高速缓存(L1)错误) 1. 可选微处理器 2. 微处理器 151(实时时钟错误) 1. 电池 2. 主板 161(实时时钟电池错误) 1. 运行Configuration/Setup Utility 程序 2. 电池 3. 主板 162(设备配置错误) 注:请务必装入缺省设置和任何期望的其它设置; 然后,保存配置 1. 运行Configuration/Setup Utility 程序 2. 电池 3. 发生故障的设备 4. 主板 163 (实时时钟错误) 1. 运行Configuration/Setup Utility 程序 2. 电池 3. 主板 164 (内存配置更改。) 1. 运行Configuration/Setup Utility 程序 2. DIMM 3. 主板 175 (EEPROM CRC #1 损坏)* 主板 184 (开机密码损坏) 1. 运行Configuration/Setup Utility 程序 2. 主板

185 (驱动器启动顺序信息毁坏) 1. 运行Configuration/Setup Utility 程序 2. 主板 187 (VPD 序列号未设置) 1. 运行Configuration/Setup Utility 程序 2. 主板 188 (EEPROM CRC #2 损坏) 1. 运行Configuration/Setup Utility 程序 2. 主板 189 (试图以无效密码进入系统) 1. 运行Configuration/Setup Utility 程序 2. 主板 196 (微处理器高速缓存不匹配) 1. 确保微处理器为相同的类型和速度 2. 微处理器 198 (微处理器速度不匹配) 1. 确保微处理器为相同的类型和速度 2. 微处理器 199 (微处理器未按建议进行配置) 1. 确保微处理器为相同的类型和速度 2. 微处理器 201 (内存测试错误) 1. DIMM 2. 主板 229 (内置高速缓存(L2)错误) 1. 微处理器 2. 后添加微处理器 289 (用户或系统禁用了DIMM) 1. 运行Configuration/Setup Utility 程序 2. DIMM 3. 主板 301 (键盘或键盘控制器错误) 1. 键盘 2. 主板 303 (键盘控制器错误) 1. 将PS/2 键盘更换为USB 键盘 2. 主板 602 (无效的软盘引导记录) 1. 软盘 2. 软盘驱动器 3. 驱动器电缆 4. 主板 604 (软盘驱动器错误) 1. 运行Configuration/Setup Utility 程

2-apache Apache_Web 服务器安装部署手册档

重要提示 Web服务器包括apache的安装部署和W AS7 Plugin安装部署两部分,如果的websphere应用服务器使用非集群模式,plugin则不需要安装,只需配置本文2.1章节内容,如果websphere 应用服务器使用群集模式,则需要按照本文2.2章节进行plugin安装配置。 1 Apache安装 Apache的安装和配置现在可以采用脚本自动化安装,脚本就是139ftp上的 apache_install_script.sh 请下载到web服务器中,并执行即可。 注意:在执行脚本安装前请确认web服务器的/opt/apache下没有安装过apache,并且web 服务器能上外网(能ping通https://www.360docs.net/doc/a014373714.html,) 成功安装apache并测试通过后即可直接继续本文第二章节Was7 Plugin安装 在root下进行root进入方法#su 然后输入密码 1.1 准备安装 关闭系统自带的web服务: #chkconfig httpd off 在线安装gcc #yum install gcc cc 下载并解压安装程序: #cd ~/ #wget https://www.360docs.net/doc/a014373714.html,/httpd/httpd-2.2.15.tar.gz #tar –zxvf httpd-2.2.15.tar.gz -C /usr/src Web 服务器安装部署手册 Page 4 of 21 1.2 安装Apache Web Server 进入源码目录: #cd /usr/src/httpd-2.2.15 编译源文件: #./configure //(安装到默认目录) 形成安装文件: #make 安装程序: #make install 1.3 验证安装 进入安装后目录: # cd /opt/apache/apache-2.2.15/bin 检查进程模式: #./apachectl –l Compiled in modules: core.c worker.c http_core.c mod_so.c 启动Apache Web Server:

linux下用apache搭建web服务器

Linux下搭建web服务器 Apache源于NCSAhttpd服务器,经过多次修改,成为世界上最流行的 Web服务器软件之一。Apache取自“a patchy server”的读音,意 思是充满补丁的服务器,因为它是自由软件,所以不断有人来为它开发新的功能、新的特性、修改原来的缺陷。Apache的特点是简单、 速度快、性能稳定,并可做代理服务器来使用。 本来它只用于小型或试验 Internet网络,后来逐步扩充到各种Unix 系统中,尤其对Linux的支持相当完美。Apache有多种产品,可以支持SSL技术,支持多个虚拟主机。Apache是以进程为基础的结构,进程要比线程消耗更多的系统开支,不太适合于多处理器环境,因此,在一个Apache Web站点扩容时,通常是增加服务器或扩充群集节点 而不是增加处理器。到目前为止Apache仍然是世界上用的最多的Web 服务器,市场占有率达60%左右。世界上很多著名的网站如Amazon.c om、Yahoo!、W3 Consortium、Financial Times等都是Apache的产物,它的成功之处主要在于它的源代码开放、有一支开放的开发队伍、支持跨平台的应用(可以运行在几乎所有的Unix、Windows、Linux 系统平台上)以及它的可移植性等方面。 Apache的诞生极富有戏剧性。当NCSA WWW服务器项目停顿后,那些 使用NCSA WWW服务器的人们开始交换他们用于该服务器的补丁程序,他们也很快认识到成立管理这些补丁程序的论坛是必要的。就这样,诞生了Apache Group,后来这个团体在NCSA的基础上创建了Apache。 Apache的主要特征是: 可以运行上所有计算机平台; 支持最新的H TT P1.1协议; 简单而强有力的基于文件的配置; 支持通用网关接口CGI; 支持虚拟主机; 支持H TT P认证; 集成P erl脚本编程语言;

web服务器和应用服务器

WEB服务器与应用服务器的区别: 1.WEB服务器: 理解WEB服务器,首先你要理解什么是WEB?WEB你可以简单理解为你所看到的HTML页面就是WEB的数据元素,处理这些数据元素的应用软件就叫WEB服务器,如IIS、apache。 WEB服务器与客户端打交道,它要处理的主要信息有:session、request、response、HTML、JS、CS等。 2.应用服务器: 应用服务器如JSP,处理的是非常规性WEB页面(JSP文件),他动态生成WEB 页面,生成的WEB页面在发送给客户端(实际上当应用服务器处理完一个JSP 请求并完成JSP生成HTML后它的任务就结束了,其余的就是WEB处理的过程了)。 WEB服务器与应用服务器的联系: 1.WEB服务器一般是通用的,而应用服务器一般是专用的,如Tomcat只处理Java应用程序而不能处理ASPX或PHP。而Apache是一个WEB服务器f(HTTP 服务器),后来连接Tomcat应用服务器来支持java。 二、另述 WEB服务器、应用程序服务器、HTTP服务器有何区别?IIS、Apache、Tomcat、Weblogic、WebSphere都各属于哪种服务器,这些问题困惑了很久,今天终于梳理清楚了: Web服务器的基本功能就是提供Web信息浏览服务。它只需支持HTTP协议、HTML文档格式及URL。与客户端的网络浏览器配合。因为Web服务器主要支持的协议就是HTTP,所以通常情况下HTTP服务器和WEB服务器是相等的(有没有支持除HTTP之外的协议的web服务器,作者没有考证过),说的是一回事。 应用程序服务器(简称应用服务器),我们先看一下微软对它的定义:"我们把应用程序服务器定义为“作为服务器执行共享业务应用程序的底层的系统软件”。就像文件服务器为很多用户提供文件一样,应用程序服务器让多个用户可以同时使用应用程序(通常是客户创建的应用程序)" 通俗的讲,Web服务器传送(serves)页面使浏览器可以浏览,然而应用程序服务器提供的是客户端应用程序可以调用(call)的方法(methods)。确切一点,你可以说:Web服务器专门处理HTTP请求(request),但是应用程序服务器是通过很多协议来为应用程序提供(serves)商业逻辑 (business logic)。

基于C语言的Socket编程服务器端测试代码

#include #include int main() { WSADATA wsaData; SOCKET ServerSock; SOCKET sockConn; SOCKADDR_IN localaddr; SOCKADDR_IN addrClient; char sendBuf[100] = {'1', '2', '3'}; char recvBuf[100]; int addrlen = sizeof(struct sockaddr_in); if (WSAStartup(MAKEWORD(2,2),&wsaData) != 0) { printf("初始化失败!\n"); } localaddr.sin_family = AF_INET; localaddr.sin_addr.S_un.S_addr = inet_addr(5000); localaddr.sin_port = htons("127.0.0.1"); // memset(ser_addr.sin_zero,0,8); ServerSock = socket(2, 100, 0); if(ServerSock == INV ALID_SOCKET) { printf("invalid socket !\n"); return 0; } bind(ServerSock, (struct sockaddr*)&localaddr, sizeof(struct sockaddr_in)); listen(ServerSock, 2); while(1) { sockConn=accept(ServerSock, (SOCKADDR*)&addrClient, &addrlen); if (sockConn != INV ALID_SOCKET) { sprintf(sendBuf,"Welcome %s to 刘洼村",inet_ntoa(addrClient.sin_addr));

Apache服务器配置安全规范以及其缺陷

Apache服务器配置安全规范以及其缺陷!正如我们前言所说尽管Apache服务器应用最为广泛,设计上非常安全的程序。但是同其它应用程序一样,Apache也存在安全缺陷。毕竟它是完全源代码,Apache服务器的安全缺陷主要是使用HTTP 协议进行的拒绝服务攻击(denial of service)、缓冲区溢出攻击以及被攻击者获得root权限三缺陷和最新的恶意的攻击者进行拒绝服务(DoS)攻击。合理的网络配置能够保护Apache服务器免遭多种攻击。我们来介绍一下主要的安全缺陷。主要安全缺陷(1)使用HTTP协议进行的拒绝服务攻击(denial of service)的安全缺陷这种方法攻击者会通过某些手段使服务器拒绝对HTTP应答。这样会使Apache对系统资源(CPU时间和内存)需求的剧增,最终造成Apache系统变慢甚至完全瘫痪。(2)缓冲区溢出的安全缺陷该方法攻击者利用程序编写的一些缺陷,使程序偏离正常的流程。程序使用静态分配的内存保存请求数据,攻击者就可以发送一个超长请求使缓冲区溢出。(3)被攻击者获得root权限的安全缺陷该安全缺陷主要是因为Apache服务器一般以root权限运行(父进程),攻击者会通过它获得root权限,进而控制整个Apache系统。(4)恶意的攻击者进行拒绝服务(DoS)攻击的安全缺陷这个最新在6月17日发现的漏洞,它主要是存在于Apache的chunk encoding中,这是一个HTTP协议定义的用于接受web用户所提交数据的功能。所有说使用最高和最新安全版本对于加强Apache Web服务器的安全是至关重要的。正确维护和配置Apache服务器虽然Apache服务器的开发者非常注重安全性,由于Apache服务器其庞大的项目,难免会存在安全隐患。正确维护和配置Apache WEB服务器就很重要了。我们应注意的一些问题:(1)Apache服务器配置文件Apache Web服务器主要有三个配置文件,位于 /usr/local/apache/conf目录下。这三个文件是:httpd.conf-----主配置文件srm.conf------填加资源文件access.conf---设置文件的访问权限(2)Apache服务器的目录安全认证在Apache Server中是允许使用 .htaccess做目录安全保护的,欲读取这保护的目录需要先键入正确用户帐号与密码。这样可做为专门管理网页存放的目录或做为会员区等。在保护的目录放置一个档案,档名为.htaccss。AuthName 会员专区 AuthType BasicAuthUserFile /var/tmp/xxx.pw -----把password放在网站外 require valid-user 到apache/bin目录,建password档 % ./htpasswd -c /var/tmp/xxx.pw username1 -----第一次建档要用参数-c % /htpasswd /var/tmp/xxx.pw username2 这样就可以保护目录内的内容,进入要用合法的用户。注:采用了Apache内附的模组。也可以采用在httpd.conf中加入:options indexes followsymlinks allowoverride authconfig order allow,deny allow from all (3)Apache服务器访问控制我们就要看三个配置文件中的第三个文件了,即access.conf文件,它包含一些指令控制允许什么用户访问Apache目录。应该把deny from all设为初始化指令,再使用allow from指令打开访问权限。order deny,allowdeny from allallow from https://www.360docs.net/doc/a014373714.html, 设置允许来自某个域、IP地址或者IP段的访问。(4)Apache服务器的密码保护问题我们再使 用.htaccess文件把某个目录的访问权限赋予某个用户。系统管理员需要在httpd.conf或者rm.conf文件中使用 AccessFileName指令打开目录的访问控制。如:AuthName PrivateFilesAuthType BasicAuthUserFile /path/to/httpd/usersrequire Phoenix# htpasswd -c /path/to/httpd/users Phoenix设置Apache服务器的WEB和文件服务器我们在Apache服务器上存放WEB 服务器的文件,供用户访问,并设置/home/ftp/pub目录为文件存放区域,用

Apache+WebSphere服务器部署方案

Apache+WebSphere 服务器部署方案 版本号:V1.1 2011年9月

目录 重要提示 (2) 1Linux 安装 (2) 1.1安装全部程序 (2) 1.2安装源设置 (2) 2Apache安装 (3) 2.1准备安装 (3) 2.2安装Apache Web Server (3) 2.3验证安装 (4) 2.4编译代理/反向代理模块 (5) 2.5配置代理/反向代理模块 (6) 2.6创建配置文件crossdomain.xml (8) 2.7Apache中文乱码问题解决 (8) 2.8配置RewriteRule (11) 3Was7 Plugin安装 (11) 3.1Websphere常用命令 (12) 3.2JDNI配置 (12) 3.3应用服务器单机版配置 (16) 3.4应用服务器集群版配置 (16) 4常见问题 (23) 4.1环境问题 (23) 4.2应用问题 (24)

重要提示 Web服务器包括apache的安装部署和WAS7 Plugin安装部署两部分,如果的websphere应用服务器使用非集群模式,plugin则不需要安装,只需配置本文2.1章节内容,如果websphere应用服务器使用群集模式,则需要按照本文2.2章节进行plugin安装配置。 1Linux 安装 1.1 系统安装 1.根分区磁盘容量应大于20G 2.推荐安装所有应用程序 1.2 安装源设置 图中黑色边框指示设置系统安装源,尤其在服务器无法连接外网时需要使用光盘作为安装源

2Apache安装 2.1 准备安装 关闭系统自带的web服务: #chkconfig httpd off 安装gcc(适用于系统没有安装gcc时) #yum install gcc* (yum install gcc-c++ libstdc++-devel) 出现y/n提示时,输入y 下载并解压安装程序: #cd ~/ #wget https://www.360docs.net/doc/a014373714.html,/httpd/httpd-2.2.15.tar.gz #tar –zxvf httpd-2.2.15.tar.gz -C /usr/src 把包解压到/usr/src 2.2 安装Apache Web Server 进入源码目录: #cd /usr/src/httpd-2.2.15 配置编译文件: #./configure --prefix=/opt/apache --enable-so --enable-mods-shared=most --with-mpm=worker 编译文件: #make

使用OPENSSL编写服务器和客户端代码实例

使用OPENSSL编写服务器和客户端代码实例使用相同的ca生成两个证书,一个是server.cer,一个是client.cer,注意生成server.cer的时候必须指明证书可以用于服务端的。 服务器代码: 1.#include "openssl/bio.h" 2.#include "openssl/ssl.h" 3.#include "openssl/err.h" 4. 5.#include 6. 7.#define EXIT_IF_TRUE(x) if (x) \ 8. do { \ 9. fprintf(stderr, "Check '%s' is true\n", #x); \ 10. ERR_print_errors_fp(stderr); \ 11. exit(2); \ 12. }while(0) 13. 14.int main(int argc, char **argv) 15.{ 16. SSL_CTX *ctx; 17. SSL *ssl; 18. X509 *client_cert; 19. 20. char szBuffer[1024]; 21. int nLen; 22. 23. struct sockaddr_in addr; 24. int len; 25. int nListenFd, nAcceptFd; 26. 27.// 初始化 28. cutil_init(); 29. cutil_log_set_level(LOG_ALL); 30. cutil_log_set_stderr(1);

31. SSLeay_add_ssl_algorithms(); 32. OpenSSL_add_all_algorithms(); 33. SSL_load_error_strings(); 34. ERR_load_BIO_strings(); 35. 36.// 我们使用SSL V3,V2 37. EXIT_IF_TRUE((ctx = SSL_CTX_new (SSLv23_method())) == NULL); 38. 39.// 要求校验对方证书 40. SSL_CTX_set_verify(ctx, SSL_VERIFY_PEER, NULL); 41. 42.// 加载CA的证书 43. EXIT_IF_TRUE (!SSL_CTX_load_verify_locations(ctx, "cacert.cer", NULL)); 44. 45.// 加载自己的证书 46. EXIT_IF_TRUE (SSL_CTX_use_certificate_file(ctx, "server.cer", SSL_FILETYPE_PEM ) <= 0) ; 47. 48.// 加载自己的私钥 49. EXIT_IF_TRUE (SSL_CTX_use_PrivateKey_file(ctx, "server.key", SSL_FILETYPE_PEM) <= 0) ; 50. 51.// 判定私钥是否正确 52. EXIT_IF_TRUE (!SSL_CTX_check_private_key(ctx)); 53. 54.// 创建并等待连接 55. nListenFd = cutil_socket_new(SOCK_STREAM); 56. cutil_socket_bind(nListenFd, NULL, 8812, 1); 57. 58. memset(&addr, 0, sizeof(addr)); 59. len = sizeof(addr); 60. nAcceptFd = accept(nListenFd, (struct sockaddr *)&addr, (size_t *)&len); 61. cutil_log_debug("Accept a connect from [%s:%d]\n", 62. inet_ntoa(addr.sin_addr), ntohs(addr.sin_port)); 63. 64.// 将连接付给SSL 65. EXIT_IF_TRUE( (ssl = SSL_new (ctx)) == NULL); 66. SSL_set_fd (ssl, nAcceptFd); 67. EXIT_IF_TRUE( SSL_accept (ssl) != 1); 68. 69.// 进行操作 70. memset(szBuffer, 0, sizeof(szBuffer)); 71. nLen = SSL_read(ssl,szBuffer, sizeof(szBuffer)); 72. fprintf(stderr, "Get Len %d %s ok\n", nLen, szBuffer);

在Linux虚拟机下配置apache构建web服务器

在Linux虚拟机下配置apache构建web服务器 2009年07月02日星期四 00:33 实现目的: 在Fedora10.0下架设Apache服务器,为Windows提供web访问服务。实现不同用户(test1,test2,mm1,mm2)的不同访问权限。并且实现基于IP(192.168.1.6与192.168.1.119)和端口(192.168.1.6:80与192.168.1.6:8090)的虚拟主机功能。 实现步骤: 安装好Fedora7.0后,系统已经安装好了Apache服务。路径为 /etc/httpd 其中/etc/httpd/conf/httpd.conf为Apache服务的主配置文件,下面进行配置。ServerRoot "/etc/httpd" //指定Apache服务的启动路径 Listen 192.168.1.6:80 //启动侦听端口 Listen 192.168.1.6:8090 //启动基于端口8090的虚拟主机的侦听 Listen 192.168.1.119:80 //启动基于端口80的虚拟主机的侦听 User apache Group apache //指明启动Apache服务的用户和组 ServerAdmin ccx193@https://www.360docs.net/doc/a014373714.html, //指明访问失败时的联系邮箱 ServerName https://www.360docs.net/doc/a014373714.html,:80 //指定服务器域名 DocumentRoot "/opt/ouc-server" //指明web服务的目录DirectoryIndex index.php index.htm index.html index.html.var //上面这一行指明当Apache服务接受访问时,搜索主页的顺序,由前至后 //下面实现基于IP的虚拟主机功能: ServerAdmin root@localhost DocumentRoot /var/www/html //定义该虚拟主机的目录 ServerName localhost ServerAdmin root@localhost DocumentRoot /var/www/html ServerName localhost //用图形界面来添加一个ip记录 下面实现用户管理功能: Authname "ccx's Apache server" //登录时显示在对话框上的提示信息 AuthType Basic //用户验证类型 AuthUserFile /etc/httpd/passwd //用户密码存放文件,需自己创建 AuthGroupFile /etc/httpd/groupfile // 组用户存放文件,需自己创建

linux centos web服务器搭建

1、安装Apache2 yum install httpd 2、启动 方法一:servicehttpd start 方法二:/etc/init.d/httpd start //浏览http://ip,应该看到Apache2的测试页 3、设置开机启动 方法一:chkconfig--levels 235 httpd on 方法二:chkconfighttpd on //Apache的默认文档根目录是在CentOS上的/var/www/html 目录,配置文件是/etc/httpd/conf/httpd.conf。 4、安装PHP5 yum install php //重启服务 方法一:servicehttpd restart 方法二:/etc/init.d/httpd restart 测试PHP5是否安装成功 创建info.php vi /var/www/html/info.php 内容:

?> //浏览http://ip/info.php 5、PHP5获得MySOL的支持 yum search php //还安装需要安装的 yum install php-mysqlphp-gdphp-imapphp-ldapphp-mbstringphp-odbcphp-pear php-xml php-xmlrpc //现在重新启动Apache2的: /etc/init.d/httpd restart //现在刷新http://ip/info.php,并再次向下滚动到模块部分。现在,你应该找到更多新的模块,包括MySQL模块. 7.安装phpMyAdmin 通过它可以管理你的MySQL数据库。 首先,我们使CentOS系统RPMForge软件库的phpMyAdmin,而不是官方的CentOS 6.2库: 所以需要导入RPMForge的GPG密钥:

简单http服务器代码

/* 基于流式套接字C/S结构的服务器端。 通信规程: 1、客户端连接到服务器以后,向服务器端发送命令 2、服务器解析命令的正确性,对于错误的命令,向客户端发送"Bad Command"的响应信息。 3、客户端主动断开连接,通过发送Quit命令实现。 4、服务器端在服务过程中,检测到错误后断开连接。 说明: 1、服务器工作在单线程select模型,所有处理都在main()中进行。 2、在该模式下,服务器并发为多个客户端提供服务 3、和基于非阻塞模式的单线程并发服务程序的区别是: 不要求套接字工作在非阻塞模式。 */ //添加必要的头文件 //#define FD_SETSIZE 20 #include #include #define MAX_CLIENT_COUNT FD_SETSIZE-1 //用这种方式添加链接库信息 #pragma comment(lib,"ws2_32") //服务器默认工作在7777端口,所有IP地址接收的连接请求都处理 #define DEFAULTPORT 7777 //接收、发送缓冲区大小 #define SIZE_INBUF 1024 #define SIZE_OUTBUF 1024 #define HTTP_SERVER_OUTPUT_HEAD "HTTP/1.1 200 OK\r\n" "Date: Wed,22nov 2000 02:44:34 GMT\r\n" "Server: Windows\r\n" "Last-Modified: Tue, 18 Apr 2000 13:24:10 GM T\r\n" "Accept-Ranges: bytes\r\n" "Content-Length: 121\r\n" "Connection: close\r\n" "Content-Type: text/html; charset=US-ASCII\r\n\r\n" #define METHOD_NOT_IMPLEMENTED "test

Hello Word!

\r\n\r\n" int main(void) { //1 准备WinSock执行环境 WORD ver=MAKEWORD(2,2); WSADATA wsdata;

基于TCP的服务器客户端编程讲解

西北师范大学计算机科学与工程学院 学生实验报告 学号日期 : 系别计算机科学与 工程学院 专业班级姓名 课程名称课程 类型 学时数 2 实验 名称 实验二、基于TCP的服务器/客户端编程 实验目的:1、掌握Linux下的TCP客户端基本原理和基本编程方法 实验内容: 1、写Linux下TCP服务器套接字程序,程序运行时服务器等待客户的连接,一旦连接成功,则显示客户的IP地址、端口号,并向客户端发送字符串。 2、写Linux下TCP客户端套接字程序,结合TCP的服务器端程序,实现以下功能: (1)、客户根据用户提供的IP地址连接到相应的服务器; (2)、服务器等待客户的连接,一旦连接成功,则显示客户的IP地址、端口号,并向客户端发送字符串; (3)、客户接收服务器发送的信息并显示。 实验步骤: 一、TCP服务端程序设计

使用TCP套接字编程可以实现基于TCP/IP协议的面向连接的通信,它分为服务器端和客户端两部分,其主要实现过程如图所示。 图1.1 TCP客户/服务器的套接字函数 1、socket函数:为了执行网络输入输出,一个进程必须做的第一件事就是调用socket函数获得一个文件描述符。 #include int socket(int family,int type,int protocol); 返回:非负描述字---成功-1---失败 第一个参数指明了协议簇,目前支持5种协议簇,最常用的有 AF_INET(IPv4协议)和AF_INET6(IPv6协议);第二个参数指明套接口类型,有三种类型可选:SOCK_STREAM(字节流套接口)、SOCK_DGRAM(数据报套接口)和SOCK_RAW(原始套接口);如果套接口类型不是原始套接口,那么第三个参

Apache服务器配置实验报告

在Linux下配置Apache服务器 ——江湖、孙中霞、李琴一、实验目的 完成本次实训,将能够: ●配置基本的Apache服务器 ●配置个人用户Web站点。 ●配置虚拟目录别名功能。 ●配置主机访问控制。 ●配置用户身份验证功能.。 ●配置基于IP地址的虚拟主机. 二、实验环境 1、RedHat Linux4AS. 2、Apache 2.0 三、实验内容 1.配置基本的Apache服务器 2.配置个人用户Web站点。 3.配置虚拟目录别名功能。 4.配置主机访问控制。 5.配置用户身份验证功能.。 6.配置基于IP地址的虚拟主机。 四、实验要求 在Linux操作系统下配置Apache服务器。 五、注意事项 1.在修配置文件下注意区分大小写、空格。 2.在每次重新开机后都必须启动Apachec服务器。 3.在每次修改完主配置文件后保存起来,必须重启Apachec服务器,如果不重启会 导致配置无效,最终导致实验失败。 六、实验步骤 1、检测是否安装了Apache软件包: A、首先为服务器网卡添加一个固定的IP地址。 B、在Web浏览器的地址栏中输入本机的IP地址,若出现Test Page测试页面(该 网页文件的默认路径为var/www/html/index.html)如下图1所示就说明Apache 已安装并已启动。

另一种方法是使用如下命令查看系统是否已经安装了Apache软件包: [root@rhe14~]# rpm –aq | grep httpd Httpd-suexec-2.0.52-9.ent Httpd-manual-2.0.52-9.ent System-config-httpd-1.3.1-1 Httpd-devel-2.0.52-9.ent 出现以上内容表明了系统已安装Apache软件包。 2、安装Apache软件包 超级用户(root)在图形界面下选择“应用程序”|“系统设置”|“添加/删除应用程序”命令,选择“万维网服务器”软件包组,在单击“更新”按钮就可以安装与Apache相关的软件包。 3、Apache的基本配置 (1)打开终端输入[root@rhe14~]# /etc/rc.d/init.d/httpd start //启动Apache 或者 [root@rhe14~]# apachectl start //启动Apache [root@rhe14~]# apachectl stop //停止Apache服务 [root@rhe14~]# apachectl restart //重启Apache服务 [root@rhe14~]# apachectl configtest //测试Apache服务器配置语法(2)在httpd.conf将Apache的基本配置参数修改、将一些注释的语句取消注释,或将某些不需要的参数注释掉。 (3)将包括index.html在内的相关网页文件复制到指定的Web站点根目下(var/www/html/index.html) (4)重启httpd进程 (5) 在Web浏览器下输入配置的ip地址出现如下图2,那表明基本配置成功了:

聊天系统(客户端、服务器端) java版 完整代码

客户端: import java.awt.*; import java.awt.event.*; import java.io.*; import https://www.360docs.net/doc/a014373714.html,.*; public class ChatClient extends Frame { Socket s = null; DataOutputStream dos = null; DataInputStream dis = null; private boolean bConnected = false; TextField tfTxt = new TextField(); TextArea taContent = new TextArea(); Thread tRecv = new Thread(new RecvThread()); public static void main(String[] args) { new ChatClient().launchFrame(); } public void launchFrame() { setLocation(400, 300); this.setSize(300, 300); add(tfTxt, BorderLayout.SOUTH); add(taContent, BorderLayout.NORTH); pack(); this.addWindowListener(new WindowAdapter() { @Override public void windowClosing(WindowEvent arg0) { disconnect(); System.exit(0); } }); tfTxt.addActionListener(new TFListener()); setVisible(true); connect(); tRecv.start(); }

相关文档
最新文档