redhat6下的网络服务的详解、安装及配置

1.web服务 Apache

a.简介

HTTP是一个属于应用层的面向对象的协议,由于其简洁,快速的方式 适用于分布式超媒体信息系统

HTTP协议的特点:

是一个标准的客户端服务器模型 简单快速 灵活 无连接 无状态

b.安装

一、安装编译环境

在安装apache之前,我们需要安装编译apache时所需要的相关软件包,如下:
yum -y install gcc gcc++ zlib zlib-devel

二、卸载原有Apache

在源码安装apache之前,我们要先卸载系统中,已经通过rpm包安装的apache。如下:
yum remove httpd* -y

三、进入http://httpd.apache.org中下载httpd*.tar.gz软件包

四、安装apache

1. 解压httpd-2.4.12.tar.gz
[[email protected]主人 ~]# tar xf httpd-2.4.6.tar.gz

2.在编译安装apache前,我们需要先安装它的依赖包
apr-1.5.2.tar.gz
apr-iconv-1.2.1.tar.gz
apr-util-1.5.4.tar.gz
2015 pcre-8.36.tar.gz

3. 安装这些依赖包
要求将httpd安装到/usr/local/httpd目录下
(1)安装apr
# ./configure --prefix=/usr/local/apr --enable-profile --enable-threads
# make && make install

(2)安装apr-iconv
# ./configure --prefix=/usr/local/apr-iconv --with-apr=/usr/local/apr/
# make && make install

(3)安装apr-util
# ./configure --prefix=/usr/local/apr-util --with-iconv=/usr/local/apr-iconv --with-apr=/usr/local/apr
# make && make install

(4)安装pcre
# ./configure --prefix=/usr/local/pcre --enable-utf8 --enable-jit
# make && make install

4. 安装httpd
# ./configure --prefix=/usr/local/httpd --enable-cache --enable-cache-disk --enable-cache-socache --enable-so --enable-echo --enable-data --enable-include --enable-sed --enable-proxy --enable-proxy-connect --enable-proxy-http --enable-proxy-fcgi --enable-proxy-scgi --enable-proxy-ajp --enable-proxy-balancer --enable-session --enable-session-cookie --enable-ssl --enable-info --enable-rewrite --enable-deflate --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util/ --with-pcre=/usr/local/pcre --with-mpm=prefork

注:如果需要重新编译源码,需要先用 make clean 清除之前编译产生的数据

[[email protected]主人 httpd-2.4.6]# ./configure --help |more #查看安装apache的可选功能
--enable-cache-disk:磁盘缓存,可以对所有内容进行缓存
--cache-socache:有关模块的缓存
--enable-so:动态编译模块
--enable-echo:回显信息
--enable-include:在apache配置文件中可以通过include加载其他的子文件
--enable-proxy:使用代理服务
--enable-rewrite:支持地址重写

--with-mpm=prefork:指定apache以哪种方式工作,这里指定以prefork(进程)方式工作,适用于静态网页,另一种是以worker(线程)方式工作,适用于动态网页

修改apache的连接数,编译后就不能在修改,除非重新编译
1) 以prefork方式工作:
[[email protected]主人 ~]# vim /root/httpd-2.4.6/server/mpm/prefork/prefork.c
#define DEFAULT_SERVER_LIMIT 256
#define MAX_SERVER_LIMIT 200000

2) 以worker方式工作
[[email protected]主人 ~]# vim /root/httpd-2.4.6/server/mpm/worker/worker.c
#define DEFAULT_SERVER_LIMIT 16
#define MAX_SERVER_LIMIT 20000

3) 为了apache的安全性,可以通过修改版本信息来提高一定的安全性
[[email protected]主人 ~]# vim httpd-2.4.6/include/ap_release.h

/etc/ld.so.conf:存放相关的库文件的路径

5. 安装完apache后,我们有关的apache配置信息都放在/usr/local/httpd/下
[[email protected]主人 httpd]# ls
bin cgi-bin error icons logs manual
build conf htdocs include man modules

其中
bin:主要存放程序命令目录
logs:error目录下面放置了两个日志文件:错误日志、访问日志
conf:放置httpd的配置文件
htdocs:存放站点目录
modules:放置apache服务的相关模块

6. 设置后就可以用service httpd *启动httpd服务
(1) 将apache的启动脚本复制到/etc/init.d这个目录下
[[email protected]主人 ~]# cp /usr/local/httpd/bin/apachectl /etc/init.d/httpd

(2) 将httpd交由chkconfig进行管理
[[email protected]主人 ~]# vim /etc/init.d/httpd
添加这一行
#chkconfig: - 85 15
[[email protected]主人 ~]# chkconfig --add httpd

(3) 检查启动脚本是否有语法问题
[[email protected]主人 bin]# ./apachectl -t #检查语法
httpd: Syntax error on line 128 of /usr/local/httpd/conf/httpd.conf: Cannot load modules/mod_session_cookie.so into server: /usr/local/httpd/modules/mod_session_cookie.so: undefined symbol: ap_hook_session_save

7. 查看apache的配置文件(/usr/local/httpd/conf)
[[email protected]主人 conf]# ls
extra httpd.conf magic mime.types original
[[email protected]主人 conf]# ls extra/ #该目录下面放置额外的一些配置文件,这样做是为了防止主配置文件过大
httpd-autoindex.conf httpd-languages.conf httpd-ssl.conf
httpd-dav.conf httpd-manual.conf httpd-userdir.conf
httpd-default.conf httpd-mpm.conf httpd-vhosts.conf
httpd-info.conf httpd-multilang-errordoc.conf proxy-html.conf

apache主配置目录/usr/local/httpd/conf/httpd.conf

<Directory "/usr/local/httpd/htdocs">
Options Indexes FollowSymLinks #FollowSymLinks: 在该目录下允许文件系统使用符号连接。 Indexes: 当用户访问该目录时,如果用户找不到DirectoryIndex指定的主页文件(例如index.html),则返回该目录下的文件列表给用户。
AllowOverride None #允许存在于.htaccess文件中的指令类型(.htaccess文件名是可以改变的,其文件名由AccessFileName指令决定): 当AllowOverride被设置为None时。不搜索该目录下的.htaccess文件(可以减小服务器开销)
Require all granted
</Directory>

<Files ".ht*">
Require all denied #.ht*不允许客户端查询
</Files>

ErrorLog "logs/error_log" #指定错误日志的存放路径
LogLevel warn #错误日志指定错误级别

<IfModule log_config_module>
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\""combined
LogFormat "%h %l %u %t \"%r\" %>s %b" common

<IfModule logio_module>
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %b" common
<IfModule logio_module>

LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio
</IfModule>

CustomLog "logs/access_log" common #选用上面common格式的日志

ScriptAlias /cgi-bin/ "/usr/local/httpd/cgi-bin/" #定义别名

#以那种方式去解压.Z、.gz、.tgz文件
AddType application/x-compress .Z
AddType application/x-gzip .gz .tgz

服务器响应错误:显示错误的html文件以/usr/local/httpd/htdocs/为根,在该目录下
#ErrorDocument 500 "The server made a boo boo."
#ErrorDocument 404 /missing.html
#ErrorDocument 404 "/cgi-bin/missing_handler.pl"
#ErrorDocument 402 http://www.example.com/subscription_info.html

8. 启动httpd服务,出现一下错误的解决办法

(1) 如果发现启动httpd服务,名面上并没有报什么错,但在用lsof -i:80 查看,却发现该服务并没有启动,则我们可以通过查看/usr/local/httpd/logs/error_log内容,根据报错来解决问题

(2) 启动时发生下面的错误,我们看报错信息,发现是因为httpd.conf文件的128行那里不能加载mod_session_cookie.so模块
解决办法:我们将httpd.conf文件中mod_session_cookie.so模块前的注释去掉就解决问题
[[email protected]主人 extra]# service httpd start #
httpd: Syntax error on line 128 of /usr/local/httpd/conf/httpd.conf: Cannot load modules/mod_session_cookie.so into server: /usr/local/httpd/modules/mod_session_cookie.so: undefined symbol: ap_hook_session_save

(3) 出现下面的错误是在httpd.conf文件中没有修改ServerName的域名
[[email protected]主人 conf]# service httpd start #启动报错
AH00557: httpd: apr_sockaddr_info_get() failed for \xe4\xb8\xbb\xe4\xba\xba
AH00558: httpd: Could not reliably determine the server‘s fully qualified domain name, using 127.0.0.1. Set the ‘ServerName‘ directive globally to suppress this message

9. 测试:在浏览器输入本机IP看看能不能出现htdocs目录下的默认html文件

c.配置文件(*)

配置基本的web站点
(1)设置web站点的主目录为/sxjy/web
DocumentRoot "/sxjy/web"

(2)设置web站点的主页文件名为index.html,index.htm,index.php三个
DocumentRoot index.html index.htm index.php

(3)设置服务器使用(/usr/local/httpd/conf/extra/httpd-mpm.conf )prefork模式工作时启动10个空闲进程,最小保持10个空闲进程,最大空闲进程数为50个,并发最大用户为1000
<IfModule mpm_prefork_module>
StartServers 10
MinSpareServers 10
MaxSpareServers 50
ServerLimit 1000
MaxRequestWorkers 1000
MaxConnectionsPerChild 0
</IfModule>

(4)(/usr/local/httpd/conf/extra/httpd-info.conf)启用服务器信息和状态查看页面
<Location /server-status>
SetHandler server-status
Require host .sxjy.com
Require ip 172.16.0.0/16
</Location>

(5)网络链接超时时间为10秒
TimeOut 10

(6)保活连接超时时间为3秒
KeepAlive On
KeepAliveTimeout 3

(7)设置错误日志的级别为info
LogLevel info

(8)设置访问日志记录客户端地址、请求协议、浏览器类型和版本、请求方法、状态、请求时间、响应请求的子进程ID、{referer}等信息
LogFormat "%t %h %H %P %m %l %u %U \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
CustomLog "logs/access_log" combined

2、apache的Alias,ScriptAlias,options FollowSymLinks,options Indexs配置
作用:访问不在web目录下的文件和列出目录下的内容
Alias /meizu "/usr/local/httpd/meizu"
ScriptAlias /cgi-bin/ "/usr/local/httpd/cgi-bin/"
<Directory "/usr/local/httpd/meizu">
Require all granted
Require ip 172.16.0.0/16
</Directory>

<Directory />
options Indexes FollowSymLinks
</Directory>

3、apache的段配置
<Directory "/web">*</Directory> \\设置指定目录的访问规则
<Files ".ht*">*</Files> \\设置特定文件的访问规则
<Location /server-status>*</Location> \\设置URL包含特殊信息的访问规则
<IfModule dir_module>*</IfModule> \\判定模块是否加载,如果加载则使用指定的配置项

4、访问控制、认证和授权
访问控制
Require all granted \\允许所有的访问
Require all denied \\拒绝所有的访问

例:(1)对于/meizu目录下的内容,除了172.16.0.7外所有人都可以访问
apache 2.4版
<Directory "/meizu">
<RequireAll>
Require all granted
Require not ip 172.16.0.7
</RequireAll>
</Directory>

apache 2.2版
<Directory "/meizu">
Order deny,allow
Deny from 172.16.0.7
Allow from all
</Directory>

(2)对于/meizu目录下的内容,除了172.16.0.254外所有人都不可以访问
<Directory "/meizu">
Require all denied
Require ip 172.16.0.254
</Directory>

认证和授权
例:(1)对于/meizu目录下的内容,只允许admin用户访问
<Directory "/usr/local/httpd/meizu">
AuthType Basic
AuthName "Restricted Files"
AuthBasicProvider file
AuthUserFile "/usr/local/httpd/passwd/password"
Require valid-user
</Directory>

# ./htpasswd -c /usr/local/httpd/passwd/password admin \\创建用户认证的密码文件,第一次使用加-c选项

练习:(1)在web网站的根目录下创建一个myweb目录,将web根目录外的一个文件通过符号链接到myweb目录下并能够访问
# mkdir /usr/local/httpd/myweb
# ln -s /usr/local/httpd/myweb/test.html /usr/local/httpd/htdocs/test.html
# vim httpd.conf
<Directory />
Options FollowSymLinks
</Directory>

(2)当myweb目录下不存在index.html主页文件时,不允许列出目录下的内容
<Directory /myweb>
Options -Indexs
</Directory>

(3)在web服务器根目录下的test.html文件,要求此文件只能被一个特定的ip地址访问,地址自己定义
<Location "/test.html">
Require all denied
Require ip 172.16.0.250
</Location>

(4)在web根目录之外创建一个sxjy目录并随便放入几个html文件,当客户端访问的URL中包含/sxjy地址时则访问实际的sxjy目录下的内容(sxjy目录在web站点根目录之外)
Alias /sxjy/ /usr/local/httpd/sxjy/
<Directory /usr/local/httpd/sxjy>
Require all granted
</Directory>

(5)对于sxjy目录的内容,只允许经过认证的user01,user02两个用户访问
<Directory /sxjy>
AuthType Basic
AuthName "Restricted Files"
AuthBasicProvider file
AuthUserFile "/usr/local/httpd/passwd/password"
Require user user01 user02
</Directory>

# htpasswd -c /usr/local/httpd/passwd/password user01
# htpasswd /usr/local/httpd/passwd/password user02
# vim httpd.conf
LoadModule authn_file_module modules/mod_authn_file.so
LoadModule authz_host_module modules/mod_authz_host.so
LoadModule authz_user_module modules/mod_authz_user.so
LoadModule authz_groupfile_module modules/mod_authz_groupfile.so

假设web的根目录为:/usr/local/httpd/htdocs

常用认证命令
AuthType Basic
AuthName "Restricted Files"
AuthBasicProvider file
AuthUserFile "/usr/local/httpd/passwd/password"

Require user user01 user02
Require Valid-User

AuthGroupFile "/usr/local/httpd/passwd/groups"
Require group sxjy

satisfy all | any \\访问控制、认证和授权的满足条件控制

时间: 2024-10-14 20:42:19

redhat6下的网络服务的详解、安装及配置的相关文章

DNS服务相关概念详解

实验环境:RHEL 32Bit DNS服务相关概念详解 DNS是一种域名解析服务,DNS服务的核心以及DNS服务的标准都是基于一个软件来实现的,这个软件叫做BIND(Berkeley Internet Name Domain),互联网上几乎所有的DNS服务都是由BIND来构建的,虽然也有其它的DNS服务构建标准,但是它们的使用语法以及工作机制都和BIND非常接近. ·Linux服务器和Windows服务器的比较 Linux服务器在没有SELinux的时候它的安全级别和Windows服务器的安全级

VM网络连接设置详解

参考http://zhidao.baidu.com/link?url=NU8UcLsp6CCgRZzeMgnb7v0p7Z78eLYloYW355Z9fQa__pm_lFBtpfSs61ZR2Wq2yX1ljRrgiP2NGOccH_CttK 桥接 通过使用物理机网卡 具有独立ip NAT 把物理机作为路由器进行上网 host-only 只能与物理机相连 下面是详细的解说 VMWare提供了三种工作模式,它们是bridged(bridged模式).NAT(网络地址转换模式)和host-only(

iOS定位服务编程详解

现在的移动设备很多都提供定位服务,使用iOS系统的iPhone.iPod Touch和iPad都可以提供位置服务,iOS设备能提供3种不同途径进行定位:Wifi, 蜂窝式移动电话基站, GPS卫星 iOS 不像Android系统在定位服务编程时,可以指定采用哪种途径进行定位.iOS的API把底层这些细节屏蔽掉了,开发人员和用户并不知道现在设备是采用 哪种方式进行定位的,iOS系统会根据设备的情况和周围的环境,采用一套最佳的解决方案.这个方案是这样的,如果能够接收GPS信息,那么设备优先采用 GP

[fw]Linux下tty/pty/pts/ptmx详解

基本概念: 1> tty(终端设备的统称):tty一词源于Teletypes,或者teletypewriters,原来指的是电传打字机,是通过串行线用打印机键盘通过阅读和发送信息的东西,后来这东西被键盘与显示器取代,所以现在叫终端比较合适.终端是一种字符型设备,它有多种类型,通常使用tty来简称各种类型的终端设备. 2> pty(虚拟终端):但是如果我们远程telnet到主机或使用xterm时不也需要一个终端交互么?是的,这就是虚拟终端pty(pseudo-tty) 3> pts/ptm

【转】Linux 下搭建Postfix邮件服务器详解:

在我自己的服务器上面搭建了邮件服务器,为的是接下来写shell脚本进行报警监控.当服务器发生意外,可以及时发送邮件服务器到邮箱. 看了两个教程,按照两个教程来搭建的,感谢原作. Linux 下搭建Postfix邮件服务器详解: 1.首先关闭sendmail服务 service sendmail stop 2.chkconfig sendmail off(关闭开机自启动) 3.修改DNS正解文件,使DNS能够解析邮箱服务 添加下面两行 mail.zhubf.com. IN A           

Centos 6.5搭建SVN服务步骤详解

Centos 6.5搭建SVN服务步骤详解 一:SVN的运行方式 SVN服务器有2种运行方式, 本文介绍独立服务器的安装方法. 1.    独立服务器 (例如:svn://xxx.com/xxx): 2.    借助apache(例如:http://svn.xxx.com/xxx): 二:安装SVN 1.用yum安装svn yum -y install subversion 2.查看svn版本 svnversion --version或者/usr/bin/svnversion --version

网络之Socket详解

网络之Socket详解 1.什么是Socket? Socket本质上还是文件,因为Linux上一切皆文件.Socket也有对应的文件描述符(fd).文件描述符相关的参考另外一篇博客. http://blog.csdn.net/weililansehudiefei/article/details/78113082 在这里简单就认为,它是对应着一个文件的,就可以. Socket位于TCP/IP之上,通过Socket可以方便的进行通信连接.对外屏蔽了复杂的TCP/IP. 2.Socket连接详解 So

《Java网络编程核心技术详解》赶稿中......

<精通JPA与Hibernate:Java对象持久化技术详解>这本书写完,就开始着手写<Java网络编程核心技术详解>一书,已经写了一大半,内容包括:Java网络编程的基础知识. 套接字编程.非阻塞通信.创建HTTP服务器与客户程序.数据报通信.对象的序列化与反序列化.Java反射机制.RMI框架.JDBC API.JavaMail API.MVC设计模式.XML处理.安全网络通信.CORBA和Web服务. 每写一章,都会遇到一些挑战,主要是在调试程序时,没有出现预期的结果.例如分

Android PullToRefresh (ListView GridView 下拉刷新) 使用详解

Android PullToRefresh (ListView GridView 下拉刷新) 使用详解 标签: Android下拉刷新pullToRefreshListViewGridView 版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[+] 转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/38238749,本文出自:[张鸿洋的博客] 群里一哥们今天聊天偶然提到这个git hub上的控件:pull-to-r