学习用途
httpd为Apache HTTP服务器程序。直接执行程序可启动服务器的服务。
语法
httpd [-hlLStvVX][-c<httpd指令>][-C<httpd指令>][-d<服务器根目录>][-D<设定文件参数>][-f<设定文件>]
参数说明:
- -c<httpd指令> 在读取配置文件前,先执行选项中的指令。
- -C<httpd指令> 在读取配置文件后,再执行选项中的指令。
- -d<服务器根目录> 指定服务器的根目录。
- -D<设定文件参数> 指定要传入配置文件的参数。
- -f<设定文件> 指定配置文件。
- -h 显示帮助。
- -l 显示服务器编译时所包含的模块。
- -L 显示httpd指令的说明。
- -S 显示配置文件中的设定。
- -t 测试配置文件的语法是否正确。
- -v 显示版本信息。
- -V 显示版本信息以及建立环境。
- -X 以单一程序的方式来启动服务器。
<http://www.runoob.com/linux/linux-comm-httpd.html>
[root@docker1 ~] httpd -h Usage: httpd [-D name] [-d directory] [-f file] [-C "directive"] [-c "directive"] [-k start|restart|graceful|graceful-stop|stop] [-v] [-V] [-h] [-l] [-L] [-t] [-T] [-S] [-X] Options: -D name : define a name for use in <IfDefine name> directives -d directory : specify an alternate initial ServerRoot -f file : specify an alternate ServerConfigFile -C "directive" : process directive before reading config files -c "directive" : process directive after reading config files -e level : show startup errors of level (see LogLevel) -E file : log startup errors to file -v : show version number -V : show compile settings -h : list available command line options (this page) -l : list compiled in modules -L : list available configuration directives -t -D DUMP_VHOSTS : show parsed vhost settings -t -D DUMP_RUN_CFG : show parsed run settings -S : a synonym for -t -D DUMP_VHOSTS -D DUMP_RUN_CFG -t -D DUMP_MODULES : show all loaded modules -M : a synonym for -t -D DUMP_MODULES -t : run syntax check for config files -T : start without DocumentRoot(s) check -X : debug mode (only one worker, do not detach)
yum 安装(后续会有编译安装)
# 初次安装httpd yum install -y httpd # 查看安装的版本 httpd -v # 查看编译的模块 httpd -l # 查看httpd指令说明 httpd -L>1.log |tail -n 20 1.log # 二进制文件路径 which httpd # 查看httpd 的运行状态 systemctl status httpd.service # 添加到开机启动 chkconfig --lever 35 on # 启动httpd systemctl enable httpd.service
# 查看默认端口占用情况 netstat -lntcp |grep 80
#检查是否能正常访问80端口
curl http://127.0.0.1:80 > /dev/null
配置文件和相关信息路径:
注:本文只是简单的展示了基本的配置和查看命令。
# /etc/httpd 目录树结构 [root@docker1 httpd]# tree . ├── conf │ ├── httpd.conf │ └── magic ├── conf.d │ ├── autoindex.conf │ ├── README │ ├── userdir.conf │ └── welcome.conf ├── conf.modules.d │ ├── 00-base.conf │ ├── 00-dav.conf │ ├── 00-lua.conf │ ├── 00-mpm.conf │ ├── 00-proxy.conf │ ├── 00-systemd.conf │ └── 01-cgi.conf ├── logs -> ../../var/log/httpd ├── modules -> ../../usr/lib64/httpd/modules └── run -> /run/httpd
或者通过 httpd –V 查看已配置项
[root@docker1 conf]# httpd -V AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using 192.168.136.140. Set the 'ServerName' directive globally to suppress this message Server version: Apache/2.4.6 (CentOS) Server built: Nov 14 2016 18:04:44 Server's Module Magic Number: 20120211:24 Server loaded: APR 1.4.8, APR-UTIL 1.5.2 Compiled using: APR 1.4.8, APR-UTIL 1.5.2 Architecture: 64-bit Server MPM: prefork threaded: no forked: yes (variable process count) Server compiled with.... -D APR_HAS_SENDFILE -D APR_HAS_MMAP -D APR_HAVE_IPV6 (IPv4-mapped addresses enabled) -D APR_USE_SYSVSEM_SERIALIZE -D APR_USE_PTHREAD_SERIALIZE -D SINGLE_LISTEN_UNSERIALIZED_ACCEPT -D APR_HAS_OTHER_CHILD -D AP_HAVE_RELIABLE_PIPED_LOGS -D DYNAMIC_MODULE_LIMIT=256 -D HTTPD_ROOT="/etc/httpd" -D SUEXEC_BIN="/usr/sbin/suexec" -D DEFAULT_PIDLOG="/run/httpd/httpd.pid" -D DEFAULT_SCOREBOARD="logs/apache_runtime_status" -D DEFAULT_ERRORLOG="logs/error_log" -D AP_TYPES_CONFIG_FILE="conf/mime.types" -D SERVER_CONFIG_FILE="conf/httpd.conf"
httpd.conf 主配置文件
目录:/etc/httpd/conf/httpd.conf
# 输出默认配置 egrep -v "[#|$]" /etc/httpd/conf/httpd.conf
进一步通过sed命令处理,查找出监听的端口
egrep -v "[#|$]" /etc/httpd/conf/httpd.conf|sed -n '/Listen/p'
打印默认配置文件的具体参数
默认端口:80
默认用户:apache 组:apache
默认根目录:/var/www/html
# 或者使用 nl 添加行号 egrep -v
"
[#|$]
" /etc/httpd/conf/httpd.conf|
sed -n
'
/ /p
' | nl
[root@docker1 conf]# egrep -v "[#|$]" /etc/httpd/conf/httpd.conf|sed -n '/ /p' ServerRoot "/etc/httpd" Listen 80 Include conf.modules.d/*.conf User apache Group apache ServerAdmin root@localhost <Directory /> AllowOverride none Require all denied DocumentRoot "/var/www/html" <Directory "/var/www"> AllowOverride None Require all granted <Directory "/var/www/html"> Options Indexes FollowSymLinks AllowOverride None Require all granted <IfModule dir_module> DirectoryIndex index.html <Files ".ht*"> Require all denied ErrorLog "logs/error_log" LogLevel warn <IfModule log_config_module> LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined LogFormat "%h %l %u %t \"%r\" %>s %b" common <IfModule logio_module> LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio </IfModule> CustomLog "logs/access_log" combined <IfModule alias_module> ScriptAlias /cgi-bin/ "/var/www/cgi-bin/" <Directory "/var/www/cgi-bin"> AllowOverride None Options None Require all granted <IfModule mime_module> TypesConfig /etc/mime.types AddType application/x-compress .Z AddType application/x-gzip .gz .tgz AddType text/html .shtml AddOutputFilter INCLUDES .shtml AddDefaultCharset UTF-8 <IfModule mime_magic_module> MIMEMagicFile conf/magic EnableSendfile on IncludeOptional conf.d/*.conf
查看是用户已自动创建
[root@docker1 httpd]# cat /etc/passwd |sed -n '/apache/p' apache:x:48:48:Apache:/usr/share/httpd:/sbin/nologin
autoindex.conf 自动索引配置
[root@docker1 httpd]# egrep -v ^"[#|$]" /conf.d/autoindex.conf IndexOptions FancyIndexing HTMLTable VersionSort Alias /icons/ "/usr/share/httpd/icons/" <Directory "/usr/share/httpd/icons"> Options Indexes MultiViews FollowSymlinks AllowOverride None Require all granted </Directory> AddIconByEncoding (CMP,/icons/compressed.gif) x-compress x-gzip AddIconByType (TXT,/icons/text.gif) text/* AddIconByType (IMG,/icons/image2.gif) image/* AddIconByType (SND,/icons/sound2.gif) audio/* AddIconByType (VID,/icons/movie.gif) video/* AddIcon /icons/binary.gif .bin .exe AddIcon /icons/binhex.gif .hqx AddIcon /icons/tar.gif .tar AddIcon /icons/world2.gif .wrl .wrl.gz .vrml .vrm .iv AddIcon /icons/compressed.gif .Z .z .tgz .gz .zip AddIcon /icons/a.gif .ps .ai .eps AddIcon /icons/layout.gif .html .shtml .htm .pdf AddIcon /icons/text.gif .txt AddIcon /icons/c.gif .c AddIcon /icons/p.gif .pl .py AddIcon /icons/f.gif .for AddIcon /icons/dvi.gif .dvi AddIcon /icons/uuencoded.gif .uu AddIcon /icons/script.gif .conf .sh .shar .csh .ksh .tcl AddIcon /icons/tex.gif .tex AddIcon /icons/bomb.gif /core AddIcon /icons/bomb.gif */core.* AddIcon /icons/back.gif .. AddIcon /icons/hand.right.gif README AddIcon /icons/folder.gif ^^DIRECTORY^^ AddIcon /icons/blank.gif ^^BLANKICON^^ DefaultIcon /icons/unknown.gif ReadmeName README.html HeaderName HEADER.html IndexIgnore .??* *~ *# HEADER* README* RCS CVS *,v *,t
userdir.conf
welcome.conf 配置默认页面
首页配置文件/etc/httpd/conf.d/welcome.conf
# 备份配置文件
cp welcome.conf welcome.conf.bak
vim welcome.conf
# 这里指定了目录 /usr/share/httpd/noindex
cd /usr/share/httpd/noindex
# 指定显示2层结构树
[root@docker1 noindex]# tree -L 2 . ├── css │ ├── bootstrap.min.css │ ├── bootstrap-theme.min.css │ ├── fonts │ └── open-sans.css ├── images │ ├── apache_pb.gif │ └── poweredby.png └── index.html
修改默认页面为自定义页面
查看日志文件
# 默认日志路径 /var/log/httpd # 带占用空间大小的日志结构树输出 [root@docker1 httpd]# tree -C --du -h . ├── [ 26K] access_log └── [4.2K] error_log 30K used in 0 directories, 2 files
检查日志
[root@docker1 httpd]# tail -n 3 /var/log/httpd/* ==> /var/log/httpd/access_log <== 192.168.136.1 - - [13/Dec/2016:17:23:24 +0800] "GET /noindex/css/fonts/SemiboldItalic/OpenSans-SemiboldItalic.ttf HTTP/1.1" 404 258 "http://192.168.136.140/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.79 Safari/537.36 Edge/14.14393" 192.168.136.1 - - [13/Dec/2016:17:23:24 +0800] "GET /noindex/css/fonts/Bold/OpenSans-Bold.ttf HTTP/1.1" 404 238 "http://192.168.136.140/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.79 Safari/537.36 Edge/14.14393" ::1 - - [13/Dec/2016:17:23:30 +0800] "OPTIONS * HTTP/1.0" 200 - "-" "Apache/2.4.6 (CentOS) (internal dummy connection)" ==> /var/log/httpd/error_log <== [Tue Dec 13 16:23:12.122570 2016] [autoindex:error] [pid 84883] [client 192.168.136.1:60341] AH01276: Cannot serve directory /var/www/html/: No matching DirectoryIndex (index.html) found, and server-generated directory index forbidden by Options directive [Tue Dec 13 16:23:40.637128 2016] [autoindex:error] [pid 84167] [client 192.168.136.1:60357] AH01276: Cannot serve directory /var/www/html/: No matching DirectoryIndex (index.html) found, and server-generated directory index forbidden by Options directive [Tue Dec 13 17:23:24.469463 2016] [autoindex:error] [pid 84885] [client 192.168.136.1:61453] AH01276: Cannot serve directory /var/www/html/: No matching DirectoryIndex (index.html) found, and server-generated directory index forbidden by Options directive
传送门
Apache HTTP 服务器 2.4 文档 http://httpd.apache.org/docs/current/
问题:
- 是否可存在多个httpd?
- httpd配置如何合理化管理(安装、配置、变更、删除)?
- 如何在对log归档和删除?log日志文件中快速有效找到有助于web排错和优化的记录?如何基于数据分析,自动生成一定时间内的运行趋势报表?
- 如何规范web文件的存放?
- httpd和IISadmin服务有什么相同之处?
- 如何升级?
转载于:https://blog.51cto.com/bennychen/1882378