当前位置: 首页 > news >正文

web服务

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

第一、apache
        
    1、web服务器的概念以及http的概念
        架构: C/S  : Client (浏览器) <-------> Server (apache)
        网站的技术:静态和动态
            静态页面:一般都是.html .htm .shtml
            动态页面:一般是 .php .asp .jsp  
        特点:需要语言的解析模块去完成页面代码编译,最后把结果返回给web服务器,还有一个常见的特点就是涉及到数据库查询的

    2、apache软件包
        # yum install httpd httpd-devel httpd-manual -y

        服务名字:httpd
        进程名字:httpd
        默认端口:80  (https:443)
            :8080

        服务的工作目录: /etc/httpd
        主配置:/etc/httpd/conf/httpd.conf

    3、分析配置文件
    分三部分:全局配置、局部配置、虚拟空间配置
    全局:
    ServerRoot "/etc/httpd"  <---后面的路径不能添加 /,rpm安装不要去修改
    Listen 80  <---监听的端口
    Listen 8080
    ServerName www.example.com:80 <---设定服务器默认网站绑定的域名(ip)和端口

    实例1:安装后直接重启,使用默认网站

        service httpd restart

    实例2:取消默认报错并且对主配置文件进行简单的修改
    功能:取消test page的显示,显示我们自己的首页

                Listen 80
                Listen 192.168.0.7:80
                Listen 192.168.2.7:8080

        1、vim /etc/httpd/conf/httpd.conf
        ServerName 10.1.1.20:80
        或者 vim /etc/hosts <---把你的主机名字和你的IP对应上

        2、vim /var/www/html/index.html  《---默认情况下,默认网站的根目录 /var/www/html
            概念:网站的根目录--->网站页面程序存放的起始路径
            默认情况下,apache读取一个网站的的默认首页就是index.html

            DirectoryIndex index.html index.html.var  《---这里就是定义网站的,默认首页的名字

        3、修改参数
            DirectoryIndex index.htm index.html index.html.var

        新建一个index.htm  <---内容随便你,用来测试区别

        4、service httpd restart
        
        5、打开firefox,在浏览器中输入域名或者IP就可以。


    实例3:修改默认网站的根目录

        1、修改配置文件的根目录定义参数
            DocumentRoot "/www"

        2、创建定义的网站根目录
            mkdir /www
            vim /www/index.html


        3、重启服务,让配置生效
            service httpd restart

    实例4:学习目录控制参数
        <Directory "/var/www/html">
            Options Indexes FollowSymLinks
            AllowOverride None   # 是否启动.htaccess
            Order allow,deny
            Allow from all
        </Directory>

                xml

        分析参数:
        
            Options
                Indexes  <---是否对于没有默认首先目录下面的文件以及子目录进行索引,去掉之后就取消这个功能
                FollowSymLinks  <---跟踪软连接,存在的意义:隐藏目录的真实路径,可以方便网站扩容

<Directory "/www">  <---取消indexes的配置
                Options  FollowSymLinks
                AllowOverride None
                Order allow,deny
                Allow from all
</Directory>

    实例5:启用访问控制

<Directory "/www">
                Options  FollowSymLinks
                AllowOverride None
                Order allow,deny   <-----定义acl控制的顺序,这里代表先允许,不再允许范围内的都拒绝
                Allow from all      <----定义允许所有
</Directory>    


<Directory "/www">  
                Options  FollowSymLinks
                AllowOverride None
                Order allow,deny   <-----定义acl控制的顺序,这里代表先允许,不再允许范围内的都拒绝
                Allow from 10.1.1.0/24      <----定义只允许10.1.1.0/24
</Directory>

----------------------------

<Directory "/www">
                Options  FollowSymLinks
                AllowOverride None
                Order deny,allow
                Deny from 10.1.2.0/24  《---只拒绝10.1.2.0/24这个网段访问
</Directory>

    实例6:口令验证控制

    1、修改参数 ,把AllowOverride none 改成 AllowOverride ALL        
<Directory "/www">
                Options  FollowSymLinks
                AllowOverride ALL  《---ALL启用口令验证,none关闭口令验证
                Order deny,allow
                Deny from 10.1.2.0/24  《---只拒绝10.1.2.0/24这个网段访问
</Directory>
    
    2、建立.htaccess文件,定义验证配置文件

我要对网站的根目录进行验证,那么在根目录下创建 .htaccess
vim /www/.htaccess

authname "Just for test"
authtype basic
authuserfile /etc/httpd/userpw
require valid-user

    3、建立密码帐号文件

htpasswd -c /etc/httpd/userpw test

htpasswd  /etc/httpd/userpw bbs
    

    4、service httpd restart


    实例7:建立用户个人空间
    
    1、修改配置文件
    搜索 UserDir
<IfModule mod_userdir.c>
    #
    # UserDir is disabled by default since it can confirm the presence
    # of a username on the system (depending on home directory
    # permissions).
    #
    #UserDir disable

    #
    # To enable requests to /~user/ to serve the user's public_html
    # directory, remove the "UserDir disable" line above, and uncomment
    # the following line instead:
    #
    UserDir public_html   《---启用用户个人空间的功能,访问http://ip/~mary  --》读取/home/mary/public_html

</IfModule>

<Directory /home/*/public_html>
    AllowOverride FileInfo AuthConfig Limit
    Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
    <Limit GET POST OPTIONS>
        Order allow,deny
        Allow from all
    </Limit>
    <LimitExcept GET POST OPTIONS>
        Order deny,allow
        Deny from all
    </LimitExcept>
</Directory>

    2、建立用户以及个人空间的目录

    useradd web
    mkdir /home/web/public_html    《---建立个人空间根目录
    vim /home/web/public_html/index.html
        This is Web's Home!

    chmod o+x /home/web  <---默认用户家目录权限是700,httpd进程无法访问,所以给予它访问的权限

    3、重启服务,使配置生效

    service httpd restart

    4. 测试: http://localhost/~web/

===========================================================
    实例8:建立目录别名

    Alias /tobbs    "/bbs"  <---访问 IP/tobbs 的时候实际读取的内容是/bss(系统的绝对路径)

    加入我们的apache定义哪个别名指向那个文件夹里面,存放的是一些cgi,perl...alias定义的别名就无法达到执行程序的目的。

    ScriptAlias /tobbs "/bbs" <---这样就解决的执行脚本的问题
        
    
    作用:方便扩容,隐藏目录增加安全性

 

 

    实例9:虚拟空间  <---一个服务器跑多个网站
        
        @@基于域名的虚拟空间: 《---在同一个服务器,在只有一个IP的情况下,通过不同域名来区分不同的网站
        1、启用参数:
    NameVirtualHost *:80  《--让apache在一个服务器上,单个IP 运行多个网站,每个网站独立内容

        2、添加虚拟主机配置
<VirtualHost *:80>
    DocumentRoot /www/uplooking
    ServerName www.uplooking.com
    ErrorLog logs/www.uplooking.com-error_log
    CustomLog logs/www.uplooking.com-access_log common
</VirtualHost>  

        3、建立网站目录和文件
mkdir /www/uplooking
vim /www/uplooking/index.html

        4、配置DNS

        做A记录或CNAME记录都行, 如果都做A记录不行, 就把其中一个域名做A记录,
        其他的做CNAME记录

真正在互联网该如何操作?

        背景:公司搭建一台web服务器,绑定的网址 www.uplooking.com,IP是公网:61.191.53.56
        公司想建立一个论坛,绑定的网址bbs.uplooking.com,网站是建立同一个服务器上

        a、添加虚拟主机配置
<VirtualHost *:80>
    DocumentRoot /bbs
    ServerName bbs.uplooking.com
    ErrorLog logs/bbs.uplooking.com-error_log
    CustomLog logs/bbs.uplooking.com-access_log common
</VirtualHost>  

        b、建立网站目录和文件
mkdir /bbs
vim /bbs/index.html


    测试: http://www.uplooking.com --->访问的是/www/uplooking
        http://bbs.uplooking.com  --->访问的是/bbs下的内容


        @@@基于IP的虚拟空间:
            1、修改配置文件

#NameVirtualHost *:80  <---注释这个配置

<VirtualHost 10.1.1.21:80>
    DocumentRoot /bbs
    ServerName bbs.uplooking.com
    ErrorLog logs/bbs.uplooking.com-error_log
    CustomLog logs/bbs.uplooking.com-access_log common
</VirtualHost>

            2、修改DNS,添加A记录
bbs     IN      A       10.1.1.21


    测试: http://bbs.uplooking.com   过程: Client ---> 数据包[dst:10.1.1.21  url:bbs.uplooking.com]-->Server

        @@@基于同一个IP不同端口:
            1、修改参数文件

[root@kadefor ule-sa3]# grep ^Listen  /etc/httpd/conf/httpd.conf
Listen 80
Listen 8080  <---增加apache监听的端口
[root@kadefor ule-sa3]# tail -12 !$
tail -12 /etc/httpd/conf/httpd.conf
<VirtualHost 192.168.56.1:80>
    DocumentRoot /www2
    ServerName web.kadefor.com
    ErrorLog logs/www2.kadefor.com-error_log
    CustomLog logs/www2.kadefor.com-access_log common
</VirtualHost>
<VirtualHost 192.168.56.1:8080>
    DocumentRoot /www
    ServerName web.kadefor.com
    ErrorLog logs/www.kadefor.com-error_log
    CustomLog logs/www.kadefor.com-access_log common
</VirtualHost>
[root@kadefor ule-sa3]#
            

            2、增加DNS记录

        测试    过程: Client ---> 数据包[dst:192.168.56.1  url:web.kadefor.com  port:8080]-->Server

http://web.kadefor.com:8080/  
http://web.kadefor.com

 

作业:
    建立两个虚拟主机(vhost),分别帮定两个网址是: www.uplooking.com 和 bbs.uplooking.com
    www.uplooking.com对应的网站根目录是/www/uplooking,随便编写一个默认首页测试,方便区别不同网站
    bbs.uplooking.com对应的网站根目录是/bbs
    要求利用其中一种别名的方法,让访问www.uplooking.com/bbs的时候,实际访问的是/bbs下的内容
    网站所用的网址要求使用自己的DNS服务器去解析,而不是修改hosts文件
    网站要求只允许10.1.1.0网段去访问,但不能让10.1.1.20访问

 

 

答案:
    1 vim /etc/httpd/conf/httpd.conf
    NameVirtualHost *:80
    <VirtualHost *:80>
        DocumentRoot /www/uplooking
        ServerName www.uplooking.com
        ErrorLog logs/www.uplooking.com-error_log
        CustomLog logs/www.uplooking.com-access_log common
        Alias /bbs      "/bbs"
        <Directory "/www/uplooking">
            Order allow,deny
            deny from 10.1.1.20
            allow from 10.1.1.0/24
        </Directory>
    </VirtualHost>

    <VirtualHost *:80>
        DocumentRoot /bbs
        ServerName bbs.uplooking.com
        ErrorLog logs/bbs.uplooking.com-error_log
        CustomLog logs/bbs.uplooking.com-access_log common
        <Directory "/www/uplooking">
            Order allow,deny
            deny from 10.1.1.20
            allow from 10.1.1.0/24
        </Directory>
    </VirtualHost>

    2、mkdir /www/uplooking;mkdir /bbs
        vim /www/uplooking/index.html
            This www.uplooking.com
        vim /bbs/index.html
            This bbs.uplooking.com

    3、配置DNS添加别名记录
web     IN      A       10.1.1.20
www     IN      CNAME   web
bbs     IN      CNAME   web

    service named restart
    service httpd restart


怎样设置只能通过域名访问, 而不能通过IP访问?

方法1.

添加一个虚拟主机可以实现:
<VirtualHost *:80>
    ServerName localhost
    DocumentRoot /nosite     # 这个目录不存在!
</VirtualHost>


方法2
<VirtualHost *:80>
    ServerName localhost
    #DocumentRoot /nosite
    <Location />        # 禁止所有人访问
        order deny,allow
        deny from all
    </Location>
</VirtualHost>


1. yum install httpd -y


2. yum install httpd-manual -y
   /etc/init.d/httpd restart
   firefox   http://<ip>/manual

3. change DocumentRoot
    vim /etc/httpd/conf/httpd.conf

    DocumentRoot "/var/www/html"
    -->
    DocumentRoot "/opt/www"
    
    <Directory "/var/www/html">
    -->
    <Directory "/opt/www">

4. control directory
    <Directory "/opt/www/abc">
        order deny,allow
        deny from 192.168.248.1
    </Directory>


5. UserDir
    UserDir  disabled
    -->
    UserDir  public_html

    <Directory "/home/*/public_html">
        Options Indexes FollowSymlinks
        AllowOverride None
    </Directory>

    test:
        su - oracle
        mkdir public_html
        chown o+x ~oracle

6. .htaccess

    相应目录控制语句里, 修改 AllowOverride all

    eg:
    /opt/www/abc

    vim /etc/httpd/conf/httpd.conf

    <Directory />
        allowoverride all
    </Diretory>

    or: 如果有:
    <Directory "/opt/www/abc">
        allowoverride all
    </Diretory>

    vim /opt/www/abc/.htaccess

    authname "Must auth"
    authtype basic
    authuserfile  /etc/httpd/conf/user.db
    require  valid-user

7.  cgi

    a) 确认 cgi 模块是否加载
    b) 确认存放 cgi 程序的目录:
       ScriptAlias "/cgi-bin/"  "/var/www/cgi"

    c) 控制目录允许执行cgi程序:
        <Directory /var/www/cgi>
            Options +ExecCGI
        </Directory>

    b) 取消注释
       AddHandler  cgi-script   .cgi

8. selinux --> cgi

   chcon -t httpd_sys_script_exec_t /var/www/cgi-bin -R

9. v-host

  a)  port
    
    vim /etc/httpd/conf/httpd.conf

    Listen 8080

    <VirtualHost *:80>
        ServerAdmin  root@localhost
        ServerName   www.up.com
        DocumentRoot /opt/www80
        ErrorLog     logs/www80.error.log
        CustomLog    logs/www80.access.log common
    </VirtualHost>

    <VirtualHost *:8080>
        ServerAdmin  root@localhost
        ServerName   www.up.com
        DocumentRoot /opt/www8080
        ErrorLog     logs/www8080.error.log
        CustomLog    logs/www8080.access.log common
    </VirtualHost>

  b) name-based

    vim /etc/httpd/conf/httpd.conf

    NameVitrualHost  *:80

    <VirtualHost *:80>
        ServerAdmin  root@localhost
        ServerName   www.up.com
        DocumentRoot /opt/www
        ErrorLog     logs/www80.error.log
        CustomLog    logs/www80.access.log common
    </VirtualHost>

    <VirtualHost *:80>
        ServerAdmin  root@localhost
        ServerName   blog.up.com
        DocumentRoot /opt/blog
        ErrorLog     logs/blog.error.log
        CustomLog    logs/blog.access.log common
    </VirtualHost>

  c)  ip

    vim /etc/httpd/conf/httpd.conf

    Listen *:80

    <VirtualHost 192.168.248.11:80>
        ServerAdmin  root@localhost
        ServerName   www.up.com
        DocumentRoot /opt/www80
        ErrorLog     logs/www80.error.log
        CustomLog    logs/www80.access.log common
    </VirtualHost>

    <VirtualHost 172.16.248.11:80>
        ServerAdmin  root@localhost
        ServerName   blog.up.com
        DocumentRoot /opt/www8080
        ErrorLog     logs/www8080.error.log
        CustomLog    logs/www8080.access.log common
    </VirtualHost>


10.   禁止使用ip,或非法解析的域名来访问:

    建立第一个虚拟主机, 使之不可访问

    <VirtualHost 192.168.248.11:80>
        DocumentRoot /www/docs
        <Directory /www/docs>
           order deny,allow
           deny from all
        </Directory>
    </VirtualHost>


https    
[root@dns ~]# yum install openssl mod_ssl -y
[root@dns ~]# ls /etc/httpd/conf.d/ssl.conf
/etc/httpd/conf.d/ssl.conf
[root@dns ~]#
[root@dns ~]# cd /etc/pki/tls/certs
[root@dns certs]# ls Makefile
Makefile
[root@dns certs]# make testcert
[root@dns certs]#
[root@dns certs]# ls ../private/localhost.key
../private/localhost.key
[root@dns certs]# ls localhost.crt
localhost.crt
[root@dns certs]# mkdir /etc/httpd/ssl
[root@dns certs]# cp ../private/localhost.key  /etc/httpd/ssl/server.key
[root@dns certs]# cp localhost.crt /etc/httpd/ssl/server.crt
[root@dns certs]#
[root@dns certs]# vim /etc/httpd/conf.d/ssl.conf
[root@dns certs]# grep server.key  /etc/httpd/conf.d/ssl.conf
SSLCertificateKeyFile /etc/httpd/ssl/server.key
[root@dns certs]# grep server.crt  /etc/httpd/conf.d/ssl.conf
SSLCertificateFile /etc/httpd/ssl/server.crt
#SSLCACertificateFile /etc/httpd/ssl/server.crt
[root@dns certs]# /etc/init.d/httpd restart
[root@dns certs]# --> password
[root@dns certs]#
[root@dns certs]# openssl rsa -in /etc/httpd/ssl/server.key -out /etc/httpd/ssl/nopw.key
Enter pass phrase for /etc/httpd/ssl/server.key:
writing RSA key
[root@dns certs]# vim /etc/httpd/conf/httpd.conf
[root@dns certs]# vim /etc/httpd/conf.d/ssl.conf
[root@dns certs]# grep nopw.key /etc/httpd/conf.d/ssl.conf
SSLCertificateKeyFile /etc/httpd/ssl/nopw.key
[root@dns certs]#
[root@dns certs]# /etc/init.d/httpd restart
Stopping httpd:                                            [  OK  ]
Starting httpd:                                            [  OK  ]
[root@dns certs]#


注意     1,DirectoryIndex   index.html index.html index.html.var  设置默认访问页面
    2,/etc/httpd/conf/httpd.conf 修改httpd 的配置文件目录
    3,index.html文件建在设置的DocumentRoot /www/up18 这个家目录里面

4.    elinks 字符界面浏览器 curl 查看网页信息

5,/etc/httpd/conf.d 在这里添加
                                         

转载于:https://my.oschina.net/6379021/blog/756248

相关文章:

  • 编程思想之多线程与多进程系列
  • aop 简单运用,traceId 简单实现,访问日志拦截,ip黑名单
  • MySQL学习笔记 初学基础篇
  • Linux磁盘及文件系统的管理
  • PC端和移动端测试区别
  • Zabbix 3.0 主备模式 [八]
  • 如何接入新连接
  • centos7 firewall操作
  • vscode 终端下载vue
  • ./和../以及/和~之间的区别
  • 2016.8.17服务器端数据库用户导入导出方法 expdp和impdp
  • 十年码农建议:写代码时应该反复问自己8个问题
  • quartz学习
  • 6.10 docker(四)进入容器
  • 【Todo】Nodejs学习计划
  • ----------
  • 《剑指offer》分解让复杂问题更简单
  • CSS进阶篇--用CSS开启硬件加速来提高网站性能
  • input的行数自动增减
  • JavaWeb(学习笔记二)
  • JS 面试题总结
  • SAP云平台里Global Account和Sub Account的关系
  • SpringBoot 实战 (三) | 配置文件详解
  • spring学习第二天
  • zookeeper系列(七)实战分布式命名服务
  • 分享一个自己写的基于canvas的原生js图片爆炸插件
  • 分享自己折腾多时的一套 vue 组件 --we-vue
  • 新手搭建网站的主要流程
  • 一个项目push到多个远程Git仓库
  • 异常机制详解
  • 原生 js 实现移动端 Touch 滑动反弹
  • ​业务双活的数据切换思路设计(下)
  • (+4)2.2UML建模图
  • (9)YOLO-Pose:使用对象关键点相似性损失增强多人姿态估计的增强版YOLO
  • (C++17) optional的使用
  • (Java岗)秋招打卡!一本学历拿下美团、阿里、快手、米哈游offer
  • (Matalb分类预测)GA-BP遗传算法优化BP神经网络的多维分类预测
  • (附源码)springboot“微印象”在线打印预约系统 毕业设计 061642
  • (附源码)springboot宠物管理系统 毕业设计 121654
  • (附源码)springboot太原学院贫困生申请管理系统 毕业设计 101517
  • (附源码)ssm失物招领系统 毕业设计 182317
  • (每日持续更新)jdk api之FileFilter基础、应用、实战
  • (深入.Net平台的软件系统分层开发).第一章.上机练习.20170424
  • (四)linux文件内容查看
  • (原)Matlab的svmtrain和svmclassify
  • (转)ORM
  • (转)母版页和相对路径
  • ***linux下安装xampp,XAMPP目录结构(阿里云安装xampp)
  • .NET 3.0 Framework已经被添加到WindowUpdate
  • .net 开发怎么实现前后端分离_前后端分离:分离式开发和一体式发布
  • .NET 中使用 TaskCompletionSource 作为线程同步互斥或异步操作的事件
  • .NET/ASP.NETMVC 大型站点架构设计—迁移Model元数据设置项(自定义元数据提供程序)...
  • .net遍历html中全部的中文,ASP.NET中遍历页面的所有button控件
  • .net的socket示例
  • .Net各种迷惑命名解释