Linux web服务的基本配置(httpd)

时间:2023-01-04 13:20:45

Linux web服务的基本配置

参考

Linux服务之httpd基本配置详解(主要)

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

对某个目录进行用户访问控制
Linux web服务的基本配置(httpd)

虚拟主机

第一种方式,在主配置文件的末尾,有虚拟主机的模板

<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    //查看相应的端口是否已开启