7.1 Apache概述 Apache基金会的开源项目,是一个高性能、功能强大、安全可靠、灵活的开放源码web服务软件; 应用场景: 1、运行静态页面和图片; 2、结合PHP引擎运行PHP程序;, 3、结合Tomcat运行JAVA\JSP程序; 4、做代理、负载平衡;
7.2 安装Apache 7.2.1 安装环境准备 7.2.2 Apache的安装过程 [mhr@server-web ~]$ yum install httpd -y #yum方式安装apache。
7.2.3 启动Apache [mhr@server-web ~]$ systemctl start httpd [mhr@server-web ~]$ systemctl enable httpd 7.2.4 检查apache进程与端口 [mhr@server-web ~]$ ps -ef|grep apache
7.3 目录结构与配置文件 7.3.1 目录组成 yum安装的Apache,目录结构如下: 文件目录在 /etc/httpd/下面。包括配置文件、模块文件、日志文件。 默认站点文件位置 :/var/www 启动文件:/usr/sbin/httpd 7.3.2 主配置文件 /etc/httpd/conf 重要行注解: ServerRoot "/etc/httpd" #apache根目录,只允许root用户访问,默认不做修改。 Listen 80 #默认监听端口。 Include conf.modules.d/*.conf #指明加载模块,加载conf.modules.d/下面的所有.conf文件 User apache #apache的用户 Group apache #用户组 ServerAdmin root@localhost #管理员邮箱 DocumentRoot "/var/www/html" #提供服务的根目录
<IfModule dir_module> DirectoryIndex index.html </IfModule> #Apache默认索引页面
<Files ".ht*"> Require all denied </Files> #作用是对文件进行过滤,并授权,即同级目录下的.ht*结尾的文件是不会被浏览器访问的
ErrorLog "logs/error_log" #错误日志记录
LogLevel warn #错误日志的级别,一般包含这么几种:debug, info, notice, warn, error, crit,alert, emerg.
7.3.3 主配置文件 1、Apache的日志格式 日志格式,一般在/etc/httpd/conf里面配置; 配置行:LogFormat "%h %l %u %t " %r" %>s %b common CustomLog logs/access_log common 2、日志切割 切割日志,可以使用脚本,也可以使用系统命令。 使用系统的rotatelogs命令来进行日志切割是最快捷的方式。 配置也比较简单,只需对Apache的主配置文件httpd.conf进行如下编辑,重新服务即可生效。 #----------------------------------------------------------------------------- #ErrorLog logs/error_log ErrorLog "|/etc/httpd/log/error_log-%Y%m%d 86400 480" #指定日志文件的存放目录和文件名,以86400(一天)为间隔分割日志。480为分区时差。 #CustomLog logs/access_log combined CustomLog "|/etc/httpd/log/error_log-%Y%m%d 86400 480" common #------------------------------------------------------------------------------
7.4 配置Apache虚拟主机 apache虚拟主机实现的三种方法(基于apache2.4.6版本,yum安装方法): 1、基于不同IP的主机; 2、基于不同域名的主机; 3、基于不同端口的主机; 检查配置命令:httpd -t
1、基于不同IP的主机 (1)给主机增加IP(临时) [mhr@server-web ~]$ ifconfig ens33:1 192.168.31.201 #增加IP。 [mhr@server-web ~]$ ifconfig ens33:2 192.168.31.202 #增加IP。 给主机增加IP(永久) [mhr@server-web ~]$ vim ifcfg-ens33 #修改网卡配置文件。 IPADDR0=192.168.0.105 IPADDR1=192.168.0.106 IPADDR2=192.168.0.107 PREFIX0=24 #注意是PREFIX0,以下同理 GATEWAY0=192.168.0.1 DNS1=192.168.0.1 (2)创建网站文件 [mhr@server-web ~]$ mkdir /var/www/html/site1 #增加站点目录1。 [mhr@server-web ~]$ mkdir /var/www/html/site2 #增加站点目录2。 [mhr@server-web ~]$ mkdir /var/www/html/site3 #增加站点目录3。 [mhr@server-web html]$ echo www.site1.com > site1/index.html #增加站点1首页。 [mhr@server-web html]$ echo www.site2.com > site2/index.html #增加站点2首页。 [mhr@server-web html]$ echo www.site3.com > site3/index.html #增加站点3首页。 (3)修改/etc/httpd/httpd.conf配置文件 去掉第56行 “Include conf.modules.d/.conf” 前面的#; 去掉第95行的#ServerName www.XXX.com:80 前面的#; (4)创建/etc/httpd/conf.d/vhost.conf配置文件 <VirtualHost 192.168.31.200:80> ServerName www.site1.com DocumentRoot "/var/www/html/site1" <Directory "/var/www/html/site1"> AllowOverride None Require all granted </Directory> ErrorLog logs/www.site1.com-error_log CustomLog logs/www.site1.com-access_log common </VirtualHost> <VirtualHost 192.168.31.201:80> ServerName www.site1.com DocumentRoot "/var/www/html/site2" <Directory "/var/www/html/site2"> AllowOverride None Require all granted </Directory> ErrorLog logs/www.site2.com-error_log CustomLog logs/www.site2.com-access_log common </VirtualHost> <VirtualHost 192.168.31.202:80> ServerName www.site3.com DocumentRoot "/var/www/html/site3" <Directory "/var/www/html/site3"> AllowOverride None Require all granted </Directory> ErrorLog logs/www.site3.com-error_log CustomLog logs/www.site3.com-access_log common </VirtualHost>
7.5 Apache优化配置 7.5.1 修改默认用户和组 apache虚拟主机实现的三种方法(基于apache2.4.6版本,默认用户已经为apacha): apache2.4.6默认用户和组已经变更为apche,老版本用户为deamon,不安全可以用以下命令来替换配置文件: [mhr@server-web ~]$ sed -i "s#User deamon#User apache#g" httpd.conf #替换用户 [mhr@server-web ~]$ sed -i "s#Group deamon#Group apache#g" httpd.conf [mhr@server-web ~]$ egrep "User|Group" httpd.conf |head -3 #查看符合条件的三行。 7.5.2 优化错误页面显示内容 [mhr@server-web ~]$ grep "Error" httpd.conf #查看配置文件的错误页面配置。可以修改404/402/500等错误页面。 7.5.3 配置日志轮询 apache自带轮询服务,但建议使用cronlog日志轮询工具。 Awstats :旧日志不能够进行追加的分析,日志大于G时速度非常慢。 Analog :小巧、快速、安装方便、分析速度快,1G日志几乎瞬间完成。 7.5.4 优化站点目录权限 默认的站点目录权限是755,文件权限是644,这是系统设置的比较安全的权限,一般情况下不用修改。如果要锁定某个文件或目录的权限,可以根据实际情况来修改单个文件或目录的权限。 对于站点的目录浏览权限,在配置时需要将其关闭,方法有三、操作如下: 1、全局关闭目录浏览权限: httpd.conf全局配置文件中, 找到:Option Indexes FollowSymLinks 改为:Option -Indexes FollowSymLinks 注:+表示允许浏览,-表示不允许 2、虚拟主机关闭目录浏览权限: /etc/httpd/conf.d/vhosts.conf <Directory "/var/www/html/site3"> Options FollowSymLinks #去掉原有的 Indexes AllowOverride None Require all granted </Directory> 3、根目录的 .htaccess 文件中输入 <Files *> Options -Indexes </Files> 就可以阻止Apache 将目录结构列表出来。 7.5.5 开启apache防盗链 1、配置防盗链先编辑主机配置文件: [mhr@server-web ~]$ vim /etc/httpd/conf.d/vhost.conf <VirtualHost *:80> ServerAdmin webmaster@dummy-host.example.com DocumentRoot “/usr/local/apache2.4/docs/www.111.com” ServerName www.111.com ServerAlias 111.com <Directory /usr/local/apache2.4/docs/www.111.com> SetEnvIfNoCase Referer “http://www.111.com” local_ref SetEnvIfNoCase Referer “http://111.com” local_ref SetEnvIfNoCase Referer “^$” local_ref <filesmatch “.(txt|doc|mp3|zip|rar|jpg|gif)”> Order Allow,Deny Allow from env=local_ref < /filesmatch> < /Directory> ErrorLog “logs/111.com-error_log” CustomLog “logs/111.com-access_log” combined < /VirtualHost> //首先定义允许访问链接的referer,其中^$为空referer, //当直接在浏览器里输入图片地址去访问它时,它的referer就为空。
#/usr/local/apache2.4/bin/apachectl -t #测试配置文件 Syntax OK #/usr/local/apache2.4/bin/apachectl graceful