web服务

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

    二、apache软件包
        # yum install httpd httpd-devel httpd-manual -yhtml

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

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

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

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

        service httpd restartvim

    实例2:取消默认报错而且对主配置文件进行简单的修改
    功能:取消test page的显示,显示咱们本身的首页浏览器

                Listen 80
                Listen 192.168.0.7:80
                Listen 192.168.2.7:8080安全

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

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

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

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

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

        四、service httpd restart
        
        五、打开firefox,在浏览器中输入域名或者IP就能够。


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

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

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


        三、重启服务,让配置生效
            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:口令验证控制

    一、修改参数 ,把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>
    
    二、创建.htaccess文件,定义验证配置文件

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

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

    三、创建密码账号文件

htpasswd -c /etc/httpd/userpw test

htpasswd  /etc/httpd/userpw bbs
    

    四、service httpd restart


    实例7:创建用户我的空间
    
    一、修改配置文件
    搜索 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>

    二、创建用户以及我的空间的目录

    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进程没法访问,因此给予它访问的权限

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

    service httpd restart

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

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

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

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

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

 

 

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

        二、添加虚拟主机配置
<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>  

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

        四、配置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的虚拟空间:
            一、修改配置文件

#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>

            二、修改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不一样端口:
            一、修改参数文件

[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]#
            

            二、增长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>

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

    三、配置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 在这里添加                                          

相关文章
相关标签/搜索