美文网首页学习资料
使用Apache部署静态网站

使用Apache部署静态网站

作者: 风风丶 | 来源:发表于2018-02-03 13:11 被阅读0次

    Apache

    Web服务程序之一,类似的还有IIS、Nginx等,用来提供Web服务

    利用curl命令获取http头:

    Screenshot from 2018-01-31 16-10-59.png Screenshot from 2018-01-31 16-14-58.png

    Apache的安装部署

    yum install httpd                             ##Apache软件
    yum install httpd-manual                      ##Apache的手册
    systemctl start httpd                         ##开启http
    systemc enable httpd                          ##设置开机自启
    注意防火墙的策略对http服务的影响:
    firewall-cmd --list-all                       ##列出防火墙信息
    firewall-cmd --permanent --add-service=http   ##永久允许http
    firewall-cmd --reload                         ##重新加载防火墙策略
    

    测试:

    http://172.25.254.111           ##查看主页
    http://172.25.254.111/manual    ##查看手册
    
    Screenshot from 2018-01-31 16-16-38.png Screenshot from 2018-01-31 16-17-17.png

    默认发布目录:
    /var/www/html

    默认发布文件:
    /var/www/html/index.html ##需自行建立

    Apache的基础信息

    主配置目录:  /etc/httpd/conf
    主配置文件:    /etc/httpd/conf/httpd.conf
    子配置目录:    /etc/httpd/conf.d
    子配置文件:    /etc/httpd/conf.d/\*.conf
    默认发布目录:    /var/www/html
    默认发布文件:     /var/www/html/index.html
    默认端口:   80
    默认安全上下文:    http_sys_content_t
    程序开启默认用户:   apache
    Apache日志:   /etc/httpd/logs/\*
    访问日志:  /var/log/httpd/access_log
    错误日志:  /var/log/httpd/error_log
    

    修改配置及相关设置:

    主配置文件中,没有<>标签的是全局配置,有<>标签的是区域配置。

    常用参数及用途描述:

    ServerRoot        服务目录
    ServerAdmin       管理员邮箱
    User              运行服务的用户
    Group             运行服务的用户组
    ServerName        网站服务器的域名
    DocumentRoot      网站数据目录
    Listen            监听的IP地址与端口号
    DirectoryIndex    默认的索引页页面
    ErrorLog          错误日志文件
    CustomLog         访问日志文件
    Timeout           网页超时时间,默认为300秒
    

    修改默认发布文件:

    将DirectoryIndex改为想改成的默认发布文件,可以多个文件,以空格隔开,当第一个被删除后会默认访问第二个作为主页

    Screenshot from 2018-01-31 16-46-14.png Screenshot from 2018-01-31 16-43-30.png

    设置完主页之后重启httpd服务就可以看到默认页面变成了hahaha页面:

    Screenshot from 2018-01-31 16-54-14.png

    当把/var/www/html/hahaha删除,Apache就会自动寻找下一个可用的主页:

    Screenshot from 2018-01-31 16-45-54.png

    修改默认发布目录:

    DocumentRoot "/hahaha/html"
    <Directory "/hahaha">
        Require all granted
    </Directory>
    

    如果selinux开启,需要做以下设置:

    semanage fcontext -a -t http_sys_content_t '/hahaha(/.*)?'
    restorecon -RvvF /hahaha/
    
    Screenshot from 2018-01-31 17-06-56.png Screenshot from 2018-01-31 17-07-36.png

    修改默认发布端口:

    ss -antuple | grep httpd可以看到默认发布端口为80:

    Screenshot from 2018-01-31 17-10-53.png

    在配置文件中找到Listen,后面改为想要的端口:

    Screenshot from 2018-01-31 17-11-52.png

    修改防火墙过滤规则:

    firewall-cmd --permanent --add-port=8080/tcp
    firewall-cmd --reload
    
    Screenshot from 2018-01-31 17-13-50.png

    此时可以正常访问:

    Screenshot from 2018-01-31 17-14-43.png

    如果没有修改防火墙,可能会出现403

    Apache内部的访问控制

    1.针对于主机的访问控制(例):

    <Directory "/var/www/html/test">
        Order deny,allow    ##列表读取顺序,后读取的列表会覆盖前面的列表
        Allow from 172.25.254.xxx
        Deny from all
    <Diretory>
    
    Screenshot from 2018-02-03 09-41-43.png Screenshot from 2018-02-03 09-43-11.png

    2.用户方式的访问控制(例):

    htpasswd -cm /etc/httpd/webuser admin   ##创建用户并添加密码
    

    如果已经存在用户密码文件,那么增加用户时不用加-c参数:

    htpasswd -m /etc/httpd/webuser admin1
    

    vim /etc/httpd/conf/httpd.conf:

    <Directory "/var/www/html/admin">
        AuthUserfile /etc/httpd/webuser
        AuthName "Please input your name and passwd"
        AuthType basic
        #Require user admin ##只允许admin用户
        Require valid-user  ##允许名单中的用户
    </Directory>
    
    Screenshot from 2018-02-03 09-54-38.png

    如果如下设置:

    Screenshot from 2018-02-03 10-02-45.png

    111这台主机访问时没有认证流程,直接会被拒绝访问,而其他主机需要认证成功才可访问:

    Screenshot from 2018-02-03 10-06-34.png

    由上图可以看出,针对主机的访问控制和针对用户的访问控制如果同时存在,是先按照主机的访控策略,再走用户认证流程

    Apache的虚拟主机

    为了在一台主机上部署多个网站,可以用Apache的虚拟主机功能。在vps(Virtual Private Server)没出来之前,用的都是虚拟主机,但是虚拟主机不能隔离硬件资源。

    步骤:

    服务器上建立多个文件夹用于存放不同的子网站文件:
    mkdir /var/www/html/music/html -p
    mkdir /var/www/html/news/html -p

    再在每个其中建立index.html文件

    Screenshot from 2018-02-03 10-49-28.png

    然后再在/etc/httpd/conf.d/下建立各个子网站的配置文件:

    以music.hahaha.com为例:

    vim music.conf:

    <VirtualHost *:80>
        ServerName music.hahaha.com
        DocumentRoot /var/www/html/music/html
        CustomLog logs/music.log combined
    </VirtualHost>
    <Directory "/var/www/html/music/html">
        Require all granted
    </Directory>
    
    Screenshot from 2018-02-03 10-51-41.png

    如果需要启用不同ip对应不同虚拟主机,可以参考《Linux就该这么学》里面的配置:

    <VirtualHost 192.168.10.10>
        DocumentRoot /home/wwwroot/10
        ServerName www.linuxprobe.com
    <Directory /home/wwwroot/10 >
        AllowOverride None
        Require all granted
    </Directory>
    </VirtualHost>
    <VirtualHost 192.168.10.20>
        DocumentRoot /home/wwwroot/20
        ServerName bbs.linuxprobe.com
    <Directory /home/wwwroot/20 >
        AllowOverride None
        Require all granted
    </Directory>
    </VirtualHost>
    <VirtualHost 192.168.10.30>
        DocumentRoot /home/wwwroot/30
        ServerName tech.linuxprobe.com
    <Directory /home/wwwroot/30 >
        AllowOverride None
        Require all granted
    </Directory>
    </VirtualHost>
    

    最后,在需要进行访问的主机上编辑/etc/hosts进行解析:
    例:

    172.25.254.211  www.hahaha.com news.hahaha.com music.hahaha.com
    

    这样就能访问了

    这样配置了之后,发现主站www.hahaha.com访问到的是music,这是因为子配置文件少了一个默认配置:

    vim /etc/httpd/conf.d/default.conf:

    Screenshot from 2018-02-03 11-16-58.png

    配置Apache支持多种语言

    1.支持php:
    yum install php -y

    然后编辑php测试页index.php:

    <?php
        phpinfo();
    ?>
    

    这样就可以通过浏览器访问了

    Screenshot from 2018-02-03 16-39-08.png

    2.支持cgi:

    编辑配置文件:
    vim /etc/httpd/conf.d/a_default.conf

    <VirtualHost _default_:80>
            DocumentRoot /var/www/html
            CustomLog logs/default.log combined
    </VirtualHost>
    <Directory /var/www/html/cgi>
            Options +ExecCGI
            AddHandler cgi-script .cgi
    </Directory>
    

    在/var/www/html下新建一个cgi目录,在此目录中新建index.cgi文件:

    #!/usr/bin/perl
    print "Content-type: text/html\n\n";
    print "Hello, world.";
    

    然后就可以通过浏览器测试

    相关文章

      网友评论

        本文标题:使用Apache部署静态网站

        本文链接:https://www.haomeiwen.com/subject/bjxlzxtx.html