• Linux服务器搭建 -- Web服务器(apache)


    WWW简介

            www是world wide web的缩写,意为全球信息广播。通常说的上网就是使用www来查询用户所需要的信息。www可以结合文字、图像、影响以及声音等多媒体,可以通过鼠标点击超链接的方式将信息以Internet传到世界各地

    www所用的协议

            HTTP超文本传输协议,是网络上最广泛的一种网络协议,所有的www文件都必须遵循这个标准。

    常见的WEB服务器:tomcat nginx IIS apache http web www

            其中tomcat功能比apache更加强大,但是因为apache是老牌产品,所以兼容性更加好,IIS是Windows端的web服务器,但是收费,nginx是最近比较热门的服务器,由俄罗斯一个小伙编写,功能也很强大        

            服务器所提供的最主要数据是HTML和多媒体文件

    网址及HTTP简介

            HTTP服务提供的数据大部分都是文件,所以我们只需要在服务端把文件都部署好,HTTP中,这些文件都存放于/var/www/html中,我们想要访问这些文件只需要在浏览器输入对应的网址,当我们输入Linux主机的ip地址时,他默认优先访问/var/www/html/index.html文件,如果该文件不存在,那么将会访问apache的欢迎界面

    访问web服务的方法

            需要使用浏览器,通过url -- 统一资源定位符,即通过输入域名或IP地址进行访问,比如访问百度就是www.baidu.com或220.181.38.149,其实它默认访问的是百度服务器里的/var/www/html/index.html文件,可以尝试访问www.baidu.com/index.html

    url格式:<协议>://<主机或主机名>[:port]/<文件/资源路径>

                    其中协议一般常用的有http和https

            端口http默认的是80和8080,https默认为443,不用特别的去输入,除非要访问指定端口,之后就是文件路径了,例如:192.168.218.133:80/index.html

    WWW服务器的类型

            主要分为静态网站和动态网站

            静态网站

                    静态网站即仅提供用户浏览的单向静态网页,单纯是由服务器单向提供数据给客户端,

                    不需要进行互动,一般只能浏览不能上传数据

            动态网站

                    动态网站即向用户提供了可以互动的接口,需要除了H5和CSS的网页程序语言,常见的

                    有JavaScript和PHP,通过网页程序实现数据库的读写

    搭建动态网站的需求:

            可支持的操作系统,可运行的WWW服务器(中间件),网页程序语言,数据库,常见的有LAMP模式 -- Linux、apache、MySQL、PHP

    WWW服务器的搭建

    1、安装软件包 -- yum/dnf install httpd -y

    2、修改默认配置,http的主配置文件在/etc/httpd/conf/httpf.conf

    3、找到ServerName,添加一条ServerName 0.0.0.0:80,意为监听所有端口

    4、启动服务

            systemctl start httpd/firewalld

    4、放行防火墙规则或者关闭防火墙

            firewall-cmd --permanent --add-service=http

    5、刷新防火墙

            firewall-cmd --reload

    4>关闭防火墙

            systemctl stop firewall.service

            setenforce 0

    如何自定义欢迎页面

            我们只需要在/var/www/html/下的index.html中写入我们想说的话便可以自定义默认访问界面

            echo welcome  to apache > /var/www/html/index.html

    主配置文件中的重要参数

    参数

    作用

    ServerRoot "/etc/httpd"

    http服务的顶级目录为/etc/httpd

    Listen 80

    默认监听80端口,可以修改

    User apache

    服务的用户,先以root身份启动服务再转变成apache身份,增加系统安全性

    Group apache

    同上者目的一样

    ServerAdmin root@localhost

    有问题将会给此邮箱发邮件

    #ServerName www.example.com:80

    监听的IP地址和端口,也可以理解为可以通过哪些地址进行访问

    Directory />

        AllowOverride none

        Require all denied

    AllowOverride none:不允许访问的文件

    Require all denied:拒绝访问根

    DocumentRoot "/var/www/html"

    网页文件所在目录

        LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined

        LogFormat "%h %l %u %t \"%r\" %>s %b" common

        

    LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio

        

         Customlog "logs/access_log" combined

    日志配置文件 /var/log/httpd,日志模块:通过时间节点去记录

    ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"

    别名模块

    AddDefaultCharset UTF-8

    默认字符集

            注意:

            默认访问apache欢迎界面的配置文件是?欢迎界面的文件在哪?

                    配置文件:/etc/httpd/conf.d/welcome.conf

                    文件地址:/usr/share/httpd/noindex/index.html

    如何搭建两个基于ip访问的网站

    步骤

    一、给网卡添加两个新的地址

    二、创建两个网页的根目录,并自定义网页内容

    三、创建一个vhost.conf的文件

    三、修改配置文件,重启服务

    四、测试

    如何允许通过域名访问

    首先我们知道我们访问 一台服务器可以使用IP和域名两种方式访问,域名可以让我方便记忆,但是最后还是被解析成IP地址,如果说我们想让我们的本地web服务器也能达到域名访问的目的,那么只需要将servername的参数改为域名的形式,之后修改本地host文件即可(原理参考Linux服务器搭建 -- DNS域名解析服务器)

    步骤一:修改servername域名

    步骤二:修改本地host文件

    Linux主机的host文件目录在/etc/hosts,更改时需要root权限,格式为IP在前,域名在后,注意空格

    Windows主机的host文件在C:\Windows\system32\drivers\etc\hosts,注意这个文件需要超级管理员权限,需要打开超级管理员去修改,或者使用notepad++直接修改,同样是IP在前,域名在后,注意空格

     步骤三:测试成功

    基于https的静态网站

    HTTPS:超文本传输安全协议,https不是一个新的协议,而是在HTTP的基础上加入了tls/ssl模块,从原本的http直接与TCP进行通信变成了ssl先于ssl通信,再由ssl与TCP进行通信

    ssl:Secure Sockets Layer,即安全套接层,在1999年,被IETF组织标准化,改名为TLS(Transport Layer Security,传输层安全协议)

    ssl又被分为两层:

            SSL记录协议:他建立在可靠的传输协议之上,为高层协议提供数据封装、压缩、加密等基础功能

            SSL握手协议:它建立在SSL记录协议之上,用于在实际的传输开始前,通讯双方进行身份验证、协商加密算法、交换加密密钥等

    SSL提供的服务

            认证用户服务器,确保数据发送到正确的客户机与服务器

            加密数据以防止数据中途被窃取

            维护数据完整性,确保数据在传输途中不会改变

    回顾通信建立过程

            客户端先进行三次握手建立会话,之后进行http版本协商,高版本兼容低的版本,之后服务端将自己的公钥以明文的方式发送给客户端,客户端再将自己的密钥用对方的公钥将自己的密钥加密发送给服务端完成密钥交换,之后就是认证阶段和数据通信阶段

    问题:客户端如何知道服务端发来的密钥有没有被劫持,这时候就需要第三方认证机构(CA)保证这个密钥就是服务端的密钥

    CA介入的https认证的过程

    首先客户端先验证服务端的身份

            客户端向服务端发送自己支持的ssl版本号,协商出自己支持的版本号,之后服务端将自己的服务器数字证书发送给客户端,客户端查看证书是否是由受信任的CA机构所颁发,是则生成客户端的公钥和会话密钥并用服务端的公钥加密给服务端,服务端收到以后用私钥解密,并生成服务端的会话密钥并用客户端的公钥加密发送给客户端,客户端收到以后用自己的私钥解密获得服务端会话密钥,之后客户端使用客户端的会话密钥发送数据,服务端用服务端的会话密钥发送数据

    CA证书如何生成

            CA证书:其实主要就是一个公钥,还包含了证书的颁发机构、过期时间、服务端公钥、CA的签名,服务端域名……

            生成过程:CA首先对服务器公钥进行摘要,再对摘要值进行哈希散列运算,再将哈希值和服务端公钥用CA密钥进行加密发送给客户端(这个加密的数据称为数字证书,而整个部分是CA数字证书),客户端用CA的公钥进行数据解密,在对摘要进行哈希散列运算,再对比两个哈希值,如果相同,就判断这个公钥就是服务端发来的

    生成CA的方法:

            可以向受信任的CA机构购买,也可以自己生成,只不过自己的CA数据证书不被浏览器所信任,因为受信任的CA机构已经被内置于我们的浏览器中,如果要将此证书被浏览器所信任,需要将自己颁发的CA证书添加到浏览器中的受信任列表

    下面主要介绍一下如何自己生成CA证书

    一、首先服务端需要下载mod_ssl模块

    二、生成证书

    命令解析:

    openssl

    主命令

    req

    请求

    -newkey

    新的公钥

    rsa

    rsa加密方法

    -nodes

    哈哈

    -keyout

    输出私钥

    zws.key

    私钥名称

    -x509

    证书的格式

    -out

    输出证书

    zws.crt

    证书的名字

            这条命令就是请求创建一个证书,以rsa加密方式生成一个对来自CA的密钥,-sha256是摘要的哈希算法,-keyout是将CA的私钥输出,不指定文件夹将会保存在当前目录,证书格式为x509,-out zws.crt输出名为zws.crt的证书

    配置基于https的静态网站

            有了证书https过程就不缺条件

            ssl只是http的一个模块,所以ssl的配置文件在/etc/httpd/conf.d/ssl.conf

    打开ssl.conf的配置文件,里面的重要参数

    Listen 443 https

    监听https的443端口,主配置不需要修改

    SSLEngine on

    ssl已开启

    SSLCertificateFile /etc/pki/tls/certs/localhost.crt

    证书的存放位置

    SSLCertificateKeyFile /etc/pki/tls/private/localhost.key

    公钥存放的位置

    我们可以选择将证书和公钥的位置修改为现在存放的位置,但是为了方便管理更合理的是将两者存放至默认推荐的位置,切记更改配置文件中的证书和公钥名称,只需要在虚拟主机中添加SSLEngine、SSLCertificateFile和SSLCertificateKeyFile参数

    重启服务,将tcp的443端口添加到防火墙规则

    访问https://服务器IP或域名:443进行验证

    基于虚拟目录和用户控制的web网站

            我们访问主机的时候还需访问根目录以外的文件,如果将这些文件移动过来很可能影响其他的服务,将文件辅助过来会占用服务器更多的储存空间,因此虚拟目录营运而生,采用别名的思想!

            我们以虚拟主机为例,在VirtualHost中添加aliase /虚拟共享目录 /真实路径,但是我们如果又不想任何人访问我们的虚拟目录,就需要对目录进行限制,可以基于用户/主机进行访问控制,配置思路如下

    一、创建别名链接到真实文件路径

    二、开始真实文件的上层目录路径权限

    三、开启基于用户的访问控制

    四、创建用户列表,也就是AuthUserFile,让配置文件登陆时去文件中查询是否存在可登录的用户

    这里-c是因为users文件不存在,首次创建需要先创建文件,后期创建用户就不需要-c,也可以mkdir先创建users文件,虚拟文件实际不存在,但是真实路径必须存在

    动态HTTP服务的搭建

            动态HTTP服务的常用模型有:LAMP和LNMP,以LAMP为例实验

            L:Linux主机

            A:apache

            M:mariadb或MySQL

            P:PHP

            LA我们已经具有接下来看一下MP怎么装环境

    下载mariadb

    开启mariadb

     

    初始化数据库

    创建数据库

    下载PHP 

     将discuz包解压传到服务器的/var/www/html下

    修改upload下的所有文件的权限为777 

    重启http和mariadb,访问IP下的upload文件,进行向导安装

  • 相关阅读:
    Django模板层
    sql主从复制搭建
    机器学习笔记 - HaGRID—手势识别图像数据集简介
    关于线程池设置大小的考虑
    【R语言】R包-探索ggtree进化树美化
    CTF-综合测试(高难度)【超详细】
    Linux的DNS域名解析服务
    自动驾驶轨迹规划之碰撞检测(四)
    Github或Gitlab等申请PR或MR(pull request & merge request)的时候如果不能自动合并代码发生冲突了要怎么办
    Vue实战篇三十三:实现新闻的浏览历史
  • 原文地址:https://blog.csdn.net/HH_beibei/article/details/127397309