当前位置:   article > 正文

Linux搭建常用服务器(文章持续更新!!涵盖常用的chrony、ssh、Telnet、httpd、nfs、DNS、selinux、firewall等)_linux服务器

linux服务器

第一章 例行性工作

1.1 单一执行的例行性工作

使用at命令来一次性执行例行性任务
一般情况下at是默认安装在系统中的

[root@server ~]# at -V
at version 3.1.23
  • 1
  • 2

at命令的相关参数:

-l      Is an alias for atq.#列出系统中所有用户的at命令
-d      deletes jobs, identified by their job number.#删除指定编号的任务
-v      Shows the time the job will be executed before  reading the job.#使用时间格式累出at任务
		Times  displayed  will  be  in  the format "Thu Feb 20 14:50:001997".
-c      cats the jobs listed on the  command  line  to  standard output#列出任务的命令内容
-f file Reads the job from file rather than standard input.#从文件读取
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

示例1 at命令演示

[root@server ~]# at 22:07
warning: commands will be executed using /bin/sh
at> ls /root >> at.txt
at> <EOT>
job 1 at Mon Aug 21 22:07:00 2023
[root@server ~]# at -l
1	Mon Aug 21 22:07:00 2023 a root
[root@server ~]# at -c 1
...
SSH_TTY=/dev/pts/0; export SSH_TTY
cd /root || {
	 echo 'Execution directory inaccessible' >&2
	 exit 1
}
${SHELL:-/bin/sh} << 'marcinDELIMITER5a2a43cb'
ls /root > at.txt

marcinDELIMITER5a2a43cb
[root@server ~]# cat at.txt 
anaconda-ks.cfg
at.txt
[root@server ~]# cat at.txt 
hello again
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
[root@server ~]# ls /etc/at.*
/etc/at.allow  /etc/at.deny
  • 1
  • 2

注意:at命令有黑/白名单,当两个名单重复则忽略黑名单,若两个文件不存在则只有root用户可用

1.2 循环执行的例行性工作

crontd服务
注意:

  • crontab命令有黑/白名单,当两个名单重复则忽略黑名单
  • crontab 执行的每一项工作都会被 记录到 /var/log/cron 这个日志文件中
  • 当用户使用 crontab 新建工作之后,该项工作就会被记录到 /var/spool/cron/目录里面

参数:

-u   只有root才能执行该任务 
-e   编辑crontab工作内容    
-l   查询crontab任务内容    
-r   删除cronatb任务
  • 1
  • 2
  • 3
  • 4

格式:

.---------------- minute (0 - 59)
|  .------------- hour (0 - 23)
|  |  .---------- day of month (1 - 31)
|  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
|  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
|  |  |  |  |
*  *  *  *  * user-name  command to be executed
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

特殊字符:

* 	  : 任意时刻
- 	  :表示范围
, 	  :分割时段
*/num :指定时间间隔频率
  • 1
  • 2
  • 3
  • 4

示例二:crontab演示

演示一:定时执行脚本
  • 编写脚本:
#!/bin/bash

while :
do
        echo "this is my test sh"$(date) >> /root/cro.txt
        sleep 1
done
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 设置周期计划任务
[root@server ~]# crontab -e(写入*/1 * * * * /bin/bash /root/test.sh)
crontab: no changes made to crontab
[root@server ~]# crontab -l
*/1 * * * * /bin/bash /root/test.sh
  • 1
  • 2
  • 3
  • 4
  • 查看文件
    在这里插入图片描述
  • 删除任务
[root@server ~]# crontab -r
[root@server ~]# crontab -l
no crontab for root
  • 1
  • 2
  • 3
  • 终止进程
[root@server ~]# ps -aux | grep test
root        2723  0.1  0.1 222516  3412 ?        Ss   23:14   0:00 /bin/bash /root/test.sh
[root@server ~]# kill -9 2723
  • 1
  • 2
  • 3
演示二:服务器通过邮件定时报告状态
  • 开启邮箱的pop3/SMTP服务并获取授权码
  • 安装邮件服务
yum install s-nail.x86_64 -y
  • 1
  • 配置邮件服务
在文件vim /etc/s-nail.rc中末尾添加
set  from=2300000080@qq.com
set  smtp=smtp.qq.com
set  smtp-auth-user=2300000080@qq.com
set  smtp-auth-password=tg************fd<<这是授权码
set  smtp-auth=login
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 设置周期的邮件服务告知服务器的内存信息
#测试每分钟发一次
[root@server ~]# crontab  -e
MAILTO=23*********80@qq.com

* * * * * free  |  mail  -v  -s  "告警邮件"  230000000080@qq.com
  • 1
  • 2
  • 3
  • 4
  • 5

在这里插入图片描述

  • 系统级别的定时任务需要编辑/etc/crontab文件来实现
    在这里插入图片描述
SHELL=/bin/bash#指定哪个shell解释器
PATH=/sbin:/bin:/usr/sbin:/usr/bin#系统执行命令的搜索路径
MAILTO=root#表示执行任务的信息通过邮件发送给谁
  • 1
  • 2
  • 3

第二章 chrony时间服务器

简介

NTP

  • NTP:(Network Time Protocol,网络时间协议)是由RFC 1305定义的时间同步协议,用来在分布式时间服务器和客户端之间进行时间同步。

  • NTP基于UDP报文进行传输,使用的UDP端口号为123

  • NTP可以对网络内所有具有时钟的设备进行时钟同步,使网络内所有设备的时钟保持一致,从而使设备能够提供基于统一时间的多种应用,对于运行NTP的本地系统,既可以接受来自其他时钟源的同步,又可以作为时钟源同步其他的时钟,并且可以和其他设备互相同步。

  • NTP的其精度在局域网内可达0.1ms,在互联网上绝大多数的地方其精度可以达到1-50ms
    Chrony

  • chrony是一个开源的自由软件,它能帮助你保持系统时钟与时钟服务器(NTP)同步,因此让你的时间保持精确。

  • chrony由两个程序组成,分别是chronyd和chronyc

    • chronyd:是一个后台运行的守护进程,用于调整内核中运行的系统时钟和时钟服务器同步。它确定计算机增减时间的比率,并对此进行补偿。
    • chronyc:提供了一个用户界面,用于监控性能并进行多样化的配置。它可以在chronyd实例控制的计算机上工作,也可以在一台不同的远程计算机上工作
  • 注意:Chrony与NTP都是时间同步软件,两个软件不能够同时开启,会出现时间冲突,RHEL9中默认使用chrony作为时间服务器,不在支持NTP软件包

2.1 配置服务端

  • 安装chrony
#安装chrony,一般默认就有
[root@server ~]# yum install chrony -y
  • 1
  • 2
  • 查看服务状态
    在这里插入图片描述
  • 配置文件解读
[root@server ~]# vim /etc/chrony.conf
# 配置时间服务器,以server开头,理论上添加多少时间服务器都可以。
server ntp1.aliyun.com iburst

# 根据实际时间计算出服务器增减时间的比率,然后记录到一个文件中,在系统重启后为系统做出最佳时间补偿调整
driftfile /var/lib/chrony/drift

#如果系统时钟的偏移量大于1秒,则允许系统时钟在前三次更新中步进。
makestep 1.0 3

# 将启用一个内核模式,在该模式中,系统时间每1分钟会拷贝到实时时钟(RTC)。
rtcsync

# 指定一台主机、子网,或者网络以允许或拒绝向自己同步时间
#allow 192.168.0.0/16
#deny 192.168/16
allow 192.168.0.0/16  允许该网段客户端来同步时间

# 当chrony服务器提供的时间不可用时,采用本地时间作为同步标准继续作为时间服务器让其他主机来同步时间
local stratum 10

# 指定包含NTP验证密钥的文件
keyfile /etc/chrony.keys

# 指定存放日志文件的目录
logdir /var/log/chrony

#选择日志文件要记录的信息
log measurements statistics tracking

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 修改/etc/chrony.conf文件,修改后使用systemctl restart chronyd命令重启服务
    在这里插入图片描述
修改第三行和第25行
 3 server  ntp.aliyun.com iburst#指定服务器
25 allow 192.168.110.0/24#允许哪个客户端访问
  • 1
  • 2
  • 3
  • 验证一下是否可用
    • 修改一个错误的时间
[root@server ~]# date -s "12:00:00 19970101"
1997年 01月 01日 星期三 12:00:00 CST
  • 1
  • 2
  • 使用chronyc sources -v来查看与阿里云时间服务器的连接情况
[root@server ~]# chronyc  sources  -V
MS Name/IP address         Stratum Poll Reach LastRx Last sample               
===============================================================================
^* 203.107.6.88                  2   6   377    44  -1654us[-2677us] +/-   29ms
  • 1
  • 2
  • 3
  • 4
  • 使用chronyc -a makestep强制进行时间跳跃到ntp服务器的时间并用timedatectl status查看同步状态
[root@server ~]# chronyc -a makestep
200 OK
[root@server ~]# timedatectl set-ntp true
[root@server ~]# timedatectl status
               Local time: 二 2023-08-22 00:28:57 CST
           Universal time: 一 2023-08-21 16:28:57 UTC
                 RTC time: 一 2023-08-21 16:28:57
                Time zone: Asia/Shanghai (CST, +0800)
System clock synchronized: yes     <<<<<表示已经同步
              NTP service: active
          RTC in local TZ: no
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

此时服务器端配置完成

2.2 配置客户端

客户端同样安装软件

  • 修改配置文件/etc/chrony.conf
3 server 192.168.110.131 iburst
  • 1
  • 查看状态
[root@node1 ~]# chronyc sources -V
MS Name/IP address         Stratum Poll Reach LastRx Last sample               
===============================================================================
^* 192.168.110.131               3   6     7     1  +7272ns[-9350us] +/-   31ms
[root@node1 ~]# timedatectl status
               Local time: 二 2023-08-22 00:50:52 CST
           Universal time: 一 2023-08-21 16:50:52 UTC
                 RTC time: 一 2023-08-21 16:50:52
                Time zone: Asia/Shanghai (CST, +0800)
System clock synchronized: yes
              NTP service: active
          RTC in local TZ: no
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

配置成功,同步完成了

第三章远程连接服务器

3.1 telnet服务器

不安全的远程连接

#安装
yum install telnet-server.x86_64 -y
#启动
systemctl start telnet.socket
  • 1
  • 2
  • 3
  • 4

使用Xshell进行telnet连接,并抓包查看明文传输
在这里插入图片描述

3.2 ssh服务器

简介

SSH工作过程:

  • 服务端与客户端要经历如下五个阶段:
过程说明
版本号协商阶段SSH目前包括SSH1和SSH2两个版本,双方通过版本协商确定使用的版本
**密钥和算法协商阶段 **SSH支持多种加密算法,双方根据本端和对端支持的算法,协商出最终使用的算法
认证阶段SSH客户端向服务器端发起认证请求,服务器端对客户端进行认证
会话请求阶段认证通过后,客户端向服务器端发送会话请求
交互会话阶段会话请求通过后,服务器端和客户端进行信息的交互

版本协商阶段

  • 服务器端打开端口22,等待客户端连接;

  • 客户端向服务器端发起TCP初始连接请求,TCP连接建立后,服务器向客户端发送第一个报文,包括版本标志字符串,格式为SSH-<主协议版本号>.<次协议版本号>.<软件版本号>,协议版本号由主版本号和次版本号组成,软件版本号主要是为调试使用。

  • 客户端收到报文后,解析该数据包,如果服务器的协议版本号比自己的低,且客户端能支持服务器端的低版本,就使用服务器端的低版本协议号,否则使用自己的协议版本号。

  • 客户端回应服务器一个报文,包含了客户端决定使用的协议版本号。服务器比较客户端发来的版本号,决定是否能同客户端一起工作。如果协商成功,则进入密钥和算法协商阶段,否则服务器断开TCP连接

  • 注意:上述报文都是采用明文方式传输

密钥和算法协商阶段

  • 服务器端和客户端分别发送算法协商报文给对端,报文中包含自己支持的公钥算法列表、加密算法列表、MAC(Message Authentication Code,消息验证码)算法列表、压缩算法列表等等

  • 服务器端和客户端根据对端和本端支持的算法列表得出最终使用的算法

  • 服务器端和客户端利用DH交换(Diffie-Hellman Exchange)算法、主机密钥对等参数,生成会话密钥和会话ID。

  • 由此,服务器端和客户端就取得了相同的会话密钥和会话ID。对于后续传输的数据,两端都会使用会话密钥进行加密和解密,保证了数据传送的安全。在认证阶段,两端会使用会话用于认证过程

  • 会话密钥的生成:

    • 客户端需要使用适当的客户端程序来请求连接服务器,服务器将服务器的公钥发送给客户端。(服务器的公钥产生过程:服务器每次启动sshd服务时,该服务会主动去找/etc/ssh/ssh_host*文件,若系统刚装完,由于没有这些公钥文件,因此sshd会主动去计算出这些需要的公钥文件,同时也会计算出服务器自己所需要的私钥文件)。
    • 服务器生成会话ID,并将会话ID发给客户端。
    • 若客户端第一次连接到此服务器,则会将服务器的公钥数据记录到客户端的用户主目录内的~/.ssh/known_hosts。若是已经记录过该服务器的公钥数据,则客户端会去比对此次接收到的与之前的记录是否有差异。客户端生成会话密钥,并用服务器的公钥加密后,发送给服务器。
    • 服务器用自己的私钥将收到的数据解密,获得会话密钥。
    • 服务器和客户端都知道了会话密钥,以后的传输都将被会话密钥加密

认证阶段(两种认证方法):

  • 基于口令的认证(password认证):客户端向服务器发出password认证请求,将用户名和密码加密后发送给服务器,服务器将该信息解密后得到用户名和密码的明文,与设备上保存的用户名和密码进行比较,并返回认证成功或失败消息。

  • 基于密钥的认证(publickey认证):

    • 客户端产生一对公共密钥,将公钥保存到将要登录的服务器上的那个账号的家目录的 .ssh/authorized_keys 文件中**
    • 认证阶段:客户端首先将公钥传给服务器端。服务器端收到公钥后会与本地该账号家目录下的authorized_keys中的公钥进行对比,如果不相同,则认证失败;否则服务端生成一段随机字符串,并先后用客户端公钥和会话密钥对其加密,发送给客户端。客户端收到后将解密后的随机字符串用会话密钥发送给服务器。如果发回的字符串与服务器端之前生成的一样,则认证通过,否则,认证失败。
  • 注:服务器端对客户端进行认证,如果认证失败,则向客户端发送认证失败消息,其中包含可以再次认证的方法列表。客户端从认证方法列表中选取一种认证方法再次进行认证,该过程反复进行。直到认证成功或者认证次数达到上限,服务器关闭连接为止
    ssh服务系统默认自带
    安装:yum install openssh-server

配置ssh免密登录

  • 服务端创建redhat用户,并设置密码
[root@server ~]# useradd redhat
[root@server ~]# passwd redhat 
更改用户 redhat 的密码 。
新的密码: 
无效的密码: 密码少于 8 个字符
重新输入新的密码: 
passwd:所有的身份验证令牌已经成功更新。
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 客户端生成公私钥对,上传给服务器的redhat用户
[root@node1 ~]# ssh-keygen   -t   rsa   #<<不输东西,一路回车
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /root/.ssh/id_rsa
Your public key has been saved in /root/.ssh/id_rsa.pub
The key fingerprint is:
SHA256:EJhw9eo6zukZmrZ7aT+U0IAg04KYwmpryCbs+f31G5o root@node1
The key‘s randomart image is:
+---[RSA 3072]----+
|B+.o.+o          |
|Boo.+  o         |
|o.   o. .        |
|..  . .o         |
|= .  ...S        |
|o*   .o          |
|= . .o.  . .     |
| o.+*=. . + .    |
| .*OB+oo E o.    |
+----[SHA256]-----+
#将公钥上传给server的redhat用户
[root@node1 ~]# ssh-copy-id redhat@192.168.110.131
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"
The authenticity of host '192.168.110.131 (192.168.110.131)' can’t be established.
ED25519 key fingerprint is SHA256:iPPpVwQBFSX//xH3pUjZVklEVPozcl+iv4mX1Tb3gZs.
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes <<这里输yes
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
redhat@192.168.110.131’s password: <<<这里密码不回显

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh 'redhat@192.168.110.131'"
and check to make sure that only the key(s) you wanted were added.
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 测试
    在这里插入图片描述
    此时可通过redhat账户进行免密登录

第四章 WEB服务器

4.1 www简介

  • Web网络服务也叫WWW(World Wide Web 全球信息广播)万维网服务,一般是指能够让用户通过浏览器访问到互联网中文档等资源的服务

  • Web 网络服务是一种被动访问的服务程序,即只有接收到互联网中其他主机发出的请求后才会响应,最终用于提供服务程序的 Web 服务器会通过 HTTP(超文本传输协议)或HTTPS(安全超文本传输协议)把请求的内容传送给用户

4.2 服务器主机

  • 网站是由域名、网页源程序和主机空间组成的,其中主机空间则是用于存放网页源代码并能够将网页内容展示给用户,虽然本小节与Apache服务没有直接关系,但如果您想要在互联网中搭建网站并被顺利访问,主机空间一定不能选错

  • 虚拟主机:在一台服务器中分出一定的磁盘空间供用户放置网站、存放数据等,仅提供基础的网站访问、数据存放与传输流量功能,能够极大的降低用户费用,也几乎不需要管理员维护除网站数据以外的服务,适合小型网站

  • VPS(Virtual Private Server):在一台服务器中利用OpenVZ、Xen或KVM等虚拟化技术模拟出多个“主机”,每个主机都有独立的IP地址、操作系统,实现不同VPS之间磁盘空间、内存、CPU资源、进程与系统配置间的完全隔离,管理员可自由使用分配到的主机中的所有资源,所以需要有一定的维护系统的能力,适合小型网站

  • 云服务器(ECS):是一种整合了计算、存储、网络,能够做到弹性伸缩的计算服务,其使用起来与VPS几乎一样,但差别是云服务器建立在一组集群服务器中,每个服务器都会保存一个主机的镜像(备份),大大的提升了安全稳定性,另外还具备了灵活性与扩展性,用户只需按使用量付费的即可,适合大中小型网站。

  • 独立服务器:这台服务器仅提供给您使用,详细来讲又可以区分为租用方式与托管方式

    • 租用方式:用户只需将硬件配置要求告知IDC服务商,服务器硬件设备由机房负责维护,运维管理员一般需要自行安装相应的软件并部署网站服务,租期可以为月、季、年,减轻了用户初期对硬件设备的投入,适合大中型网站。
    • 托管方式:用户需要自行购置服务器后交给IDC服务供应商的机房进行管理(缴纳管理服务费用),用户对服务器硬件配置有完全的控制权,自主性强,但需要自行维护、修理服务器硬件设备,适合大中型网站。

4.3 网址及HTTP简介

  • web服务器提供的这些数据大部分都是文件,那么我们需要在服务器端先将数据文件写好,并且放置在某个特殊的目录下面,这个目录就是我们整个网站的首页,在redhat中,这个目录默认在 /var/www/html
  • 浏览器是通过你在地址栏中输入你所需要的网址来取得这个目录的数据的

URL

  • Uniform Resource Locator,统一资源定位符,对可以从互联网上得到的资源的位置和访问方法的一种简洁的表示,是互联网上标准资源的地址
  • 网址格式:<协议>://<主机或主机名>[:port]/<目录资源,路径>**
  • 协议::http、https、ftp等
  • 主机地址或者主机名:主机地址就是服务器在因特网所在的IP地址。如果是主机名的话,那么就需要域名解析了
  • 端口号(port):http为80,https为443 (IANA:互联网数字分配机构)
    • 0-1023:永久地分配给固定的应用程序使用
    • 1024-41951:注册端口,但要求不是特别严格,分配给程序注册为某应用使用
    • 41952-60000:客户端程序随机使用的端口,动态端口,或私有端口

http请求方法:

  • 在http通信中,每个http请求报文都包含一个方法,用以告诉web服务器端需要执行哪些具体的动作,这些动作包括:获取指定web页面、提交内容到服务器、删除服务器上资源文件等。
  • 状态代码:由三位数字组成,第一个数字定义了响应的类别,且有五种可能取值
  • 1xx:指示信息 —— 表示请求已接收,继续处理
  • 2xx:成功 —— 表示请求已被成功接收、理解、接
  • 3xx:重定向 —— 要完成请求必须进行更进一步的操作
  • 4xx:客户端错误 —— 请求有语法错误或请求无法实现
    0n - 5xx:服务器端错误 —— 服务器未能实现合法的请求
  • 常见状态代码、状态描述的说明如下:
    • 200 OK:客户端请求成功
    • 400 Bad Request:客户端请求有语法错误,不能被服务器所理解
    • 401 Unauthorized:请求未经授权,这个状态代码必须和 WWW-Authenticate 报头域一起使用
    • 403 Forbidden:服务器收到请求,但是拒绝提供服务
    • 404 Not Found:请求资源不存在,举个例子:输入了错误的URL
    • 500 Internal Server Error:服务器发生不可预期的错误
    • 503 Server Unavailable:服务器当前不能处理客户端的请求,一段时间后可能恢复正常

HTTP协议请求的工作流程:

  • 终端客户在web浏览器地址栏输入访问地址:
    http://www.ceshi.com:80/index.html

  • web浏览器请求DNS服务器把域名www.ceshi.com解析成web服务器的IP地址

  • web浏览器将端口号(默认是80)从访问地址(URL)中解析出来

  • web浏览器通过解析后的ip地址及端口号与web服务器之间建立一条TCP连接

  • 建立TCP连接后,web浏览器向web服务器发送一条HTTP请求报文

  • web服务器响应并读取浏览器的请求信息,然后返回一条HTTP响应报文。

  • web服务器关闭HTTP连接,关闭TCP连接,web浏览器显示访问的网站内容到屏幕上

4.4 www服务器的类型

静态网站

  • 仅提供用户浏览的单向静态网页,单纯是由服务器单向提供数据给客户端,Server不需要与client端有互动,可以浏览网站,但是无法数据上传。

动态网站

  • 该站可以让服务器与用户互动,常见的例如留言板,博客。这种类型的网站需要通过“网页程序语言”来实现与用户互动的行为。常见的例如:PHP网页程序语言,配合数据库系统来进行数据的读、写。当你在向服务器请求数据时,其实是通过服务器端同一个网页程序在负责将数据读出或写入数据库,变动的是数据库的内容,网页程序并没有任何改变。

  • 另外一种交互式的动态网页主要是在客户端实现。服务端将可执行的程序代码(JavaScript)传送给客户端,客户端的浏览器如果提供JavaScript的功能,那么该程序就可以在客户端的计算机上面工作了;另外一种可在客户端执行的就是flash动画格式,在这种动画格式内还可以进行程序设计

  • 搭建动态网站的需求:LAMP(Linux+Apache+MySQL+PHP)

    • Apache主要提供www的服务器平台
    • MySQL:传统的文件读取是很麻烦的,如果只要读取该文件当中的一小部分,系统还是会将整个文件读出来,若多个用户同时读取同一个文件时,那就会造成效率与系统上的问题,所以才会有数据库系统的推出。数据库其实是一种特殊格式的文件,这种文件要通过特殊接口(数据库软件)来进行读写。由于这个特殊接口已经针对数据的查询、写入做过优化设计,因此很适合多人同时写入与查询工作。
    • PHP:PHP可以被用来建立动态网页,PHP程序代码可以直接在HTML网页当中嵌入,就像编辑HTML网页一样简单。PHP是一种“程序语言”,这种程序语言可以直接在网页当中编写,不需要经过编译即可执行。

4.5 实验一:快速建站

httpd的配置目录

/etc/httpd   # 主配置文件所在目录

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

/var/www/html/  # 存储默认网页的目录

/var/log/httpd/  # 存储网站访问日志及错误日志的目录
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

httpd的主配置文件

34 ServerRoot "/etc/httpd"#服务目录
47 Listen 80#监听端口
61 Include conf.modules.d/*.conf#额外的配置文件
71 User apache#运行服务的用户
72 Group apache#运行服务的组
91 ServerAdmin root@localhost#管理员邮箱
100 ServerName www.example.com:80#域名和端口号
107 <Directory />#该字段设置目录权限
108     AllowOverride none#不允许覆盖
109     Require all denied/granted#禁止/允许所有来源访问文件或目录
110 </Directory>
124 DocumentRoot "/var/www/html"#*网页存放的默认目录*
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

第一步:下载httpd,启动服务器

[root@leqingserver ~]# yum install httpd -y
[root@leqingserver ~]# systemctl start httpd
  • 1
  • 2

第二步:写一个网页,重启服务并访问

[root@leqingserver ~]# echo "welcome to myblog" > /var/www/html/index.html 
[root@leqingserver ~]# systemctl restart httpd
  • 1
  • 2

第三步:输入服务器IP访问
在这里插入图片描述
把网页放在默认的目录是不安全的,接下来尝试更改一下配置文件来让网页换一个目录存放
1.创建一个目录,并给这个目录里面放一个网页文件

[root@leqingserver ~]# mkdir /web1
[root@leqingserver ~]# ls /web1/
index.html
  • 1
  • 2
  • 3

2.修改主配置文件,重启服务并测试

DocumentRoot "/web1"
<Directory "/web1">
	AllowOverride None
    Require all granted
 </Directory>
[root@leqingserver ~]# systemctl restart httpd
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

在这里插入图片描述

4.6 实验二:区分用户和端口的网站

  1. 编辑用户配置文件
[root@leqingserver ~]# vim /etc/httpd/conf.d/userdir.conf
17     #UserDir disabled#将这行注释掉开启用户主页功能
24     UserDir public_html#去掉这行的注释,启动用户的默认目录
  • 1
  • 2
  • 3
  1. 新建账户设置权限
[root@leqingserver ~]# useradd andy
[root@leqingserver ~]# passwd andy
Changing password for user andy.
New password: 
BAD PASSWORD: The password is shorter than 8 characters
Retype new password: #123456
passwd: all authentication tokens updated successfully.
[root@leqingserver ~]# useradd jenny
[root@leqingserver ~]# passwd jenny
Changing password for user jenny.
New password: #654321
BAD PASSWORD: The password is shorter than 8 characters
Retype new password: 
passwd: all authentication tokens updated successfully.
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  1. 切换账户设置目录和权限
[root@leqingserver ~]# su andy
[andy@leqingserver root]$ cd /home/andy/
[andy@leqingserver ~]$ mkdir public_html
[andy@leqingserver ~]$ cd public_html/
[andy@leqingserver public_html]$ echo "andy" > index.html
[andy@leqingserver public_html]$ ls
index.html
[andy@leqingserver public_html]$ cd ~
[andy@leqingserver ~]$ chmod -Rf 755 /home/andy/
[andy@leqingserver ~]$ ll
total 0
drwxr-xr-x. 2 andy andy 24 Aug 24 17:06 public_html
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
[andy@leqingserver ~]$ su jenny
Password: 
[jenny@leqingserver andy]$ cd /home/jenny/
[jenny@leqingserver ~]$ mkdir public_html
[jenny@leqingserver ~]$ cd public_html/
[jenny@leqingserver public_html]$ echo "jenny" > index.html 
[jenny@leqingserver public_html]$ ls
index.html
[jenny@leqingserver public_html]$ cd ~
[jenny@leqingserver ~]$ chmod -Rf 755 /home/jenny/
[jenny@leqingserver ~]$ ll
total 0
drwxr-xr-x. 2 jenny jenny 24 Aug 24 17:08 public_html
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  1. 重启httpd并测试
    在这里插入图片描述
    在这里插入图片描述
    5.给这两个账户加上访问密码
[root@leqingserver ~]# htpasswd -c /etc/httpd/passwd andy
New password: 
Re-type new password: 
Adding password for user andy
[root@leqingserver ~]# htpasswd  /etc/httpd/passwd jenny
New password: 
Re-type new password: 
Adding password for user jenny
[root@leqingserver ~]# vim /etc/httpd/conf.d/userdir.conf
<directory  "/home/andy/public_html">
        authuserfile  "/etc/httpd/passwd"
        authname    "My  privately"
        authtype    basic
        require  user  andy
</directory>

<directory  "/home/jenny/public_html">
        authuserfile  "/etc/httpd/passwd"
        authname    "My  privately"
        authtype    basic
        require  user  jenny
</directory>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22

测试
在这里插入图片描述
在这里插入图片描述

4.7 实验三:综合项目,搭建一个公司网站

这里出现的域名均为虚构域名,无法在公网访问使用虚拟机进行测试

  1. 安装软件和配置域名解析
#安装软件
yum install httpd mod_ssl -y
#本地域名映射
vim /etc/hosts
192.168.110.131 www.open.com
  • 1
  • 2
  • 3
  • 4
  • 5
  1. 创建主站目录
mkdir -p /www/open
echo 'welcome to open.com' > /www/open/index.html
ls /www/open/
index.html
  • 1
  • 2
  • 3
  • 4
  1. 编辑主配置文件
[root@server ~]# vim /etc/httpd/conf/httpd.conf 
<virtualhost 192.168.110.131>
        documentroot /www/open
        servername 'www.open.com'
        <directory /www/open>
                allowoverride none
                require all granted
        </directory>
</virtualhost>
[root@server ~]# systemctl restart httpd
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

在这里插入图片描述

  1. 创建并编辑子站-教学资料的配置
[root@server ~]# mkdir -p /www/open/data
[root@server ~]# echo 'data' > /www/open/data/index.html
#编辑配置文件
<virtualhost 192.168.110.131>
        documentroot /www/open/data
        alias /data /www/open/data
        servername 'www.open.com'
        <directory /www/open/data>
                allowoverride none
                require all granted
        </directory>
</virtualhost>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

在这里插入图片描述

  1. 创建子站学生信息,只允许学生密码访问
#创建目录和学生用户
[root@server ~]# mkdir -p /www/open/student
[root@server ~]# echo 'student' >/www/open/student/index.html
[root@server ~]# ls /www/open/student/
index.html
[root@server ~]# useradd song
[root@server ~]# passwd song 
更改用户 song 的密码 。
新的密码: 
无效的密码: 密码少于 8 个字符
重新输入新的密码: 
passwd:所有的身份验证令牌已经成功更新。
[root@server ~]# useradd tian
[root@server ~]# passwd tian 
更改用户 tian 的密码 。
新的密码: 
无效的密码: 密码少于 8 个字符
重新输入新的密码: 
passwd:所有的身份验证令牌已经成功更新。
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

设置网页的密码验证:

[root@server ~]# htpasswd -c /etc/httpd/passwd song
New password: 
Re-type new password: 
Adding password for user song
[root@server ~]# htpasswd  /etc/httpd/passwd tian
New password: 
Re-type new password: 
Adding password for user tian
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
[root@server ~]# vim /etc/httpd/conf/httpd.conf
<directory /www/open/student>
        authuserfile /etc/httpd/passwd
        authname 'student'
        authtype basic
        require  user song tian
</directory>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

重启验证:
在这里插入图片描述
在这里插入图片描述

  1. 创建加密的学生缴费子站
[root@server ~]# mkdir -p /www/open/money
[root@server ~]# echo 'money' > /www/open/money/index.html 
#创建私钥
[root@server ~]# openssl genrsa -aes128 2048 > /etc/pki/tls/private/money.key
Enter PEM pass phrase:
Verifying - Enter PEM pass phrase:
#创建证书    
[root@server ~]# openssl req -utf8 -new -key /etc/pki/tls/private/money.key -x509 -days 365 -out  /etc/pki/tls/certs/money.crt
Enter pass phrase for /etc/pki/tls/private/money.key:
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [XX]:86#国家
State or Province Name (full name) []:shanxi#省份
Locality Name (eg, city) [Default City]:xianggang#城市
Organization Name (eg, company) [Default Company Ltd]:open#公司
Organizational Unit Name (eg, section) []:money#部门
Common Name (eg, your name or your server's hostname) []:server#主机名
Email Address []:123@qq.com#管理员邮箱
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23

编写主配置文件vim /etc/httpd/conf/httpd.conf

<virtualhost 192.168.110.131:443>
        sslengine on
        SSLCertificatefile /etc/pki/tls/certs/money.crt
        sslcertificatekeyfile  /etc/pki/tls/private/money.key
        documentroot /www/open
        alias /money /www/open/money
        servername 'www.open.com'
        <directory /www/open/money>
                allowoverride none
                require all granted
        </directory>
</virtualhost>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
[root@server ~]# systemctl restart httpd
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/76470
推荐阅读
相关标签