linux企业级常用服务搭建

文章目录


DHCP

DHCP服务是动态主机设置协议,又称动态主机组态协定,是一个用于IP网络的网络协议

DHCP协议位于OSI模型的应用层,使用UDP协议工作

DHCP协议主要有两个用途:

  • 用于内部网络或网络服务供应商自动分配IP地址给用户
  • 用于内部网络管理员对所有电脑作中央管理

DHCP服务原理

DHCP(Dynamic Host Configuration Protocol)动态主机配置协议,是从DHCP(Dynamic Host Configuration Protocol)动态主机配置协议,是从BOOTP(Bootstrap Protocol)协议发展而来的一种网络协议。它的主要作用是为客户机自动分配IP地址、子网掩码以及缺省网关、DNS服务器的IP地址等TCP/IP参数。这种协议通常被应用在大型的局域网络环境中,能够有效地解决手动配置地址产生的各种问题,如地址冲突等。

DHCP服务的工作过程是这样的:当DHCP客户端初次接入网络时,会发送DHCP发现报文(DHCP Discover),该报文是DHCP协议的开始,用于查找和定位DHCP服务器。之后,DHCP服务器在收到DHCP发现报文后,会发送DHCP请求报文(DHCP Offer),此报文包含IP地址等配置信息。最后,DHCP客户端接受DHCP服务器提供的IP地址,从而完成IP地址的自动配置。

DHCP服务安装

bash 复制代码
# 安装dhcp软件包
[root@httpsl ~]# yum install -y dhcp
# 拷贝样例文件到etc/dhcp中
[root@httpsl doc]# cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf 
# 备份dhcpd.conf
[root@httpsl dhcp]# cp dhcpd.conf.babk dhcpd.conf
# 修改dgcpd.conf文件(我这里只保存了相关配置)
[root@httpsl dhcp]# vi dhcpd.conf
[root@httpsl dhcp]# cat dhcpd.conf
default-lease-time 86400;
max-lease-time 86400;

authoritative;

log-facility local7;


subnet 172.31.79.0 netmask 255.255.255.0 {
  range 172.31.79.3 172.31.79.100 ;
  option domain-name-servers 172.31.79.130;
  option domain-name "dhcp-server";
  option routers 172.31.79.1;
  option broadcast-address 172.31.79.2;
}
# 启动dhcp服务
[root@httpsl /]# systemctl start dhcpd
# 查看dhcp状态
[root@httpsl /]# systemctl status dhcpd
# 查看进程
[root@httpsl /]# ps aux|grep dhcpd
dhcpd    27127  0.0  0.4 106088  8156 ?        Ss   11:18   0:00 /usr/sbin/dhcpd -f -cf /etc/dhcp/dhcpd.conf -user dhcpd -group dhcpd --no-pid
root     27181  0.0  0.0 112812   976 pts/0    S+   11:19   0:00 grep --color=auto dhcpd
# 查看端口
[root@httpsl /]# netstat -anplut|grep dhcpd
udp        0      0 0.0.0.0:67              0.0.0.0:*                           27127/dhcpd  
# 查看那些客户机分配了ip地址
[root@httpsl ~]# cat /var/lib/dhcpd/dhcpd.leases     

注释:dhcpd.conf文件

  • default-lease-time 86400; 租期默认
  • max-lease-time 86400; 最大租期
  • subnet 172.31.79.0 netmask 255.255.255.0 IP地址池的子网
  • range 172.31.79.3 172.31.79.100 ;分配给客户端的IP地址范围
  • option domain-name-servers 172.31.79.130;设置DNS服务器的IP地址
  • option domain-name "dhcp-server";设置域名为"dhcp-server"
  • option routers 172.31.79.1;设置默认网关的IP地址为172.31.79.1
  • option broadcast-address 172.31.79.2;设置子网的广播地址为172.31.79.2

HTTP

HTTP服务背后是Web服务器提供的服务

每一个Web服务器程序都需要从网络接受HTTP请求,然后提供HTTP回复给请求者;HTTP回复一般包含一个HTML文件,有时也可以包含纯文本文件、图像或其他类型的文件

常见Web服务器包括:Apache Httpd、Nginx、IIS、LiteSpeed Web Server

Apache Httpd

Apache是世界使用排名第一的Web服务器软件,源于NCSAhttpd服务器,经过多次修改,成为世界上最流行的Web服务器软件之一。它是一款高度模块化的软件,可以通过添加相应的模块来增强其功能,同时不需要的模块可以选择不加载,这既保证了Apache的简洁性,也维持了其轻便和高效性。

Apache可以运行在几乎所有广泛使用的计算机平台上,支持SSL技术,并支持多个虚拟主机。它还支持通过简单的API扩充,将Perl/Python等解释器编译到服务器中。此外,Apache采用三个配置文件(httpd.conf、access.conf和srm.conf),配备集成Perl处理模块和集成代理服务器模块,以保证服务器的正确性和速度。

在安全方面,Apache除了默认使用80端口的明文传输方式外,后来还添加了443的加密传输的方式,以确保数据的安全和可靠性。当出现大量访问一个服务器时,Apache可以使用多种复用模式,保证了服务器能快速回应客户端的请求。

安装Apache Httpd

Apache Httpd配置文件

  • Apache默认的配置文件为/ect/httpd/conf/httpd.conf
  • 网站根目录下的.htaccess也可以配置部分表现
    安装
bash 复制代码
# 安装apache httpd
[root@httpsl ~]# yum install -y httpd
# 查看httpd状态
[root@httpsl ~]# systemctl status httpd
# 启动httpd服务
[root@httpsl ~]# systemctl start httpd
# 查看conf配置文件
[root@httpsl /]# cat /etc/httpd/conf/httpd.conf 

配置虚拟主机

bash 复制代码
[root@httpsl /]# cd /etc/httpd/conf.d/
[root@httpsl conf.d]# vi website.html
<VirtualHost *:80>
    ServerName www.example.com
    Servername example.com
    DocumentRoot /var/www/example.com/html
    ErrorLog /var/www/example.com/log/error.log
    CustomLog /var/www/example.com/log/requests.log combined
</VirtualHost>
# 重新启动httpd服务
[root@httpsl /]# systemctl restart httpd
# 关闭apache版本号显示
[root@httpsl /]# vi /etc/httpd/conf/httpd.conf
(如果找不到就新增)
ServerSignature off
ServerTokens Prod
# 配置文件进行保护和移除保护
[root@httpsl conf]# chattr +i httpd.conf 
[root@httpsl conf]# chattr -i httpd.conf 

FTP

  • 文件传输协议是一个用于在计算机网络上在客户端和服务器之间进行文件传输的应用层协议
  • FTP服务一般运行在20和21两个端口,20端口用于客户端和服务端之间传输数据流,21端口用于传输控制流

FTP的主动模式和被动模式

  • FTP由两种使用模式:主动和被动
  • 主动模式要求客户端和服务端同时打开并监听一个端口以创建连接
  • 被动模式只要求服务器端产生一个监听相应端口的进程,这样就可以绕过客户端安装了防火墙的问题

安装FTP

bash 复制代码
# 安装vsftpd
[root@httpsl /]# yum install -y vsftpd
# 启动并查看vsftpd
[root@httpsl /]# systemctl start vsftpd
[root@httpsl /]# systemctl status vsftpd
# 打开防火墙端口允许ftp连接
[root@httpsl /]# firewall-cmd --permanent --add-service=ftp
success
[root@httpsl /]# firewall-cmd --reload
success
# 配置匿名访问或本地用户访问
[root@httpsl /]# vi /etc/vsftpd/vsftpd.conf 
# 启用或禁用匿名访问
anonymous_enable=YES/NO
# 启用或禁用本地用户访问
local_enable=YES/NO
(以上配置均在vsftp.conf文件中)

创建FTP用户

bash 复制代码
# 添加一个ftpuser用户
[root@httpsl vsftpd]# adduser ftpuser
# 创建ftpuser用户密码
[root@httpsl vsftpd]# passwd ftpuser
Changing password for user ftpuser.
New password: 
Retype new password: 
passwd: all authentication tokens updated successfully.
# 切换到ftpuser用户
[root@httpsl /]# su - ftpuser
Last failed login: Mon Nov 13 15:52:15 CST 2023 from 123.57.30.90 on ssh:notty
There were 2 failed login attempts since the last successful login.
[ftpuser@httpsl ~]$ 
# 在家目录下创建一个ftp文件夹
[ftpuser@httpsl ~]$ mkdir /home/ftpuser/ftp
# 更改新创建的FTP目录的所有权和权限
[ftpuser@httpsl ~]$ chown ftpuser:ftpuser /home/ftpuser/ftp
[ftpuser@httpsl ~]$ chmod 755 /home/ftpuser/ftp
[ftpuser@httpsl ~]$ ll /home/ftpuser/
total 4
drwxr-xr-x 2 ftpuser ftpuser 4096 Nov 14 17:18 ftp

DNS

域名解析服务是一个internet服务,相互映射ip地址和完全限定域名,通过这种方式,使用DNS将不再需要记住IP地址,运行DNS的计算机称为名称服务器

DNS的记录类型

  • 主机记录(A记录):RFC 1035定义,用于名称解析的重要记录,将特定的主机名映射到对应主机的IP地址上
  • 别名记录(CNAME记录):RFC 1035定义,用于将某个别名指向到某个A记录上,这样就不需要再为某个新名字另外创建一条新的A记录
  • IPv6主机记录(AAAA记录):RFC 3596定义,与A记录对应,用于将特定的主机名映射到一个主机的IPv6地址
  • 服务位置记录(SRV记录):RFC 2782定义,用于定义提供特定服务的服务器的位置,如主机,端口等
  • 域名服务记录(NS记录):用来指定该域名由那个DNS服务器来进行解析

Bind

域名系统协议的一个完整的,高度可移植的实现

安装Bind

bash 复制代码
# 安装Bind
[root@httpsl ~]# yum install bind bind-utils
# 启动并查看Bind
[root@httpsl ~]# systemctl start named
[root@httpsl ~]# systemctl status named

Mysql

mysql原本是一个开放源码的关系型数据库管理系统

mysql在过去由于性能高、成本低、可靠性好,已经称为最流行的开源数据库

Mysql特性

  • 开源性:MySQL是开源的,属于Oracle旗下产品。
  • 大型数据库支持:能够处理拥有上千万条记录的大型数据库。
  • 使用标准SQL语言:MySQL使用标准的SQL数据语言形式,并且支持多种编程语言,如C、C++、Python、Java等。
  • 多用户和多线程:MySQL是一个真正的多用户、多线程SQL数据库服务器。
  • ACID事务特性:具备原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持久性(Durability),也被称为ACID特性。详细来说,原子性指的是事务内的操作是不可分割的;一致性表示在一次事务中多次读取同一数据,其内容应始终一致;隔离性是指不同事务之间相互独立,互不干扰;持久性则意味着一旦事务提交,其对数据库的修改将被永久保存。

安装Mysql

bash 复制代码
# 更新yum源
[root@httpsl ~]# rpm -Uvh http://dev.mysql.com/get/mysql57-community-release-el7-9.noarch.rpm
# 安装mysql
Complete!
[root@httpsl ~]# yum -y install mysql-community-server --nogpgcheck
# 启动mysql并查看状态
[root@httpsl ~]# systemctl start mysqld
[root@httpsl ~]# systemctl status mysqld
# 查看mysql_root初始密码
[root@httpsl ~]# grep 'temporary password' /var/log/mysqld.log |awk '{print $11}'
lg9qEd)5(Xfw
# 执行MySQL 数据库初始化命令
[root@httpsl ~]# mysql_secure_installation

Redis

redis是一个由salvatore sanfilippo写的key-value存储数据库,是跨平台的非关系型数据库

redis是一个开源的使用ansi c语言编写,遵守bsd协议,支持网络,可基于内存,分布式,可选持久性的键值对存储数据库,并提供多种语言的api

redis通常被称为数据结构服务器,因为值可以是字符串、哈希、列表、集合和有序集合等类型

reids优势

  • 性能极高,reids能读的速度是110000次/秒,写的速度是81000次/秒
  • 丰富的数据类型,支持二进制案例的strings、lists、hashes、sets以及ordered sets数据类型操作
  • 原子,所有操作的类型都是原子性的,意思就是要么执行成功要么失败完全不执行;单个操作是原子性;多个操作也支持事务,即原子性,通过MULTI和EXEC指令包起来
  • 丰富的特性,redis还支持publish/subscribe,通知,过期等等特性

reids和其他key vaule相比

Redis是一个基于内存的高性能key-value数据库,不同于其他key-value存储的是,Redis具有Redis是一个基于内存的高性能key-value数据库,不同于其他key-value存储的是,Redis具有更为复杂的数据结构并且提供对这些结构的原子性操作。它支持多种数据类型,包括字符串、列表、集合、散列和有序集合。此外,Redis还提供了许多高级功能,如事务、管道、复制和分区等。

在与其他key-value存储比较时,Redis的优势在于其支持更丰富的数据类型。例如,与memcached相比,memcached所有的值都是简单的字符串,而redis则作为其替代者,能够支持更复杂的数据类型。此外,Redis的设计哲学是将所有的数据都当作一个整体来处理,而不是简单地通过键值对来进行存取。这使得Redis在进行部分数据查询时更加高效。

总的来说,Redis以其强大的功能和高效的性能,在key-value存储中占有一席之地。

安装redis

bash 复制代码
# 安装
[root@httpsl ~]# yum install -y redis
# 启动并查看
[root@httpsl ~]# systemctl start redis
[root@httpsl ~]# systemctl status redis
# 修改配置
[root@httpsl ~]# vi /etc/reids.conf
# 监听地址61行
  61 bind 127.0.0.1
# 端口修改84行
  84 port 6379
相关推荐
Tester_孙大壮1 小时前
了解智能运维
运维
林农2 小时前
C05S14-MySQL高级语句
linux·mysql·云计算
Wanliang Li2 小时前
Linux电源管理——CPU Hotplug 流程
linux·嵌入式硬件·嵌入式·armv8·电源管理·cpuhotplug
fnd_LN2 小时前
Linux文件目录 --- mkdir命令,创建目录,多级目录,设置目录权限
linux·运维·服务器
会飞的土拨鼠呀3 小时前
Flannel是什么,如何安装Flannel
运维·云原生·kubernetes
木与子不厌3 小时前
微服务自定义过滤器
运维·数据库·微服务
达帮主3 小时前
7.C语言 宏(Macro) 宏定义,宏函数
linux·c语言·算法
行思理3 小时前
Linux 下SVN新手操作手册
linux·运维·svn
初学者丶一起加油3 小时前
C语言基础:指针(数组指针与指针数组)
linux·c语言·开发语言·数据结构·c++·算法·visual studio
沛沛老爹4 小时前
CI/CD是什么?
运维·git·ci/cd