Linux-搭建http服务器及配置文件详解,认证用户
程序员文章站
2024-03-20 16:26:40
...
一:编译安装http2.4
1.下载httpd,apr,apr-util
wget http://apache.fayea.com//httpd/httpd-2.4.27.tar.gz
wget http://mirror.bit.edu.cn/apache//apr/apr-1.6.2.tar.gz
wget http://mirror.bit.edu.cn/apache//apr/apr-util-1.6.0.tar.gz
2.安装
a.先安装apr
[root@www ]# cd apr-1.6.2
[root@www apr-1.6.2]# ./configure --prefix=/usr/local/apr
[root@www apr-1.6.2]# make && make install
b.在安装apr-util
[root@www ]# cd apr-util-1.6.0
[root@www apr-util-1.6.0]#./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr
[root@www apr-util-1.6.0]#make && make install
c.最后安装htpd2.4
[root@www ]# cd httpd-2.4.27
[root@www httpd-2.4.27]# ./configure --prefix=/usr/local/httpd --sysconfdir=/etc/httpd --enable-so --enable--ssl --enable-cgi --enable-rewrite --with-zlib --with-pcre --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --enable-modeles=most --enable-mpms-shared=all --with-mpm=event
[root@www httpd-2.4.27]# make && make install
3.额外配置
1 导出头文件
[[email protected] httpd]#ln -sv /usr/local/appache/include /usr/include/httpd
2 导出帮助文件
修改vim /etc/man.config
3 修改环境变量
编辑/etc/profile.d/httpd
export PATH=/usr/local/apache/bin:$PATH
4 编辑/etc/rc.d/init.d.httpd脚本,或者复制。
apachectl=/usr/local/httpd/bin/apachectl
httpd=/usr/local/httpd/bin/httpd
prog=httpd
pidfile=${PIDFILE-/var/run/httpd24.pid}
lockfile=${LOCKFILE-/var/lock/subsys/httpd24}
4.测试
5.配置文件详解
a.监听套接子
Listen [IP:]port
b.配置使用keep alive
KeepAlive {On|Off} 是否使用持久换保持
KeepAliveTimeout 2
MaxKeepAliveRequests 50
c.MPM配置
系统默认启动的模块可以通过#httpd -l来查看
系统默认启动的I/O结构为prefork结构
如果想启动worker:
(1).使用service httpd.worker start来启动
(2).或者配置脚本配置文件/etc/sysconfig/httpd 去掉注释
如果向启动event:方法一样
<IfModule prefork.c> 如果mod_userdir.c文件存在,则是用以下的配置文件
StartServers 默认启动工作进程数
MinSpareServers 最小空闲进程数
MaxSpareServers 最大空闲进程数
ServerLimit 最大活动状态进程数
MaxClients 最大并发连接数
MaxRequestsPerChild 每个子进程在生命周期内所能服务的最大请求个数
</IfModule>
<IfModule worker.c>
StartServers
MaxClients
MinSpareThreads 最小空闲线程数
MaxSpareThreads
ThreadsPerChild 每个子进程可以生成的线程数
MaxRequestsPerChild 每个子进程所响应的最多个数,0表示不做限定
</IfModule>
d.DSO模块的加载方式
LoadModule auth_basic_module /path
#httpd -M:列出已经装载的DSO模块
#httpd -l:列出非DSO模块
e.配置站点根目录
DocumentRoot /path
<Directory /path> 页面访问属性
Options:
Indexs:缺少指定的默认页面时,将站点的文件目录展现给用户。
FollowSymLinks:允许跟随符号链接所指向的原文件
None:所有都启用
All:所有否不启用
ExecCGI:允许使用mod_cgi模块执行CGI脚本
Includes:允许使用mod_incliude模块实现服务器端包含(SSI)
MiltiViews:允许使用mod_negotiation实现内容协商
SymLinkIfOwnerMatch:在链接文件的属主组和原始文件相同时,允许跟随符号链接所指向的原文件
AllowOverride None
</Directory>
f.基于主机的访问控制
<Directory />
Options
AllowOverride 表示一下内容是否被禁用,None表示不禁用
Order Allow,Deny 表示次序
Allow from ip/all
Deny
</Directory>
g.基于用户的访问控制
虚拟用户:是在访问某一文件而存在用户,不具有系统的任何权限
认证类型:
basic:基本认证,帐号密码进行明文发送
digest:摘要认证
配置方式:
<Directory "/path">
Options None
AllowOverride AuthConfig
AuthType Basic 认证类型,表示使用那一种认证机制
AuthName “” 认证机制的名称
AuthUserFile /path 基于用户认证时需要的文件
Require valid—user
</Directory>
使用此机制的用户添加
#htpasswd -c -m 文件名 用户
-c:创建文件 -m:添加用户
基于用户组的认证
将原有的配置中的AuthUserFile 替换成AuthGroupFile
在将原有配置中的Require valid-user 替换成Require group group_name
也可以将两个放在一起,进行两种访问控制
h.定义默认页面
DirectoryIndex index.php index.html
i.用户目录
如果期望让每个用户都可以创建个人站点:访问格式
userdir disablied:表示禁止
userdir public_html:表示用户家目录名称,注:用户的家目录的赋予运行httpd进程的用户拥有执行权
j.配置日志功能
定义访问日志的功能
Customlog ‘"/path" 日志name
LogFormat "宏定义" 日志名称
宏定义:
%h:客户端地址
%l:远程登录名,通常为-
%u:认证时的远程用户名,没有认证时通常伪-
%t:收到请求时的时间
%r:请求报文的起始行
%>s:响应状态码
%b:响应报文的长度,以字节伪单位
%{Header_name}i:记录指定请求报文首部的内容
错误日志ErroeLog "/path"
k.路径别名
Alias 别名 "真路径"
l.指定默认字符集
AddDefaultCharset utf-8
httpd配置(2)
m.脚本路径别名
URL->>filesystem directory
CGI:通用网管接口
ScriptAliase /URL/ "/path/" path路仅下的文件全部执行完了之后将结果返还给用户
详细在/var/www/cgi-bin下
n.虚拟主机 (使用虚拟主机,要关闭主机)
一个物理服务器提供多个站点
基于不同的ip实现不同的虚拟
变化IP
基于不同的port实现不同虚拟主机
变化端口
基于不同的FQDN实现不同的虚拟主机
变化ServiceName 其中伪*.80
<VirtualHost *:80>
ServerName
DocumentRoot “”
<Directory "">
ServiceAliase
ServiceAdmin
</VirtualHost *:80>
o.页面压缩
在配置文件中使用#mod_deflate configuration模块
SetOutputFilter DEFLATE //启用DEFLATE
<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE 文件类型(如text/html)
BrowserMatch ... #进行浏览器匹配,解决浏览器不支持压缩页面的解压
</IfModule>
6.基于用户认证访问httpd服务器
配置方式:
<Directory "/var/www/html/base">
Options None
AllowOverride AuthConfig
AuthType Basic
AuthName “”
AuthUserFile /home/htpasswd
Require valid—user
</Directory>
创建/home/htpasswd文件
mkdir /home/htpasswd
使用htpasswd命令创建用户和密码
htpasswd -c -m /home/htpasswd user
New password:
Re-type new password:
测试结果:
![这里写图片描述](https://img-blog.csdn.net/20170714182519280?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQva2FpcnVpMTIz/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
上一篇: 使用node创建一个简单的服务器