Linux web服务的基本配置
参考
Linux中Apache安装与配置(CentOS-6.5:httpd-2.4.tar.gz)
总结之:CentOS 6.5 HTTPD服务的全面解读及配置详解
环境:
Red hat 6.5
apache/2.2.15
安装GNOME视图桌面系统会默认安装httpd服务(依赖关系)
[httpd]
俗称apache,是最流行的Web服务器端软件。同时Apache音译为阿帕奇,是北美印第安人的一个部落,叫阿帕奇族,在美国的西南部。也是一个基金会的名称、一种武装直升机等等。
httpd其实是一种高度模块化设计的、通常由核心和各种模块所组成
查询安装:
rpm -q httpd
安装apache
yum install httpd
查看版本
[root@conling 桌面]# httpd -v
Server version: Apache/2.2.15 (Unix)
Server built: Aug 2 2013 08:02:15
httpd的常用的功能特性:
支持路径别名:alias
支持用户认证:基本认证和摘要认证authentication
支持虚拟主机:virtual host 在一个物理主机上提供多个站点
支持负载均衡:是反向代理的一个子特性
支持用户站点:当前用户都可以在自己的家目录下创建自己的站点
支持CGI:Common Gateway Interface 通用网关接口
目录结构
服务脚本:/etc/rc.d/init.d/httpd
脚本配置文件路径:/etc/sysconfig/httpd
运行目录:/etc/httpd
配置文件:
主配置:/etc/httpd/conf/httpd.conf
扩展配置:/etc/httpd/conf.d/*.conf
监听的Socket: tcp的80, 443是https/tcp的监听端口
在内核中使用小于1023的端口的只有管理员
文档根目录:/var/www/html
CGI目录:/var/www/cgi-bin/
主配置文件结构
全局配置:对主服务器或虚拟主机都有效,且有些功能是服务器自身工作属性;
主服务器配置:主站属性
虚拟服务器:虚拟主机及属性定义
测试配置和查看的命令
service httpd configtest #测试配置文件有没有语法错误
httpd -t #同上
httpd -l #当前服务器所使用的模型及开启模块
httpd -D DUMP_MODULES #当前服务器支持的模块
service httpd reload #重新加载配置文件
service httpd restart #重启httpd服务
注意:修改配置文件后要重新加载配置文件,修改服务器监听端口后要重启服务
主配置文件的基本配置
配置httpd的工作属性时,指令不区分大小写,但有约定俗成的习惯:
单词的首字母大写;指令的值很有可能区分大小写;有些指令可以重复使用多次;
Listen [IP:]PORT //配置监听的端口,IP为可选项,不写则监听所有接口的端口。
例如:Listen 172.16.3.1:80 ,多个站点时需要监听多个接口。
指定网站的主目录
DocumentRoot "/var/www/html"
Options //配置页面文件的访问属性
Indexes #是否允许索引页面文件,建议关闭
FollowSymLinks #是否跟随软连接文件
SymLinksifOwnerMatch #跟随符号链接,只允许访问运行apache的用户有属主权限的文件
ExecCGI: #是否允许执行CGI脚本;
基于客户端的访问控制
系统默认允许所有人访问
Order #定义allow和deny那个为默认法则;写在后面的为默认法则:写在前面的指令没有显示定义的即受后面的指令控制:
Order allow,deny
Allow from all #所有人可以访问
例:配置允许172.16.0.0/16访问,但不允许172.16.3.1访问
Order allow,deny
Deny from 172.16.3.1 #禁用一个IP访问
Allow from 172.16.0.0/16 #允许一个网段访问
userdir个人站点
# UserDir is disabled by default since it can confirm the presence
# of a username on the system (depending on home directory
# permissions).
#
#UserDir disabled #注释此项
#
# To enable requests to /~user/ to serve the user's public_html
# directory, remove the "UserDir disabled" line above, and uncomment
# the following line instead:
#
UserDir public_html #开启此项
//在相应的用户家目录中创建文件public_html 即可实现访问。
重新加载配置文件后用:http://HOST/~username/
例如:http://172.16.3.1/~centos/
定义默认主页
DirectoryIndex index.PHP index.jsp index.html
日志功能
日志有两类:访问日志(格式自定义)、错误日志
错误日志:
ErrorLog "/path/to/error_log_file"
访问日志:
CustomLog "/path/to/custom_log_file" logformat
日志格式:{combined|common|agent}
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %b" common
LogFormat "%{Referer}i -> %U" referer
LogFormat "%{User-agent}i" agent
%h #主机名
%l #
%u #用户名
%t #请求到达的时间
%r #请求报文的起始行,方法
%s #
%b #响应报文的大小
%{Foobar}i #显示从发那个站点跳转过来
%{User-Agent}i #用户代理
基于用户访问控制
当你的网站或者站点的某个路径只想让你授权的用户访问时,就可以使用基于用户的访问控制
这里使用htpasswd命令建立用户帐号文件
htpasswd
-c #第一次使用-c创建新文件,不是第一次不要使用此选项
-m #用户密码使用MD5加密后存放
-s #用户密码使用SHA加密后存放
-p #用户密码不加密
-d #禁用一个账户
-e #启用一个账户
例如:
# htpasswd -c -m /etc/httpd/conf/.htpass tom
命令 选项 生成的用户文件路径及文件名 用户名
# htpasswd -m /etc/httpd/conf/.htpass jerry
# 再次添加用户时就不要使用-c选项了,否则会覆盖之前内容先生成
(1)建立用户帐号文件
\# htpasswd -c -m /etc/httpd/conf/.htpass tom
(2)修改主配置文件(直接在主站添加用户认证功能)
\# vi /etc/httpd/conf/httpd.con
DocumentRoot "/www/html" #此时网站根目录就是/www/html
Optins Indexes
AllowOverride AuthConfig
AuthName "Oaly for employees." #登录提示信息,可自定义
AuthType Basic #认证方式
AuthUserFile /etc/httpd/conf/.htpass #用户帐号文件
Require valid-user #允许的用户
Require 指定可以访问的用户,可以指定单个用户,直接写用户名就可以了,用户名可以写多个用空格分开,也可以指定所有用户就用 valid-user
对某个目录进行用户访问控制
虚拟主机
第一种方式,在主配置文件的末尾,有虚拟主机的模板
<VirtualHost *:8080>
DocumentRoot /var/www/blog
DirectoryIndex index.html
</VirtualHost>
Listen 8080
//添加以上内容 意为启用监听8080端口,且该端口的网站目录为/var/www/blog,默认文档为index.html.
//该方式为通过指定端口的形式来访问不同的站点。
第二种方式,在同一台服务器上创建不同的主机名的虚拟主机。
(1)注释主服务器,添加虚拟主机
# DocumentRoot "/www/html" #注释主服务器
NameVirtualHost 172.16.3.1:80 #开启虚拟主机
DocumentRoot /www/web1 #虚拟主机的网站根目录
ServerName web1.lyd.com #主机名
DocumentRoot /www/web2
ServerName web2.lyd.com
(2)给虚拟主机提供测试文件
mkdir /www/web{1,2}
echo web1.lyd.com > /www/web1/index.html
echo web2.lyd.com > /www/web2/index.html
(3)配置完后用 httpd -t 测试配置文件有没有错误
(4)重启服务 service httpd restart
(5)验证,修改验证客户端的hosts文件,
windows客户端
开始-->运行-->输入"c:\windows\system32\drivers\etc\hosts"用记事本打开并添加以下行
172.16.3.1web1.lyd.com
172.16.3.1web2.lyd.com
配置防火墙
#修改防火墙配置:
# vi + /etc/sysconfig/iptables
#添加配置项
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
#重启防火墙
# service iptables restart
检查端口状态
netstat -tln //查看相应的端口是否已开启