一、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>

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐