一、Yum安装
1. Yum安装Apache
[root@localhost ~]# yum -y install httpd # 安装 [root@localhost ~]# rpm -qa | grep httpd # 查看http包 httpd-tools-2.4.6-97.el7.centos.5.x86_64 httpd-2.4.6-97.el7.centos.5.x86_64
安装成功后,会新增下面文件
/etc/httpd # http安装目录 /etc/httpd/conf/httpd.conf # http主配置文件 /var/www/html # 默认网站家目录
2. 配置文件参数简介
[root@localhost ~]# vi /etc/httpd/conf/httpd.conf AddDefaultCharset UTF-8 # 字符编码 ServerRoot "/etc/httpd" # 存放配置文件的目录 Listen 80 # 监听端口 Include conf.modules.d/*.conf # 包含模块目录的配置文件 User apache # 子进程用户 Group apache # 子进程组 ServerAdmin root@localhost # 管理员邮件地址 #ServerName www.example.com:80 # 域名主机名 DocumentRoot "/var/www/html" # 网站家目录 # 设置Document Root指定目录属性 <Directory "/var/www/html"> Options Indexes FollowSymLinks # 找不到主页时,允许以目录的形式访问,并允许链接到网站根目录以外 AllowOverride None # none,不适用htaccess控制,all允许 Require all granted # granted表示运行所有访问,denied表示拒绝所有访问 </Directory> DirectoryIndex index.html # 定义主页文件,当访问到网站目录时,如果有定义的主页文件,网站会自动访问 ErrorLog "logs/error_log" # 错误日志文件位置及文件名
3. 启动服务
[root@localhost httpd]# systemctl restart httpd [root@localhost httpd]# systemctl status httpd ● httpd.service - The Apache HTTP Server Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset: disabled) Active: active (running) since 五 2022-06-17 18:11:19 CST; 29s ago Docs: man:httpd(8) man:apachectl(8) Main PID: 100535 (httpd) Status: "Total requests: 0; Current requests/sec: 0; Current traffic: 0 B/sec" CGroup: /system.slice/httpd.service ├─100535 /usr/sbin/httpd -DFOREGROUND ├─100536 /usr/sbin/httpd -DFOREGROUND ├─100537 /usr/sbin/httpd -DFOREGROUND ├─100538 /usr/sbin/httpd -DFOREGROUND ├─100539 /usr/sbin/httpd -DFOREGROUND └─100540 /usr/sbin/httpd -DFOREGROUND
4. 设置防火墙
[root@localhost httpd]# firewall-cmd --zone=public --add-port=80/tcp --permanent success [root@localhost httpd]# firewall-cmd --reload success
5. 浏览器访问验证
二、 编译安装
1. 安装依赖
[root@localhost ~]# yum -y install gcc make zlib-devel pcre pcre-devel openssl-devel
2. 下载源码包
官网地址:Download - The Apache HTTP Server Projecthttp://httpd.apache.org/download.cgi
3. 上传安装包到服务器目录下
4. 解压
[root@localhost ~]# tar -zxvf httpd-2.4.54.tar.gz
5. 进入解压目录,编译安装,安装到/usr/local/目录下
[root@localhost httpd-2.4.54]# ./configure --prefix=/usr/local/apache && make && make install
6. 启动服务
[root@localhost apache]# ./bin/apachectl start [root@localhost apache]# ps -ef | grep apache root 125218 1 0 07:21 ? 00:00:00 /usr/local/apache/bin/httpd -k start daemon 125219 125218 0 07:21 ? 00:00:00 /usr/local/apache/bin/httpd -k start daemon 125220 125218 0 07:21 ? 00:00:00 /usr/local/apache/bin/httpd -k start daemon 125221 125218 0 07:21 ? 00:00:00 /usr/local/apache/bin/httpd -k start
7. 常用命令
[root@localhost ~]# /usr/local/apache/bin/apachectl -M # 查看常见的模块(静态和动态) [root@localhost ~]# /usr/local/apache/bin/apachectl -l # 查看加载的静态模块 [root@localhost ~]# /usr/local/apache/bin/apachectl -t # 检查配置文件是否有错误 [root@localhost ~]# /usr/local/apache/bin/apachectl graceful # 加载配置文件但不重启 [root@localhost ~]# /usr/local/apache/bin/apachectl restart|start|stop # 重启|启动|停止服务
三、 配置用户认证
1. 修改配置文件httpd-vhosts.conf,增加如下代码
[root@localhost apache]# vi conf/extra/httpd-vhosts.conf <VirtualHost *:80> DocumentRoot "/var/www/html/test" <Directory /var/www/html/test> AllowOverride AuthConfig AuthName "final" AuthType Basic AuthUserFile /var/www/html/test/.htpasswd # 指定存放用户名和密码的文件 require valid-user <Directory> <VirtualHost>
2. 修改配置文件httpd.conf
# 修改前 # Include conf/extra/httpd-vhosts.conf # 修改后 Include conf/extra/httpd-vhosts.conf
3. 制作软连接
[root@localhost bin]# ln -s /usr/local/apache/bin/htpasswd /usr/local/bin/htpasswd
4. 创建目录
[root@localhost bin]# mkdir -p /var/www/html/test
5. 生成密码文件
[root@localhost test]# htpasswd -c /var/www/html/test/.htpasswd final # 指定用户名为final New password: Re-type new password: Adding password for user final
6. 重启服务
7. 验证
在浏览器中输入http://localhost/虚拟目录
四、配置默认虚拟主机
1. 修改主配置文件httpd.conf
[root@localhost ~]# vi /usr/local/apache/conf/httpd.conf <Directory /> AllowOverride none Require all denined # 修改为granted </Directory> Include conf/extra/httpd-vhosts.conf # 取消注释
2. 修改虚拟配置文件httpd-vhosts.conf
[root@localhost ~]# vi /usr/local/apache/conf/extra/httpd-vhosts.conf # 删除原先配置,增加如下代码 <VirtualHost *:80> DocumentRoot "/var/www/html/test/" # 可以没有目录 ServerName www.test.com </VirtualHost> <VirtualHost *:80> DocumentRoot "/var/www/html/ceshi/" ServerName www.ceshi.com </VirtualHost>
五、 配置静态缓存
对于图片、css、html、JavaScript,允许客户端进行缓存,访问时无需和服务端进行通信,提高用户体验。使用前需要确认是否支持mod_expires.c模块。
[final@www ~]$ vi /usr/local/apache/conf/extra/httpd-vhosts.conf <IfModule mod_expires.c> ExpiresActive on # 启用模块 ExpiresByType image/gif "access plus 1 days" # 指定类型缓存时间 ExpiresByType image/jpeg "access plus 24 hours" ExpiresByType image/png "access plus 24 hours" ExpiresByType text/css "now plus 2 hours" ExpiresByType application/x-javascript "now plus 2 hours" ExpiresByType application/x-shockwave "now plus 2 hours" ExpiresByType "now plus 0 min" </IfModule>
六、 配置防盗链
防止其它网站大量使用自己网站内的一些图片,使用过多的流量,造成带宽的浪费。
[final@www ~]$ vi /usr/local/apache/conf/extra/httpd-vhosts.conf SetEnvIfNoCase Referer "^http://.*\.test\.com" local_ref # 给网址做标注 <filesmatch "\.(txt|png|gif|mp3|zip|rar|jpg|css|js)"> # 指定文件类型 Order Allow,Deny # 禁止引用,先允许后拒绝,默认拒绝所有;Order Deny,Allow,先拒绝后允许,默认允许所有 Allow from env=local_ref # 允许local_ref引用 </filesmatch>
注:Order Allow,Deny禁止引用,先允许后拒绝,默认拒绝所有;Order Deny,Allow,先拒绝后允许,默认允许所有
七、 访问控制
[final@www ~]$ vi /usr/local/apache/conf/extra/httpd-vhosts.conf # 针对某些目录进行访问控制,禁止指定IP访问 <Directory "/data/www"> AllowOverride None Options None Order allow,deny Allow from all deny from 192.168.201.1 # 该IP地址为禁止访问IP地址 </Directory> # 针对URI做访问限制,所有URI中包含admin的都进行访问限制 <filesmatch "(.*)admin(.*)"> Order allow,deny Allow from all Deny from 192.168.206.1/24 </filesmatch>
- 海报