Apache web服务器目录结构、发布网站
Apache下载
https://httpd.apache.org/download.cgi
Apache目录结构
-|- bin ->binary,二进制文件,是apache的主程序及控制台等可执行程序的目录
-|- cgi-bin ->公共网管接口方目录
-|- conf ->配置文件目录
-|- |- extra ->辅配置子配置
-|- |-original ->原始配置目录
-|- |-httpd.conf ->主配置文件
-|-error -> 存入一些请求错误时,所给客户回应的信息
-|-htdocs ->网页主目录
-|-icons ->小图标
-|-include和lib apache编写引用的头文件和类库
-|-logs ->日志信息,其中error.log是错误日志信息,对我们调试有帮助
-|-modules ->模块目录,已经编译好的各种功能模块
-|- ABOUT_APACHE.txt Apache说明
-|- CHANGES.txt Apache版本变动情况
-|- INSTALL.txt Apache在不同操作系统上安装说明
-|- LICENSE.txt Apache许可声明
-|- Licenses.txt Apache使用其他插件的许可情况
-|- NOTICE.txt 使用Apache的注意事项
以上主要用到四个文件夹:bin、conf、htdocs、modules。
bin目录
|-- bin # apache服务的命令目录
| |-- ab # http服务性能测试工具
| |-- apachectl # apache启动命令 windows下为ApacheMonitor.exe程序
| |-- apr-1-config
| |-- apu-1-config
| |-- apxs # http服务编译和安装扩展模块使用工具,在DSO方式模块编译时用到
| |-- checkgid
| |-- dbmmanage
| |-- envvars
| |-- envvars-std
| |-- htcacheclean # 清理磁盘缓冲区的控制命令
| |-- htdbm
| |-- htdigest
| |-- htpasswd # 建立和更新基本认证文件
| |-- httpd # httpd为apache的控制命令程序
| |-- httxt2dbm
| |-- logresolve
| -- rotatelogs
conf目录
|-- extra # 额外的apache配置文件目录 如:httpd-vhost.conf
| |-- httpd-autoindex.conf
| |-- httpd-dav.conf
| |-- httpd-default.conf
| |-- httpd-info.conf
| |-- httpd-languages.conf
| |-- httpd-manual.conf
| |-- httpd-mpm.conf
| |-- httpd-multilang-errordoc.conf
| |-- httpd-ssl.conf
| |-- httpd-userdir.conf
| |-- httpd-vhosts.conf
|-- httpd.conf # apache主配置文件
|-- magic
|-- mime.types
|-- original
| |-- extra
| | |-- httpd-autoindex.conf
| | |-- httpd-dav.conf # dav支持配置
| | |-- httpd-default.conf # 这个文件里配置的是apache的相关服务参数:超时时间、保持链接
| | |-- httpd-info.conf
| | |-- httpd-languages.conf # 语言支持
| | |-- httpd-manual.conf
| | |-- httpd-mpm.conf # 服务器池管理,也是优化apache的一个配置文件(apache的模式以及配置链接数,常用模式为worker模式和profork模式,默认porfork)
| | |-- httpd-multilang-errordoc.conf
| | |-- httpd-ssl.conf # 提供apache ssl支持配置文件
| | |-- httpd-userdir.conf
| | |-- httpd-vhosts.conf # 虚拟机的配置文件
| |-- httpd.conf
htdocs目录
|-- htdocs
| |-- index.html 默认站点发布文件,可以在主配置文件夹httpd.conf中指定发布文件位置:DocumentRoot "${SRVROOT}/htdocs" 修改为实际的网页文件位置,重启即可。
modules目录
|-- modules
| |-- mod_access_compat 基于主机(名称或IP地址)的组授权
| |-- mod_actions 根据媒体类型或请求方法执行CGI脚本。
| |-- mod_alias 提供在文档树中映射主机文件系统的不同部分并进行URL重定向的功能
| |-- mod_allowmethods 轻松限制可以在服务器上使用的HTTP方法
| |-- mod_asis 发送包含其自己的HTTP标头的文件
| |-- mod_auth_basic 基本HTTP验证
| |-- mod_auth_digest 使用MD5摘要认证的用户认证
| |-- mod_auth_form 表格认证
| |-- mod_authn_anon 允许“匿名”用户访问经过身份验证的区域
| |-- mod_authn_core 核心认证
| |-- mod_authn_dbd 使用SQL数据库的用户身份验证
| |-- mod_authn_dbm 使用DBM文件的用户身份验证
| |-- mod_authn_file 使用文本文件的用户身份验证
| |-- mod_authn_socache 管理身份验证凭据的缓存以减轻后端的负担
| |-- mod_authnz_fcgi 允许FastCGI授权者应用程序处理Apache httpd身份验证和授权
| |-- mod_authnz_ldap 允许使用LDAP目录存储用于HTTP基本身份验证的数据库。
| |-- mod_authz_core 核心授权
| |-- mod_authz_dbd 组授权和使用SQL登录
| |-- mod_authz_dbm 使用DBM文件的组授权
| |-- mod_authz_groupfile 使用纯文本文件的组授权
......................具体可以参看http://httpd.apache.org/docs/2.4/mod/ 的模块说明以及开启相关模块的说明。
conf主要配置
监听套接字
Listen[IP:]port
此指令可以出现多次,用于指定监听多个不同的套接字
Listen80
Listen172.16.100.7:8080
配置使用Keepalive
KeepAlive{On|Off}
KeepAliveTimeout 2 超时时间
MaxKeepAliveRequests 50 最大连接
MPM配置连接数配置
想使用不同的机制,修改配置文件即可/usr/local/apache2/conf/extra/ httpd-mpm.conf文件
<IfModule preforck.c> #判断模块是否存在
MaxClients 256 #最大并发连接数,最多允许发起的连接请求的个数
MaxRequestsPerChild 4000 #每个子进程在生命周期内最大允许服务的最多请求个数
MaxClients 300 #最大并发连接数,最多允许发起的连接请求的个数
ThreadsPerChild 25 #每个子进程生成的线程数
MaxRequestsPerChild 0 #每个子进程在声明周期内最大允许服务的最多请求个数
模块的加载方式
LoadModulemodule_name /path/to/module
如果使用相对路径,则对于ServerRoot所定义的位置而言ServerRoot为apache的家目录
LoadMoudule php5_module /usr/lib64/httpd/modules/php.so
让服务重载配置文件方能生效
httpd -m 列出与加载到所有DSO模块与非DOS模块
取消 注释掉即可
配置站点根目录
DocumentRoot /path/to/somewhere
页面访问属性
<Directory "/path/to/somewhere">
#Directory定义的是访问
Options 选项(下面的参数是Opeions的参数)
Indexes:缺少指定的默认页面时,允许将目录中的所有文件已列表形式返回给用户
FollowsymLinks:允许跟随符号链接所指向的原始文件
None:所有都不启用
All:所有的都启用
ExecCGI:允许使用mod_cgi模块执行CGI脚本
Includes:允许使用mod_include模块实现服务器端包含(SSI)
IncludesNOEXEC:允许包含但不允许执行脚本
MultiViews:允许使用mod_negotiation实现内容协商
SymLinksIfOwnerMatch:在链接文件属主属组与原始文件的属主属组相同时,允许跟随符号连接所指向的原始文件
AllowOverride
</Direcotry>
使用正则表达式
主机的访问控制
注意现在配置为apache2.4,和apache2.2或者之前版本不同
<Direcotry "/path/to/somewhere">
Options
配置日志功能
/var/log/http/
access.log:访问日志,其需要记录的内容需要自定义
error.log
访问日志:
CustomLog "/path/to/log_file" LogFormat
LogFormat定义日志格式
"%h %l %u %t \"%r\" %>s %b \"%{Referer}i\"\"%{User-Agent}i\""
%h:客户端地址
%l:远程的登录名,通常为-
%u:认证时的远程用户名,通常为-
%t:接收到的请求时的时间,为标准英文格式时间+时区
\" :转义,显示""
%r:请求报文的起始行
%>s:响应状态码,
%b:以字节响应报文的长度,不包含http报文
%{Header_Name}i:记录指定请求报文首部的内容(value)
%u:请求的URL
详情请参考:http://httpd.apache.org/docs/2.2/mod/mod_log_config.html#formats
错误日志:
ErrorLog
路径别名
Alias /alias/ "/path/to/somewhere"
<Directory "/path/to/somewhere">
OptionsIndexes MultiViews
AllowOverride None
Require all granted
</Directory>
意味着访问http://Server_IP/alias时,其页面文件来自于/path/to/somewhere中
指定默认的字符集
定义默认主页面
指定索引文件名为index.html
<IfModule dir_module>
DirectoryIndex index.html
</IfModule>
域名配置
apache配置用户认证
# vim /usr/local/apache2/conf/httpd.conf
<Directory "/usr/local/apache2/htdocs">
Options Indexes FollowSymLinks
# vim /usr/local/apache2/htdocs/.htaccess
AuthUserFile /usr/local/apache2/htdocs/user #验证用户文件目录
require valid-user #允许user目录里全部用户访问
# htpasswd -c /usr/local/apache2/htdocs/user test
#使用htpasswd命令设置用户密码,-c为创建新文件,假如user文件存在 使用-m 参数 创建用户
apache配置虚拟主机
# vim /usr/local/apache2/conf/httpd.conf
Include conf/extra/httpd-vhosts.conf #这个参数原来是有注释的,去掉注释
配置给予域名的Vhost
# vim/usr/local/apache2/conf/extra/httpd-vhosts.conf
ServerAdmin cuith@belink.com #配置管理员邮箱
DocumentRoot"/usr/local/apache2/docs/YNET " #配置VHOST页面存放目录
ServerName www.ynet.com #配置合格域名
ErrorLog"logs/dummy-host.example.com-error_log" #配置错误日志
CustomLog"logs/dummy-host.example.com-access_log" common #定义访问日志
<Directory “/usr/local/apache2/docs/YNET”>
给予端口的VHOST
# vim/usr/local/apache2/conf/extra/httpd-vhosts.conf
<VirtualHost *:8080>
ServerAdmin cuith@belink.com #配置管理员邮箱
DocumentRoot "/usr/local/apache2/docs/YNET " #配置VHOST页面存放目录
ErrorLog"logs/dummy-host.example.com-error_log" #配置错误日志
CustomLog"logs/dummy-host.example.com-access_log" common #定义访问日志
</VirtualHost>
<Directory “/usr/local/apache2/docs/YNET”>
Options Indexes
AllowOverride None
Require all granted
</Directory>
apache Rewrite重写配置
域名跳转
# vim conf/httpd.conf #查看是否添加rewrite模块
LoadModule rewrite_module modules/mod_rewrite.so
# vim/usr/local/apache2/conf/extra/httpd-vhosts.conf
<Directory “/usr/local/apache2/docs/YNET”>
Options IndexesFollowSymLinks
AllowOverride All
Require all granted
</Directory>
配置跳转文件
# vim /usr/local/apache2/docs/YNET/.htaccess
RewriteCond %{HTTP_HOST}www.ynet.com
#假如用户请求到这个主机上的www.ynet.com的vhost主机,就会跳转到www.baidu.com的域名
RewriteRule .* http://www.baidu.com
给予文件跳转
# vim /usr/local/apache2/conf/httpd.conf
<Directory "/usr/local/apache2/htdocs">
Options IndexesFollowSymLinks
AllowOverride All
Require allgranted
</Directory>
配置跳转文件
# vim /usr/local/apache2/htdocs/.htaccess
RewriteEngine on
RewriteRule index.html index_test.html #假如url匹配到index.html文件就跳到到index_test.html这个文件
apache状态页面配置
# vim /usr/local/apache2/conf/httpd.conf
# /usr/local/apache2/bin/apachectl graceful #平滑重启
在浏览器上访问http://192.168.1.1/server-status 主机IP+server-status这样的url
apache压缩传输配置
减少文件大小有两个明显的好处,一是可以减少存储空间,二是通过网络传输文件时,可以减少传输的时间。gzip 是在 Linux 系统中经常使用的一个对文件进行压缩和解压缩的命令,既方便又好用。
1. Web服务器接收到浏览器的HTTP请求后,检查浏览器是否支持HTTP压缩(Accept-Encoding 信息);
2. 如果浏览器支持HTTP压缩,Web服务器检查请求文件的后缀名;
3. 如果请求文件是HTML、CSS等静态文件,Web服务器到压缩缓冲目录中检查是否已经存在请求文件的最新压缩文件;
4. 如果请求文件的压缩文件不存在,Web服务器向浏览器返回未压缩的请求文件,并在压缩缓冲目录中存放请求文件的压缩文件;
5. 如果请求文件的最新压缩文件已经存在,则直接返回请求文件的压缩文件;
6. 如果请求文件是动态文件,Web服务器动态压缩内容并返回浏览器,压缩内容不存放到压缩缓存目录中。
网上许多开启GZIP的方法,但是研究了许多才成功了,在这里记录下面
去掉#LoadModule headers_module modules/mod_headers.so 前面的注释#
去掉#LoadModule deflate_module modules/mod_deflate.so 前面的注释#
去掉#LoadModule filter_module modules/mod_filter.so 前面的注释#
DeflateCompressionLevel 6
SetOutputFilter DEFLATE
#这段是告诉apache对php类型的文件进行压缩
BrowserMatch ^Mozilla/4 gzip-only-text/html
# Netscape 4.x 有一些问题,所以只压缩文件类型是text/html的
BrowserMatch ^Mozilla/4.0[678] no-gzip
# Netscape 4.06-4.08 有更多的问题,所以不开启压缩
BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
# IE浏览器会伪装成Netscape,但是事实上它没有问题
apache缓存配置
让浏览器缓存CSS、JS、图片、静态文件等是很重要的事情,这样可以减轻服务器的压力,省的浏览器经常要去服务端下载这些静态文件。下面看看配置方法吧。
1.开启apache扩展模块mod_expires.so,在apache的配置文件中加入下面一行代码。
LoadModule expires_module modules/mod_expires.so
ExpiresByType text/css A7200000
ExpiresByType application/x-javascript A7200000
ByTypeapplication/javascript A7200000
ExpiresByType text/html A7200000
ExpiresByType image/jpeg A7200000
ExpiresByType image/gif A7200000
ExpiresByType image/png A7200000
ExpiresByType image/x-icon A7200000
apache 代理配置
apache 正向代理
# vim /usr/local/apache2/conf/httpd.conf
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_connect_modulemodules/mod_proxy_connect.so
LoadModule proxy_ftp_modulemodules/mod_proxy_ftp.so
LoadModule proxy_http_module modules/mod_proxy_http.so
# /usr/local/apache2/bin/apachectl graceful
# /usr/local/apache2/bin/httpd -M | grep proxy
# vim /usr/local/apache2/conf/httpd.conf
# /usr/local/apache2/bin/apachectl graceful
apache 反向代理
# /usr/local/apache2/bin/apachectl graceful
# /usr/local/apache2/bin/httpd -M | grep proxy
# vim /usr/local/apache2/conf/httpd.conf
ProxyPass / https://www.google.com
ProxyPassReverse / https://www.google.com
# /usr/local/apache2/bin/apachectl graceful
◇ min:连接池的最小容量,此值与实际连接个数无关,仅表示连接池最小要初始化的空间大小。
◇ max:连接池的最大容量,每个MPM都有自己独立的容量;都值与MPM本身有关,如Prefork的总是为1,而其它的则取决于ThreadsPerChild指令的值。
◇ loadfactor:用于负载均衡集群配置中,定义对应后端服务器的权重,取值范围为1-100。
◇ retry:当apache将请求发送至后端服务器得到错误响应时等待多长时间以后再重试。单位是秒钟。
apache 负载均衡
负载均衡为:就是apache服务器后端有N个提供服务的服务器,假如连接数很多,apache服务器就会轮训(可以自己定义算法)的把请求分散到后端服务器去获取信息
# /usr/local/apache2/bin/apachectl graceful
# /usr/local/apache2/bin/httpd -M | grep proxy
# vim /usr/local/apache2/conf/httpd.conf
BalancerMember http://172.16.100.1:8080 loadfactor=10 route=TomcatA
BalancerMember http://172.16.100.2:8080 loadfactor=10 route=TomcatB
ProxyPass / balancer://lbcluster1/ stickysession=JSESSIONID
ProxyPassReverse / balancer://lbcluster1/
# /usr/local/apache2/bin/apachectl graceful
Proxy指定是以balancer://开头,即用于负载均衡集群时,其还可以接受一些特殊的参数,如下所示:
◇ maxattempts:放弃请求之前实现故障转移的次数,默认为1,其最大值不应该大于总的节点数。
◇ nofailover:取值为On或Off,设置为On时表示后端服务器故障时,用户的session将损坏;因此,在后端服务器不支持session复制时可将其设置为On。
◇ stickysession:调度器的sticky session的名字,根据web程序语言的不同,其值为JSESSIONID或PHPSESSIONID。
安装服务命令:httpd –k uninstall
删除服务命令:sc delete Apache2.x (windows中)
Apache web服务器目录结构、发布网站相关推荐
- LAMP-架构环境网站搭建;在Apache Web服务器上部署PHPBB3网站详细步骤;Linux+Apache2+PHP+MySQL 安装和配置
在Apache Web服务器上部署PHPBB3网站 LAMP-架构环境网站搭建;在Apache Web服务器上部署PHPBB3网站详细步骤:Linux+Apache2+PHP+MySQL 安装和配置 ...
- linuxweb服务器域名网站,linux web服务器目录
linux web服务器目录 内容精选 换一换 在FusionInsight Manager软件安装及使用过程中,针对Tomcat基于开源做了如下功能增强:升级Tomcat版本为官方稳定版本.设置应用 ...
- Linux下Tomcat与Apache Web服务器的整合
原文:http://os.51cto.com/art/200709/57327.htm ◆1.引言 基于Web技术的Internet/Intranet近年来已经得到了广泛的应用,Intranet是以T ...
- http隐藏服务器相关配置信息,apache web服务器安全配置
尽管现在购买的云服务器很多都有一键web环境安装包,但是如果是自己配置web环境则需要对各种安全配置十分了解,今天我们就来尝试这做好web服务器安全配置.这里的配置不尽完善,若有纰漏之处还望指出. 修 ...
- Apache Web服务器资源使用限制配置
<?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" />以下内 ...
- 最全的 eclipse web 项目目录结构
本文会尽可能对 java web 项目的目录结构做出最详细的解释,尽量做到浅显易懂. eclipse web 项目目录结构 java web 项目事例 03-springmvc-drien-xgq 是 ...
- Apache WEB 服务器企业实战
万维网 (WORLD WIDE WEB,WWW)服务器,也称之为 WEB 服务器,主要功能 是提供网上信息浏览服务.WWW 是 Internet 的多媒体信息查询工具,是 Internet 上 飞快发 ...
- eclipse web 项目目录结构
eclipse web 项目目录结构 MyWebSite 是项目名称 Java Resources >> src 是 java 源程序,也就是 java 代码 Java Resources ...
- apache web服务器
一.安装 apache2.4.23 新版本的 httpd-2.4 新增以下特性: 新增模块: mod_proxy_fcgi(可提供 fcgi 代理) mod_ratelimit(限制用户带宽) mod ...
最新文章
- NFL原则告诉我们做决策的时候,试图找到一个能解决所有问题,“大而全”的方案是不存在的。我们应当找到最关心的问题,因地制宜做出选择。——聚焦目标,取舍有道!...
- 超日债违约引发大宗商品暴跌 伦铜大跌近9%
- phpstudy搭建网站使用php,教你用phpstudy搭建本地服务并建dedecms网站
- 第4章:分布式数据库 HBase
- Vue014_ vue 项目的打包与发布
- 基于webpack4.X从零搭建React脚手架
- 新功能又来啦!这次是「代码搜索」和视频直播!
- Silverlight中调用ClientBin下非xap内的xml的方法
- html如何转换成电子表,如何轻松将电子表格转换为HTML [快速提示] | MOS86
- layedit-jfinal后台获取
- Linux移植Windows摄像头驱动,Arm-Linux摄像头驱动程序的移植
- Android如何实现全局的护眼模式
- 【Axure教程】鼠标右键显示菜单
- python编程学习笔记(三)
- Ed2k协议背景介绍及eMule协议的整体架构
- 如何自学插画?零基础要知道的技巧!
- 腾讯音乐MOO音乐应用的Flutter内存治理实战分享
- saf java_[原创]Android Storage Access Framework(SAF)框架实现外置SD卡的写入(JAVA层与JNI层HOOK)...
- 2022-2028年中国医药零售行业市场研究及前瞻分析报告
- 【C语言数组题】字符串去重