• 习Apach服务器搭建


    前言

    Web网络服务

    Web网络服务,一般是指允许用户通过浏览器访问到其中各种资源的服务。比如:百度就是个web网站
    Web网络服务是一种被动访问的服务程序,当接入到互联网中的用户主机发出请求后,Web服务才会响应并通过HTTP或HTTPS把请求的内容回传给用户。示意图如下:

    目前提供Web服务的程序有:IIS、Apache、Ngnix等。


    iis

    IIS(Internet Information Services):互联网信息服务,是Windows系统中默认的Web服务程序。
    它是一款带图形化界面的网站管理工具,不仅提供Web网站服务,还可以提供FTP、SMTP等服务,用于windows


    Apache

    Apache历史:
    Apache源于NCSAhttpd服务器,经过多次修改,成为世界上最流行的Web服务器软件之一。Apache取自“a patchy server”的读音,意思是充满补丁的服务器,因为它是自由软件,所以不断有人来为它开发新的功能、新的特性、修改原来的缺陷。
    本来它只用于小型或试验Internet网络,后来逐步扩充到各种Unix系统中,尤其对Linux的支持相当完美。Apache有多种产品,可以支持SSL技术,支持多个虚拟主机。Apache是以进程为基础的结构,进程要比线程消耗更多的系统开支,不太适合于多处理器环境,因此,在一个Apache Web站点扩容时,通常是增加服务器或扩充群集节点而不是增加处理器。市场占有率达60%左右。世界上很多著名的网站如Amazon、Yahoo!、W3 Consortium、Financial Times等都是Apache的产物。
    它的成功之处主要在于它的源代码开放、有一支开放的开发队伍、支持跨平台的应用以及它的可移植性等方面。
    Apache的诞生极富有戏剧性。当NCSAWWW服务器项目停顿后,那些使用NCSAWWW服务器的人们开始交换他们用于该服务器的补丁程序,他们也很快认识到成立管理这些补丁程序的论坛是必要的。就这样,诞生了Apache Group,后来这个团体在NCSA的基础上创建了Apache。

    特点:
    Apache的特点:简单、速度快、性能稳定,并可做代理服务器来使用。而且跨平台、安全性高、API扩展简单可靠。
    Apache服务程序可以运行在Linux、UNIX、 Windows系统中,支持基于IP、域名及端口号的虚拟主机功能,支持多种认证方式,集成有代理服务器模块、安全Socket层(SSL),能够实时监视服务状态与定制日志消息,有着各类丰富的模块支持。


    Nginx

    2004年,为俄罗斯知名门户站点开发的Web服务程序Nginx横空出世。它作为一款轻量级的网站服务软件,因其稳定性和丰富的功能而快速占领服务器市场。
    它因系统资源消耗低、并发能力强的特点,在国内受到诸如新浪、腾讯、网易等门户网站的青睐。

    环境

    [root@aubin date]# cat /etc/redhat-release
    CentOS Linux release 7.9.2009 (Core)
    

    Apache的安装和配置

    Apache的安装

         列出所有已经安装的包   
          yum list installed          
    
          查看httpd软件是否安装,更新   
          yum info httpd (rpm -q httpd 也可以查看是否安装)
    
    [root@aubin /]# yum info httpd
    已加载插件:fastestmirror, langpacks
    Loading mirror speeds from cached hostfile
     * base: mirrors.ustc.edu.cn
     * extras: mirrors.aliyun.com
     * updates: mirrors.ustc.edu.cn
    已安装的软件包
    名称    :httpd
    架构    :x86_64
    版本    :2.4.6
    发布    :97.el7.centos
    大小    :9.4 M
    源    :installed
    来自源:updates
    简介    : Apache HTTP Server
    网址    :http://httpd.apache.org/
    协议    : ASL 2.0
    描述    : The Apache HTTP Server is a powerful, efficient, and extensible
             : web server.
    
    

    启动httpd服务,并加入启动项
    systemctl start httpd
    systemctl enable httpd
    

    查看服务器httpd状态

    systemctl status httpd

    若打开本地的火狐浏览器,地址栏输入127.0.0.1,出现以下窗口,说明apache部署成功




    Apache的配置

    修改文件/etc/hosts,添加ip和主机名

    [root@aubin aubin]# vim /etc/hosts
    [root@aubin aubin]# echo "192.168.10.150   Apache" >> /etc/hosts
    [root@aubin aubin]# cat /etc/hosts
    127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
    ::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
    192.168.10.150   Apache
    

    防火墙的配置,打开HTTP的端口80和HTTPS的端口443,并立即生效
    firewall-cmd --permanent --zone=public --add-service=http
    firewall-cmd --permanent --zone=public --add-service=https 
    firewall-cmd --reload  让配置的策略立即生效
    

    查看httpd的版本信息及状态
    httpd -v
    systemctl status httpd
    

    文件配置
    用途 文件
    服务目录 /etc/httpd
    主配置文件 /etc/httpd/conf/httpd.conf
    网站数据目录 /var/www/html
    访问日志 /var/log/httpd/access_log
    错误日志 /var/log/httpd/error_log



    httpd.conf的参数说明

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



    配置httpd.conf

    cat /etc/httpd/conf/httpd.conf
    默认web网站内容存放地址,默认该目录为空,向目录中创建index.html文件,并通过浏览器进行查看。
    注:命令行下:set number 显示行号
    
    31   ServerRoot "/etc/httpd"     #存放配置文件的目录
    42   Listen 80                   #Apache服务监听端口
    66   User apache              #子进程的用户
    67   Group apache                      #子进程的组
    86   ServerAdmin root@localhost                   #设置管理员邮箱
    122  DocumentRoot "/var/www/html"             #网站家目录
    设置DocumentRoot指定目录的属性
    131 <Directory "/var/www/html">     #网站容器开始标识
    144  Options Indexes FollowSymLinks     #找不到主页时,以目录的方式呈现,允许链接到网站根目录以外
    151  AllowOverride None              #none不使用 .htaccess控制,all访问
    156  Require all granted              #granted表示运行所有访问,denied表示拒绝所有访问
    157  </Directory> 容器结束
    164  DirectoryIndex index.html      #定义主业文件,当访问到网站目录时如果有定义的主业文件,网站会自动访问
    316  AddDefaultCharset UTF-8     #字符编码,如果中文的话,有可能需要改为gb2312或者gbk,因你的网站文件的默认编码而异
    ErrorLog "logs/error_log"
    
    




    实验

    新建/var/www/html目录下index.html文件,写入内容

    [root@aubin aubin]# vim /var/www/html/index.html
    [root@aubin aubin]# cat /var/www/html/index.html
    hello,world
    
    通过火狐,在地址栏输入自己的虚拟机ip 192.168.10.150,可查看刚刚配置的文件
    

    自己修改网站目录为/website,需要修改 DocumentRoot "/website" 和<Directory "/website">
    将/var/www/html/index.html复制到 根目录/website下,重启httpd服务,浏览器输入ip
    然后查看显示httpd默认界面,再ip后面加上index.html显示错误,原因是权限不足,关系到SElinux,得将其关闭

    Linux系统使用SELinux技术的目的是为了让各个服务进程都受到约束,使其仅获取到本应获取的资源。
    SELinux域对服务程序的功能进行限制,可以确保服务程序做不了出格的事情。
    SELinux上下文对文件资源的访问限制,确保文件资源 只能被其所属的服务程序进行访问。
    开启SELinux后,这样就等于开启了系统双保险,系统内的服务程序只能规规矩矩地拿到自己所应该获取的资源,
    这样即便黑客入侵了系 统,也无法利用系统内的服务程序进行越权操作。
    参数:
    enforcing 强制启用安全策略模式,将拦截服务的不合法请求
    permissive 遇到服务越权访问时,只发出警告而不强制拦截
    disabled 对于越权的行为不警告也不拦截




    SELinux设置

    配置文件对应为:/etc/selinux/config 
    修改SELINUX=enforcing 为SELINUX=disabled 永久禁止启动SElinux,重启生效
    
    setenforce 0 临时禁止启动SElinux,而数字换成1就是临时启动 
    getenforce  查看SElinux的状态
    Permissive  
    
    再次访问192.168.10.150 ,成功
    




    Apache配置虚拟主机

    前言

    >如果每台服务器上只能运行一个网站,那些人气低、流量小的草根站长就要被迫承担着高昂的服务器租赁费用,这显然也会造成硬件资源的浪费。 为此在虚拟专用服务器(VPS:Virtual Private Server)和云计算技术诞生以前,IDC服务供应商为了更充分利用服务器资源和减低草根站长的购买门槛,都启用了虚拟主机功能。利用虚拟主机功能,可以把一台处于运行状态的物理服务器分割成多个“虚拟的服务器”。 虚拟主机功能也有明显的缺点,它无法像目前的云主机技术那样实现硬件资源的隔离,这些虚拟主机共同使用物理服务器的硬件资源,IDC供应商只能限制硬盘的使用空间大小,因此同一台物理主机上的不同用户的虚拟主机可能会相互影响。但是出于成本考虑,目前还是有部分个人站长采用虚拟主机的方式来部署网站。

    Apache的虚拟主机功能是服务器基于用户请求的不同IP地址、主机域名或端口号,实现提供多个网站同时为外部提供访问服务的技术。




    基于IP
    如果一台服务器有多个IP地址,每个IP与服务器上部署的每个网站一一对应, 这样当用户请求访问不同的IP地址时,会访问到不同网站的页面资源。
    这种方式每个网站都有一个独立的IP地址,利于搜索引擎SEO优化,因此这种方式提供虚拟网站主机功能最常见且受草根站长的欢迎。


    nmtui命令配置多个窗口

    [root@aubin aubin]# nmtui
    [root@aubin aubin]# systemctl restart network  #重启网络
    [root@aubin aubin]# ip addr                   #可以看到刚才配置的IP,并能在虚拟机或宿主机上能ping通刚才配置的每个IP。
    1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
        link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
        inet 127.0.0.1/8 scope host lo
           valid_lft forever preferred_lft forever
        inet6 ::1/128 scope host 
           valid_lft forever preferred_lft forever
    2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
        link/ether 00:0c:29:cb:c6:a7 brd ff:ff:ff:ff:ff:ff
        inet 192.168.10.150/24 brd 192.168.10.255 scope global noprefixroute ens33
           valid_lft forever preferred_lft forever
        inet 192.168.10.151/24 brd 192.168.10.255 scope global secondary noprefixroute ens33
           valid_lft forever preferred_lft forever
        inet 192.168.10.152/24 brd 192.168.10.255 scope global secondary noprefixroute ens33
           valid_lft forever preferred_lft forever
    

    然后通过windows本地机ping 192.168.10.15(0~2),三个ip都能通



    实验

    创建子网站1,2,并写入index.html文件
    [root@aubin aubin]# mkdir -p /website/1
    [root@aubin aubin]# mkdir -p /website/2
    
    [root@aubin aubin]# echo "192.168.10.151" > /website/1/index.html
    [root@aubin aubin]# echo "192.168.10.152" > /website/2/index.html
    
    [root@aubin aubin]# ls /website
    1  2  index.html
    
    [root@aubin aubin]# cat /website/1/index.html
    192.168.10.151
    [root@aubin aubin]# cat /website/2/index.html
    192.168.10.152
    



    配置Apache

    配置主配置文件/etc/httpd/conf/httpd.conf

    向文件中分别加入两次以下配置
    <VirtualHost 192.168.10.151>
     DocumentRoot /website/1
     ServerName website1
     <Directory /website/1>
      AllowOverride None
      Require all granted
     </Directory>
    </VirtualHost>
    
    重启httpd服务
    [root@aubin aubin]# systemctl restart httpd
    
    [root@aubin aubin]# tree /website/
    /website/
    ├── 1
    │   └── index.html
    ├── 2
    │   └── index.html
    └── index.html
    
    2 directories, 3 files
    
    
    [root@aubin aubin]# cat /website/1/index.html
    192.168.10.151
    [root@aubin aubin]# cat /website/2/index.html
    192.168.10.151
    
    打开火狐输入那两个子网站的ip(这里用的是浏览器内容字符化curl)
    [root@aubin aubin]# curl 192.168.10.151
    192.168.10.151
    [root@aubin aubin]# curl 192.168.10.152
    192.168.10.152
    
    实验成功
    




    基于端口,基于域名

    看参考文档




    参考文档

    https://www.cnblogs.com/heimatengyun/p/12550272.html
    https://www.cnblogs.com/heimatengyun/p/12564268.html
    https://www.cnblogs.com/VseYoung/p/10018317.html

    当你的才华配不上你的野心,努力的时候到了!
  • 相关阅读:
    Windows核心编程(笔记11) 第十三章 Windows内存体系结构 四
    源码网站推荐 四
    程序员应知——破窗与童子军军规 四
    warning LNK4098 VC开发中遇到的问题 四
    各种系统架构图及其简介 四
    Windows核心编程(笔记10) 第十一章 Windows线程池 第十二章 纤程 四
    Windows核心编程(笔记12) 第十四章 探索虚拟内存 第十五章 在应用程序中使用虚拟内存 四
    Perl、PHP、ASP、JSP技术比较 四
    #pragma 预处理指令详解 四
    实战剖析三层架构 四
  • 原文地址:https://www.cnblogs.com/xwdzj/p/14127248.html
Copyright © 2020-2023  润新知