- snjk
-
* 回复内容中包含的链接未经审核,可能存在风险,暂不予完整展示!user dir disabled
用户目录禁用
浏览器打开:http://ip(默认打开index.html或者index.php),测试的时候selinux最好关掉,iptables最好是清空的,否则可能会报错或看不到网页。
Apache默认监听TCP协议80端口
Apache服务默认会启动一个主进程(控制进程)和多个子进程查看apache相关进程:ps aux | grep httpd
其中以root身份运行的是主进程,以apache身份运行的是子进程,主进程的进程ID保存在/etc/httpd/run/httpd.pid文件内。
查看监听端口: netstat -tupln | grep 80
Apache DSO:dynamic shared object
Apache是一个模块化设计的服务,核心只包含主要功能,扩展功能通过模块实现,不同的模块可以被静态的编译进程序,也可以动态加载。
Apache模块动态加载通过dso 实现
查看模块 httpd -M
查看静态编译入程序的模块:httpd -l
yum install -y httpd-tools
yum list | gerp httpd
yum install -y httpd-*安装全部的httpd服务相关软件包
apxs(需要安装相关功能)这个工具可以独立的编译Apache服务模块 查看下这个工具的信息: which apxs
rpm -qf /usr/sbin/apxs
httpd -M 看到的so_module(static)这个模块就是DSO功能模块,static是静态编译进的表示,share是DSO的
httpd -l 查看静态编译进来的模块
core.c 核心 prefork.c 进程管理的功能
http_core.c http的核心功能
mod_so.c DSO模块功能
Apache MPM:
MPM(Multi Process Modules)
负责实现网络监听,请求的处理等功能,MPM有很多种,目的是为了在不同平台环境下实现最优化的性能及稳定性
平台 MPM
BeOS beos
NetWare mpm_netware
OS/2 mpmt_os2
Linux prefork或worker
Windows mpm_winnt
查看当前Apache服务所使用的MPM
httpd -l
prefork.c 默认静态编译进Apache
httpd -V
Prefork与worker区别
Prefork是非线程,预生成进程型MPM,prefork会预先启动一些子进程,每个子进程一个时间点只能处理一个请求,并且会根据并发请求数量动态生成更多子进程。线程安全
Worker是线程化的,多进程的MPM,每个进程可以生成多个线程,每个线程处理一个请求。Worker的效率没有prefork高。线程化安全性有问题
修改MPM需要重新编译Apache
Apache MPM(prefork or worker)详解
/etc/httpd/conf/httpd.conf
<IfModule prefork.c> //如果加载了这个模块,就实现一下配置,一个条件化模块加载
StartServers 8 //服务在启动时默认启动几个子进程
MinSpareServers 5 //最小空闲进程数量
MaxSpareServers 20 //最大空闲进程数量
ServerLimit 256 //限制MaxClients
MaxClients 256 //最大并发量,就是同时访问数量
MaxRequestsPerChild 4000 //每个子进程最多能处理的请求数量,处理够数量后就被kill然后重新启动
</IfModule>
top命令查看进程;
压力测试:ab -c 16 -n 10000 http://IP/index.html
-c 并发量
-n 请求次数
配合压力测试与自己的host性能与实际需求环境来优化
ps uax | grep httpd
watch -n 1 “ps uax | grep httpd” 动态查看
Apache配置文件:
日志:/etc/httpd/logs
模块的保存位置:/etc/httpd/modules
模块配置文件:/etc/httpd/conf.d
运行时的一些信息:/etc/httpd/run
主配置文件:/etc/httpd/conf/httpd.conf,注释有说,apache主配置文件分为三个部分:1、全局配置;2、主服务器或者默认服务器配置,说的就是那一个;3、虚拟主机配置。
主配置文件(/etc/httpd/conf/httpd.conf)修改的时候备份一份httpd.conf.bak。
Section 1:Global Environment
第一部分配置,全局配置,针对真个apache服务的配置,配置后全局生效;
ServerTokens OS 默认值OS,当我们服务器返回一些信息的时候,用来控制报错信息多少的程度,ServerTokens Major 修改os为Major 比OS少,Full全部,涉及安全的,最好设置成?
ServerRoot “/etc/httpd” 控制服务的主目录也就是配置文件的主目录。上面有一个注释 do not add a slash ···是不能在···httpd后加 /
PidFile run/httpd.pid 记录apache主进程(控制进程)的Pid,用的是相对路径 ServerRoot+自己的路径就OK。
Timeout 60 apache的超时时间。
KeepAlive off KeepAlive是TCP的一个功能,正常情况下我们与服务器建立一个TCP连接只能进行一次请求,但访问一个页面可能包含几个请求,如果每个请求都去建立一个新的TCP连接,会很耗费资源,如果打开了KeepAlive TCP的饱和功能 这样允许在一个TCP连接中进行多次请求。
MaxKeepAliveRequests 100 一个TCP连接最多的请求次数设定,0是无限次,别这样设置。
KeepAliveTimeout 15 一个TCP连接两次请求之间的最大时间间隔
Listen 80 控制我们服务默认的监听端口号,或者在哪个IP地址上监听,Listen 80是在服务器上,所有ip地址都监听80端口;如果你的服务器有多块网卡,每个网卡都有自己的IP,设置Listen 80时,从哪块网卡访问都是可以的;如果我们指向让我们的web服务工作在多网卡中的一块卡上,Listen IP:80 就是让web服务只工作在这个ip的网卡上;如果一个网卡多个ip地址呢,那就是只监听链接到这个ip地址80端口的请求。
DSO设置:
LoadModule ModuleName 模块路径,模块的加载信息。
Include conf.d/*.conf 加载模块的配置文件,(其实就是加载了conf.d中的模块配置文件,),每个模块都可以在conf.d中有一个独立的配置文件,之所以起作用了就是因为这条加载命令;conf.d中每个模块中的配置文件 完全可以写到httpd.conf中。
User apache和Group apache是指定apache服务子进程是以哪个用户身份运行的;ps uax | grep httpd,root父进程,apache子进程。模块配置文件:/etc/httpd/conf.d (Apache通过模块扩充自己的功能,当安装了某些模块后,模块的配置文件在此)
Apache的根目录:默认是/var/www/html 。
main Server configurationg:
默认管理员邮箱修改:ServerAdmin root@localhost,改成:992158588@q.com;作用:服务器出错时生成一个报错页面,终端用户可以看到这个邮箱并反馈意见到邮箱。
# ServerName www.e*****.com:80----->可以改成自己的域名,去掉#号注释,指定自己服务器的域名。
UseCanonicalName off 是否使用严格合法的域名,实际是控制的服务端的参数接受,如果使用虚拟主机了必须是off。
Apache默认根目录修改:DocumentRoot “/var/www/html”
修改示例:DocumentRoot “/home/b***.com”
修改之后创建目录:mkdir -p /home/b***.com
echo “新根目录” >> /home/b***.com/index.html
service httpd reload,重新加载配置文件,刷新网页查看根目录权限选项等控制:
<Directory “/var/www/html”> ->修改/home/b***.com
参数
参数
Opinions FollowSymlinks
AllowOverride None
<Driectory>
将参数应用到/var/www/html 实施访问控制功能, Driectory是针对目录实施访问控制功能的;Apache允许对不同目录有不同的访问控制功能,缺省的访问控制如下:
<Directory /> /根目录其实表示应用到了全局,类似浏览器中http://192.168.0.1/ 这个/
Opinions FollowSymlinks
AllowOverride None
<Driectory>
地址重写:
需要apache加载了rewrite_module 模块,配置一下让网站程序所在的目录可以使用地址重写的功能。
Apachectl -M查看模块,rewrite_module
修改配置文件让指定目录可以使用apache的地址重写功能
vim /etc/httpd/conf/httpd.conf
?FollowSymLinks
<Directory “/var/www/html”> --->修改目录为”/mnt/www”
``````
修改AllowOverride None---->AllowOverride All;/mnt/www目录下的网站程序都可以使用.htaccess这个文件的自定义地址重写规则
其它详细配置:
<Directory “/var/www/html”> ->修改/home/baidu.org
Options Indexes FollowSymLinks 是否允许没有主页的时候进行文件索引
AllowOverride None
Order allow,deny
Allow from all
<Driectory>
默认 参数只影响到/var/www/html这个目录下
<IfModule mod_userdir.c>
UserDir disabled
UserDir public_html
</IfModule>
这是一个条件加载语句,if加载了这个模块,定义的规则才会生效
DirectoryIndex index.html index.php index.html.var当我们没有指定任何网页的时候,默认加载的网页,就是首页的名称。
AccessFileName .htaccess 加载分布式访问控制的文件
<Files ~ “^.ht”>后面跟了正则表达式,不允许访问.ht开头的文件,就是不允许客户端访问
Order allow,deny
Deny from:all
Satisfy All
</Files>对文件访问进行控制
TypesConfig /etc/mime.types 指定mime.types配置文件的访问路径,mime是指定文件它的每一种类型,比如.txt是纯文本的,.html也是纯文本的,````````
DefaultType text/plain 指定网页默认类型,这里是纯文的。
HostnameLookups off是否进行域名的解析,一般关掉,,,会占用资源,而且一般的ip地址没有反向解析,或者不允许;apache有一个日志叫XXX,里面记录了每个客户端的访问信息,包括ip地址,那些请求,访问了那些页面···如果开启了,apache会将这些源ip地址解析到域名,慢慢
ErrorLog logs/error_log 指定默认的服务器错误日志的保存路径
LogLevel warn默认日志记录的详细程度warn是最详细的
LogFormat是日志记录的格式,
Customlog logs/access_log combined指定默认访问日志的位置
ServerSignature On 服务器签名,类似ServerToken,控制服务器报错信息的详细程度。
Alias /icons/ “var/www/icons” 服务器路径别名,前面是别名 后面是完整路径
ScriptAlias /cgi-bin/ “/var/www/cgi-bin/” 脚本别名
AddIcon 文件类型图标
AddDefaultCharset UTF-8 指定默认网页的编码 BrowserMatch 进行浏览器设置匹配
创建虚拟主机:
当我们设置多个域名指向主机的时,想要每个域名都有自己的发布目录,那么可以用apache的虚拟主机功能。
#NameVirtualHost *:80这一行的#去掉,告诉apache开启虚拟主机的功能,*:80是监听所有IP的80端口,#是注释符。
第一个虚拟主机会做为默认的虚拟主机,一般不会用在真正的网站上,如果有陌生的域名指向了我们的服务器IP,打开的就是第一个默认的虚拟主机的发布目录中的内容。
#默认虚拟主机开始
<VirtualHost *:80>
ServerAdmin webmaster@dummy-host.e*****.com
DocumentRoot /mnt/www/default/public_html
ServerName dummy-host.e*****.com
ServerAlias www.dummy-host.e*****.com
ErrorLog logs/dummy-host.e*****.com-error_log
CustomLog logs/dummy-host.e*****.com-access_log common
</VirtualHost>
#默认虚拟主机结束
#baidu开始
<VirtualHost *:80>
ServerAdmin wanghao@b***.cn
DocumentRoot /mnt/www/b***.cn/public_html
ServerName b***.cn
ServerAlias www.b***.cn
ErrorLog /mnt/www/b***.cn/logs/error.log
CustomLog /mnt/www/b***.cn/logs/access.log common
</VirtualHost>
#baidu结束
baidu.me的虚拟主机参照b***.cn的设置,虚拟主机创建完成别忘了创建目录:
mkdir -p /mnt/www/b***.cn/public_html
mkdir /mnt/www/b***.cn/logs
service httpd reload,重新加载配置文件;echo “这是b***.cn的网站” >> /mnt/www/b***.cn/public_html/index.html,访问域名测试
- nicehost
-
* 回复内容中包含的链接未经审核,可能存在风险,暂不予完整展示!这个词有的时候可能会出现在某些网页后边是网页的域名如https://solidworks.v***********.com/#userdir_button 而userdir disabled表示的是这个网页因一些问题而无法访问,不可用
- 瑞瑞爱吃桃
-
* 回复内容中包含的链接未经审核,可能存在风险,暂不予完整展示!这是类似用户禁令吧。用于限制一些用户访问。
可参考http://man.c*******.net/newsoft/ApacheManual/mod/mod_userdir.html
- wio
-
user dir disabled
用户 目录 禁用
- meira
-
user dir disabled
用户目录禁用
- 真可
-
意思是:“有残疾的”
- 阿啵呲嘚
-
user dir disabled
用户目录禁用
.
很高兴为你解答!
如有不懂,请追问。 谢谢!