webServer 常用的有 Apache,IIS,nginx,Tomcat
Apache HTTP 服务器是一个模块化的服务器, 可以运行在几乎所有广泛使用的计算机平台上. 其属于应用服务器. Apache 支持支持模块多, 性能稳定, Apache 本身是静态解析, 适合静态 html, 图片等, 但可以通过扩展脚本, 模块等支持动态页面等.
IIS 是一种 web 服务组件, 其中包括 Web 服务器, FTP 服务器, NNTP 服务器和 SMTP 服务器, 分别用于网页浏览, 文件传输, 新闻服务和邮件发送等方面, 它使得在网络上发送信息成为一件很容易的事. 但 IIS 只能运行在 Windows 平台.
Nginx 是一款轻量级的 Web 服务器 / 反向代理服务器及电子邮件 (IMAP/POP3) 代理服务器. 由俄罗斯的程序设计师 Igor Sysoev 所开发, 供俄国大型的入口网站及搜索引擎 Rambler(俄文:Рамблер)使用. 其特点是占有内存少, 并发能力强, 而且支持负载均衡, 事实上 nginx 的并发能力确实在同类型的网页服务器中表现较好.
Tomcat 是由 Apache 开发的一个 Servlet 容器, 实现了对 Servlet 和 JSP 的支持, 并提供了作为 Web 服务器的一些特有功能, 如 Tomcat 管理和控制平台, 安全域管理和 Tomcat 阀等. 可以认为是 Apache 的扩展, 但是可以独立于 Apache 运行. 实际使用中 Apache 与 Tomcat 常常是整合使用. 如果客户端请求的是静态页面, 则只需要 Apache 服务器响应请求. 如果客户端请求动态页面, 则是 Tomcat 服务器响应请求. 因为 JSP 是服务器端解释代码的, 这样整合就可以减少 Tomcat 的服务开销. 可以理解 Tomcat 为 Apache 的一种扩展.
以 RedHat6 为例
首先简单的部署一下 Apache 网站
第一步: 源码编译及安装
下载好源码包百度网盘 https://pan.baidu.com/s/1FmM_VxY7RTgIzGUr4yTvzQ 密码: 0x96
- apr-1.4.6.tar.gz
- apr-util-1.4.1.tar.gz
- http-2.4.2.tar.gz
其中 apr,apr-util 软件包支持 Apache 上层应用跨平台, 提供底层接口库
1. 解压 apr,apr-util,http 软件包至 / opt 目录下
- tar zxvf apr-1.4.6.tar.gz -C /opt
- tar zxvf apr-util-1.4.1.tar.gz -C /opt
- tar zxvf http-2.4.2.tar.gz
2. 将解压后的 apr,apr-util 软件包复制到 http 软件包的 srclib 目录下
- cd /opt // 进入解压后的软件目录
- cp -R apr-1.4.6//opt/httpd-2.4.2/srclib/apr
- cp -R apr-util-1.4.1//opt/httpd-2.4.2/srclib/apr-util
3. 安装编译环境软件 包 gcc , gcc-c++ , make , pcre,pcre-devel,pcre 是 一个 Perl 库, 支持正则表达式(用 yum 仓库安装)
创建 yum 仓库的步骤详细步骤请参考 Linux 下通过 rdesktop 远程登陆 Windows 系统
yum install gcc gcc-c++ make pcre pcre-devel -y
4. 根据服务器的实际需要, 灵活设置不同的定制选项, 如指定安装路径, 启用字符集支持等.
- cd /opt/httpd-2.4.2
- ./configure \
- --prefix=/usr/local/httpd \
- --enable-so \
- --enable-rewrite \
- --enable-charset-lite \
- --enable-cgi
上述的配置命令中, 各选项的含义如下:
--prefix: 指定将 httpd 服务程序安装到哪个目录下.
--enable-so: 启用动态加载模块支持, 使 httpd 具备进一步扩展功能的能力.
--enable-rewrite: 启用网页地址重写功能, 用于网站优化及目录迁移维护.
--enable-charset-lite: 启用字符集支持, 以便支持使用各种字符集编码的网页.
---enable-cgi: 启用 CGI 脚本程序支持, 便于扩展网站的应用访问能力.
5. 编译及安装
完成配置以后, 执行 "make" 命令进行编译, 将源代码转换成可执行的程序, 然后执行 "make install" 命令完成最后安装过程, 其中 make 的过程可能需要较长的时间.
make make install
6. 确认安装结果
[root@RedHat6-1 ~]# ls /usr/local/httpd/
bin build cgi-bin conf error htdocs icons include lib logs man manual modules
/usr/local/httpd/bin: 存放 httpd 服务的各种可执行程序文件, 包括主程序 httpd, 服务控制工具 apachectl.
/usr/local/httpd/conf: 存放 httpd 服务的各种配置文件, 包括主配置文件 httpd.conf, 增强配置子目录 extra 等.
/usr/local/httpd/htdocs: 存放网页文档, 包括默认首页等.
/usr/local/httpd/logs: 存放 httpd 服务的日志文件.
/usr/local/httpd/modules: 存放 httpd 服务的各种模块文件.
/usr/local/httpd/cgi-bin: 存放各种 CGI 程序文件.
7. 添加 httpd 系统服务
为了便于通过 chkconfig 进行管理 httpd 系统服务, 需要建立可控的服务脚本. 可以将 apachectl 脚本复制为 / etc/init.d/httpd, 并在文件的开头添加 chkconfig 识别配置.
- grep -v "#" /usr/local/httpd/bin/apachectl> /etc/init.d/httpd
- vim /etc/init.d/httpd // 在文件的开头添加
- #!/bin/sh
- # chkconfig:2345 85 15
- # description:Apache is a World Wide Web server.
- chkconfig --add httpd
- chkconfig --list httpd
- chkconfig --level 35 httpd on
第二步: 配置并启动 httpd 服务
1. 建立软链接方便管理配置文件
- ln -s /usr/local/httpd/conf/httpd.conf /etc/httpd.conf
- vim /etc/httpd.conf
- ServerName www.benet.com // 设置网站名称
- Listen 192.168.10.10:80 // 监听 web 服务器本机的 IPV4 地址
- #Listen 80 // 不监听本机 IPV6 地址
2. 检查配置文件的语法
使用带 "-t" 选项的 apachectl 命令对配置内容进行语法检查, 显示 "Syntax OK" 说明没有语法错误.
- [root@RedHat6-1 ~]# cd /usr/local/httpd/bin/
- [root@RedHat6-1 bin]# ./apachectl -t
- Syntax OK
3. 启动 httpd 服务
正常启动 httpd 服务以后, 默认将监听 tcp 协议的 80 端口.
- [root@RedHat6-1 ~]# service httpd start
- [root@RedHat6-1 ~]# netstat -ntap | grep httpd
- tcp 0 0 192.168.10.10:80 0.0.0.0:* LISTEN 2164/httpd
第三步: 测试 Apache 网站
关闭 Apache 服务器的防火墙
service iptables stop
接下来对 Apache 网站实现访问控制
为了更好地控制对网站资源的访问, 可以为特定的网站目录添加访问授权.
客户机地址限制
通过配置项 Order,Deny from ,Allow from, 可以根据客户机的主机名或 ip 地址决定是否允许客户端访问. 其中 Order 配置项用于设置限制顺序, Deny from 和 Allow from 配置项用于设置具体限制内容.
- vim /etc/httpd.conf
- <Directory "/usr/local/httpd/htdocs">
- ........ // 省略部分内容
- Order deny,allow
- Deny from 192.168.10.0/24
- </Directory>
- service httpd restart // 重启 httpd 服务
用客户机 ip 地址是 192.168.10.0 网段测试
用户授权限制
基于用户的访问控制包含认证和授权两个过程, 认证是识别用户身份的过程, 授权是允许特定用户访问特定目录区域的过程. 下面以基本认证方式为例, 添加用户授权限制.
1. 创建虚拟网站目录(/opt/test)
- [root@RedHat6-1 ~]# mkdir /opt/test
- [root@RedHat6-1 ~]# echo "this is test"> /opt/test/index.html
2. 创建用户数据认证文件
使用专门的 htpasswd 工具创建授权用户数据文件, 必须指定用户数据文件的位置.
- [root@RedHat6-1 ~]# htpasswd -c /etc/httpd/user zhangsan
- New password: // 根据提示设置密码
- Re-type new password:
- Adding password for user zhangsan
- [root@RedHat6-1 ~]# cat /etc/httpd/user // 确认用户数据文件
- zhangsan:4PzLKuWXoIm4A
3. 添加用户授权配置
有了授权账号以后, 还需要加载一个独立的配置文件, 使其能在特定的目录区域中添加授权配置, 以启用基本认证等.
- [root@RedHat6-1 ~]# cd /usr/local/httpd/conf/extra/
- [root@RedHat6-1 extra]# vim vdir.conf
- Alias /test "/opt/test/" // 声明
- <Directory "/opt/test/"> // 网站目录区域
- Options Indexes MultiViews FollowSymLinks // 允许使用符号链接
- AllowOverride None // 不允许隐含控制文件中的覆盖配置
- AuthName "hello" // 定义受保护的领域名称, 该内容将在浏览器弹出的认证对话框中显示
- authtype basic // 设置认证的类型是基本认证
- authuserfile /etc/httpd/user // 设置用于保存账号, 密码的认证文件路径
- # authgroupfile /etc/httpd/group
- require valid-user // 认证文件中的合法用户才能访问
- # require user test
- # require group admin
- </Directory>
- service httpd restart // 重启服务使配置生效
4. 客户机测试
来源: http://blog.51cto.com/11134648/2129151