0%

Linux_(六)-课设

服务器端应用部署与项目发布

任务描述:

\1. 选择服务器:自建服务器或选择一个可靠的服务器供应商,比如 AWS、阿里云、腾讯云等。

\2. 部署环境:在服务器上搭建部署环境,包括选择操作系统、安装必要的软件包和库、配置防火墙和域名解析等。

\3. 负载均衡:使用负载均衡技术,可以将请求分发到多个服务器上,提高系统的并发处理能力和可靠性。

\4. 备份和恢复:定期备份数据,确保数据不会丢失,在发生故障时可以快速恢复。

备注:

可以使用自动化部署工具,如 Jenkins、GitLab CI/CD 等,可以简化部署流程;或者用容器化技术,如 Docker、Kubernetes 等

1、选择服务器:使用的centos7.6系统

2、连接服务器,通过sudo su root切换为root用户
img

3、配置Apache服务

(1) 检查是否安装过apache服务
yum info http
img

(2) 安装apache服务
yum install -y httpd
img

(3) 启动apache服务
systemctl start httpd
将apache设置为开机自启动
systemctl enable httpd
img

(4) 查看apache服务的运行状态
systemctl status httpd
img
返回信息中出现active (running)表示正在运行

(5) 在本地主机,通过浏览器访问轻量应用服务器公网IP,测试访问Apache服务的展示页。
轻量应用服务器公网IP获取步骤如下:

① 返回轻量应用服务器管理控制台。

② 在****服务器列表*页面,单击指定服务器,进入服务器的*概览****页面。

③ 在****服务器信息区域****,查看轻量应用服务器公网IP
img

④ Apache页面的展示结果为:
img

4、安装jdk

(1) 查找对应的jdk
yum search java | grep 1.8
img

(2) 安装jdk
yum install java-1.8.0-openjdk-devel.x86_64
img

5、安装tomcat

(1) 从镜像源下载
wget https://mirrors.aliyun.com/apache/tomcat/tomcat-9/v9.0.76/bin/apache-tomcat-9.0.76.tar.gz img

(2) 解压缩tomcat压缩包
tar -zxvf apache-tomcat-9.0.76.tar.gz
img

(3) 进入tomcat的bin文件夹判断是否安装成功
cd apache-tomcat-9.0.76/bin
./startup.sh
img

6、安装nginx

(1) 安装依赖
yum -y install gcc pcre-devel zlib-devel openssl openssl-devel
img

(2) 下载压缩包
wget http://nginx.org/download/nginx-1.20.2.tar.gz
img

(3) 解压缩
解压: tar -zxvf nginx-1.20.2.tar.gz
img

(4) 进入nginx-1.20.2的目录下
cd nginx-1.20.2
./configure –prefix=/usr/local/nginx
img

(5) 安装
make
img
make install
img

(6) 启动

① 进入对应的文件夹
cd /usr/local/nginx/sbin
./nginx 启动
./nginx -s stop 关闭
./nginx -s reload 重新加载
img

7、开启防火墙
如果真机不成功, 可以开放防火墙80 端口,或关闭防火墙,测试
systemctl stop firewalld
—————————————-
systemctl start firewalld
firewall-cmd –zone=public –add-port=80/tcp –permanent
firewall-cmd –reload
如果端口被占用. 查看80
netstat -anp |grep :80 ,也可以用ps aux 查看
netstat 不存在 ,则安装 yum install net-tools 即可。
img

8、负载均衡

机器名 服务器IP 用途
主服务器 192.168.152.129 负载均衡服务器
服务器1 192.168.152.130 后端服务器
服务器2 192.168.152.131 后端服务器

(1) 设置防火墙 三台虚拟机都要设置
firewall-cmd –zone=public –add-port=80/tcp –permanent
systemctl restart firewalld.service
关闭selinux: vi /etc/selinux/config
修改配置文件:将selinux=enforcing改为Disabled
弄好后重启虚拟机,查看后出现Disabled
getenforce #查看selinux状态
或者临时关闭(不用重启机器):setenforce 0

(2) 轮询模式负载均衡

① 打开nginx(负载负载均衡)主虚拟机
编辑配置文件

  1. 进入文件夹
    cd /usr/local/nginx/conf

  2. 备份一个配置文件,防止配置错误可重新配置
    cp nginx.conf nginx.conf.bak

  3. 编辑文件
    vi nginx.conf

a. 在http{}模块里添加以下内容
upstream webServer {
server 192.168.152.130:80; #服务器1
server 192.168.152.131:80; #服务器2
}
server{
listen 80;
server_name 192.168.152.129;
location / {
index index.html index htm;
proxy_pass http://webServer; # webServer和upstream的webServer名字一致
}
}

b. 检查语法并重启

a) 检查语法
/usr/local/nginx/sbin/nginx -t

b) 重启
/usr/local/nginx/sbin/nginx -s reload
img

② 配置服务器1

  1. 进入文件夹
    cd /usr/local/nginx/html/

  2. 备份
    cp index.html index.html.bak

  3. 修改
    vi index.html #清空里面的所有配置
    添加下面的语句
    Welcome to server 1

  4. 保存退出

a) 检查语法
/usr/local/nginx/sbin/nginx -t

b) 重启
/usr/local/nginx/sbin/nginx -s reload

  1. 浏览器访问
    img

③ 配置服务器2

  1. 进入文件夹
    cd /usr/local/nginx/html/

  2. 备份
    cp index.html index.html.bak

  3. 修改
    vi index.html #清空里面的所有配置
    添加下面的语句
    Welcome to server 2

  4. 保存退出

a) 检查语法
/usr/local/nginx/sbin/nginx -t

b) 重启
/usr/local/nginx/sbin/nginx -s reload

  1. 浏览器访问

④ 结果
两个服务器轮流进行处置请求
img

\5. 备份和恢复:定期备份数据,确保数据不会丢失,在发生故障时可以快速恢复。

(1) tar命令备份
特点:保留权限
备份整个目录
可以选择不同的压缩方式

① 备份过程

  1. Root权限登录,进入根目录
    cd /

  2. 执行完整的备份命令
    tar cvpzf backup.tgz / –exclude=/proc –exclude=/lost+found –exclude=/mnt –exclude=/sys –exclude=backup.tgz
    解释:tar 是用于打包文件的命令。
    cvpfz 是tar的选项,分别是“创建档案文件”、“保持权限”(保留所有东西原来的权限)、“使用gzip来减小文件尺寸”。
    Backup.gz 是我们作为备份文件的文件名。
    “/” 是我们要备份的目录,/代表的是整个文件系统
    exclude 给出的排除在外,不需要备份的目录

② 备份完成演示
img

(2) 恢复
恢复系统其实非常简单,就是把之前打包的文件覆盖回去就是了。
首先登陆为root用户,然后把之前备份的文件“backup.tgz”拷贝到分区的根目录下。
Linux中可以在一个运行的系统中恢复系统,不需要用boot-cd来专门引导。当然如果系统已经无法启动, 那就只能先重装一下系统,再来恢复。

① tar恢复
使用下面的命令来恢复系统
tar xvpfz backup.tgz -C /

② Bzip2压缩备份恢复
如果备份文件是使用Bzip2压缩的,那就用:
tar xvpfj backup.tar.bz2 -C /

日志文件处理与数据提取

任务描述:

在部署完成后,需要对系统进行监控和日志记录,及时发现和解决问题。服务器日志文件处理是指对服务器上产生的各种日志文件进行收集、存储、分析和归档等操作。

*日志作用:*

日志文件用于记录linux系统的各种运行信息的文件,相当于linux主机的日记,不同的日志文件记载了不同类型的信息,如Linux内核消息、用户登录事件、程序错误等。. 日志文件对于诊断和解决问题很有帮助,因为linux运行的程序通常把系统的消息和错误写入对应的日志文件,这样系统可以有据可查, 此外,当主机遭受攻击时,日志文件还可以帮助寻找攻击者留下的痕迹。

*日志分类:*

1. ****内核及系统日志:****由系统服务rsyslog统一管理,配置文件在/etc/rsyslog.conf

2. ****用户日志****:记录Linux系统用户登录及退出系统的相关信息,包括用户名、登录终端,登录时间、操作等。

3. ****程序旧志****:有些应用程序会选择独立管理一份日志文件,用于记录本程序运行过程中的各种事件信息。

*日志位置:*

Linux系统本身和大部分服务器程序的日志文件默认放在/var/log/下。

/var/log/message 内核消息及各种应用程序的公共日志信息,包括启动、I/O错误、 网络错误、

/var/log/cron Crond周期性计划任务产生的时间信息

/var/log/dmesg 弓|导过程中的各种时间信息

/var/log/ maillog 进入或发出系统的电子邮件活动

/var/log/lastlog 每个用户最近的登录事件

/var/log/secure 用户认证相关的安全事件信息

/var/log/wtmp 每个用户登录注销及系统启动和停机事件

/var/log/btmp 失败的、错误的登录尝试及验证事件

下面是几个常见的服务器日志文件处理步骤:

\1. 收集:通过服务器上运行的应用程序、操作系统或其他工具自动或手动收集日志文件。

(1) 日志等级一定要规范

(2) error日志内容一定要详实 ,info日志要简洁易懂

(3) error日志一定是全局统一收集的

\2. 存储:将收集到的日志文件保存在本地计算机或远程服务器上的文件系统中,也可以使用云存储。
日志存储基本都是按照时间顺序进行保存的,但也有一定的要求

(1) 单个文件的大小要控制
处理问题时主要关注的是最近的日志,控制单个日志的大小,对日志的性能和后期的运维是非常有利的

(2) 日志要便于浏览

(3) 日志的安全性要得到保障

(4) 日志要定时清理

\3. 分析:通过分析日志文件,获得对服务器性能的反馈,以及检测安全事件、错误等问题。分析可以手动或自动处理

(1) :内核及大多数系统消息 内核及系统日志主要由默认安装的rsyslog软件包提供, rsyslog服务所使用的配置文件为/etc/rsyslog.conf ,通过查看配置文件内容可以了解到系统默认的日志位置。
img
可以看出大部分文件存放到公共日志文件/var/log/message中,其他的直接发送给用户或独立的日志文件中

(2) 查看/var/log/messages日志信息
img

\4. 归档:对于长期存储的日志文件,需要进行归档处理,以便后续读取或查询。

(1) chattr +a日志文件, a选项为append (追加) only ,即给日志文件加上a权限后,将只可以追加,不可以删除和修改之前的内容。
img

Linux进程管理及定时任务

任务描述:

进程是操作系统资源分配的基本单位,是运行中的程序实例。Linux系统中,可以使用一些命令来管理进程,本部分可以介绍几个常用的命令。

定时任务是操作系统中按照一定时间间隔执行特定任务的机制。在Linux系统中,可以使用crontab命令来配置定时任务

一、常用命令

1.静态显示系统进程信息

(1)ps //显示当前用户进程
img

ps -aux //显示所有进程信息**
** img**
**USER 进程的启动用户

PID 进程号(进程的唯一标识)

%CPU 占CPU的百分比

%MEM 占用内存百分比

VSZ 占用的虚拟内存大小

RSS 占用的物理内存大小

TTY 进程的工作终端(?表示没有终端)

STAT 进程的状态:
R: 正在执行中 S: 休眠静止状态 T: 暂停执行 Z:僵死状态

Time 占用的cpu的时间

Command 运行的程序

2、动态显示系统进程信息

使用top命令,实时显示系统各个进程的资源占用情况。说明输出信息中列的含意。

在top基本视图中,按h键进入另一个视图。

在top基本视图中,按f键进入另一个视图,在这里可以编辑基本视图中的显示字段。

在top基本视图中,按c键进入另一个视图,可以显示进程的路径。

在top基本视图中,按k键,可以在不退出top命令的情况下杀死某个正在运行的进程。

在top基本视图中,按b键,高亮显示当前正在运行的进程
img

3、Kill:终止正在运行的进程或作业

img

4、Killall:功能:终止指定程序名的所有进程

下载killall

img

img

5、Jobs:功能:显示当前所有作业
img

6、Fg:把后台的作业调入前台运行
img

7、Bg:将前台作业或进程切换到后台运行
img

8、Nice:指定将启动进程的优先级。

img

9、Renice:修改运行中的进程的优先级

img

二、设置定时任务

1.任务名称
Cron应用:每周2,4,6早上3点启动系统

2.任务操作

img

分钟、小时、月内的第几天、月份、每周的第几天

img

img

父子进程与C程序编译

任务描述:

父子进程是指在操作系统中,一个进程创建的子进程。简述Linux中如何创建子进程,请使用C语言完成该功能,并进行编译

一、父子进程

1.使用fork创建子进程,功能是:
父进程输出main,子进程输出child
使用gcc编译,并运行

2.注意事项

(1)查看一个函数功能的方法:man fork

(2)需要包含的头文件:#include <unistd.h>

(3)fork返回值

a.成功时,父进程返回子进程的进程ID号;子进程返回0。

b.失败时,父进程返回-1,子进程创建失败。

二、实验结果

没有sleep(1);
imgimg

有sleep(1);

img

img

Shell编程综合应用

任务描述:

Shell编程的好处是它可以快速编写简单的脚本,使得可以在命令行中完成更多的任务,而不需要在每个命令之间反复输入参数和控制流程。

Shell编程是一种非常实用的技能,可以用于编写各种类型的脚本,包括系统管理脚本、数据处理脚本、网络管理脚本等。

本部分可先介绍shell程序设计的基本语法。

然后,尝试完成如2个数字求和、批量创建用户、批量复制文件等功能。

一、基本语法

(1)变量的定义与引用

\1. 创建以.sh结尾的文件
img

\2. 修改文件权限
img

\3. 输出文件
img

\4. 在命令行定义一个整型
img

\5. 输出整型
img

(2)特定变量

1、新建脚本
img

2、设置权限
img

3、执行文件
img

(3)if语句
1、编写脚本
img

2、改权限
img

3、执行
img

二、根据语法完成相应的功能

1.两数求和
img

2.批量创建用户
img

img

img

img

3.批量复制文件

img

name.txt

img

img

-------------本文结束感谢您的阅读-------------