5.5 Linux Apache服务

1、概念介绍
a. Web 服务简介

WEB服务器也称为WWW(WORLD WIDE WEB,万维网)服务器,主要功能是提供网上信息浏览服务。

常用web服务器:httpd(apache)、nginx、tomcat、IIS

客户端:IE、firefox、chrome

b. Apache 简介

官网地址:Welcome to The Apache Software Foundation!

Apache HTTP Server(简称Apache)是Apache软件基金会的一个开放源码的网页服务器,可以在大多数计算机操作系统中运行,由于其多平台和安全性被广泛使用,是最流行的Web服务器端软件之一。它快速、可靠并且可通过简单的API扩展,将Perl/Python等解释器编译到服务器中。

c. Apache 特点

① 开放源代码:这是apache服务器的重要特性之一,也是其他特性的基础,任何人都可以自由使用,这充分体现了开源软件的精神。

② 跨平台应用:这个特性得益于apache的源代码开放,apache服务器可以运行在绝大多数软硬件平台,如linux、unix、windows等。

③ 支持各种web编程语言:apache服务器可支持的网页编程语言包括perl、php、python、java等,甚至微软的ASP技术也可以在apache服务器中使用。支持各种常用的web编程语言使apache具有更广泛的应用领域。

④ 模块化设计:apache并没有将所有的功能集中在单一的服务程序内部,而是尽可能地通过标准的模块实现专有的功能,这为apache服务器带来了良好的扩展性,其他软件开发商可以编写标准的模块程序,从而添加apache本身不具有的其他功能。

⑤ 运行非常稳定:apache服务器可用于构建具有大负载访问量的web站点。

⑥ 良好的安全性:apache服务器具有相对较好的安全性,这是开源软件共同具有的特性,并且,apache的维护团队会及时对发现的漏铜提供修补程序。

d. Apache 版本

apache服务器目前包括1.X和2.X两个版本:

1.X系列的最高版本是1.3,该版本继承了apache服务器1.0版本以来的优秀特性和配置管理风格,具有非常好的兼容性、稳定性。

从2.0版本开始,apache服务器加入了许多新的功能,使用的配置语法和管理风格也有所改变。对于新构建的网站服务器,使用2.X版本是一个不错的选择。目前apache的最新版本是httpd-2.4.54

e. Apache 端口
  • B/S 架构
  • 80: http
  • 443:http
f. Apache 基金会

Apache软件基金会是世界上最大的开源基金会

  • 300+顶级项目
  • 2.71 亿多行代码用于管理
  • 350 多个项目和倡议
  • 从 Apache 镜像下载约 2 PB 的源代码
  • 850 多名个人 ASF 成员
  • 8,200 多个 Apache 提交者
  • 49,000 多名代码贡献者
  • GitHub 流量:前 5 个最活跃的 Apache 资源---克隆:Thrift、Beam、Cordova、Arrow、Geode;
  • GitHub 流量:前 5 个最活跃的 Apache 资源---访问量:Spark、Flink、Camel、Kafka、Beam;
  • 价值22B 美元以上的 Apache 开源软件产品以 100% 的免费提供给广大公众,使全球数十亿用户受益
2、源码安装 Apache
a. apache 安装
复制代码
# 下载httpd
wget http://archive.apache.org/dist/httpd/httpd-2.4.54.tar.gz

# 解压至/usr/local/src
tar -zxvf httpd-2.4.54.tar.gz -C /usr/local/src

# 安装编译环境和apache依赖
yum install -y gcc gcc-c++ apr arp-devel cyrus-sasl-devel expat-devel libdb-devel openldap-devel apr-util-devel apr-util pcre-devel pcre openssl*

# 进入httpd目录
cd /usr/local/src/httpd-2.4.54/

# 预编译
./configure --prefix=/usr/local/apache --enable-so --enable-rewrite --enable-charset-lite --enable-cgi --enable-ssl --enable-mpms-shared=all --enable-mpm-with=event

# 编译
make -j 2

# 安装
make install

预编译配置参数用途:

  • --prefix=:指定安装目录
  • --enable-so:支持动态加载模块
  • --enable-rewrite :支持网站地址重写
  • --enable-cgi:支持CGI程序脚本
  • --enable-ssl:支持SSL加密
  • --enable-charset-lite:支持多语言编码
  • --enable-mpms-shared=all:安装apache所有运行模式模块
b. apache 目录结构
复制代码
ls /usr/local/apache

|---------|---------------------------------------------------|
| bin | 存放httpd服务的各种执行程序文件,包括主程序httpd,服务控制工具apachectl等 |
| cgi-bin | 存放各种CGI程序文件 |
| logs | 存放httpd服务的日志文件 |
| conf | 存放httpd服务的各种配置文件,包括主配置文件httpd.conf、增强配置子目录extra等。 |
| htdocs | 存放网页文档,包括默认首页文件index.html等。 |
| modules | 存放httpd服务的各种模块文件 |

c. 优化执行路径(2选1)

① 添加软连接:通过源码编译安装的httpd服务,程序路径并不在默认的搜索路径中,为了使该服务在使用时更加方便,可以为相关程序添加符号链接 ln -s /usr/local/apache/bin/* /usr/local/bin

② 修改PATH环境变量:在/etc/profile 中添加PAHT环境变量

复制代码
vim /etc/profile
	PATH=$PATH:/usr/local/apache/bin
source /etc/profile

# 查看apache版本
httpd -v
3、添加httpd系统服务**(2选1)**
a.使用chkconfig添加系统服务

chkconfig命令 主要用来更新(启动或停止)和查询系统服务的运行级信息, 若希望将httpd添加为系统服务,以便通过chkconfig进行管理,需要编写服务管理脚本,把脚本放在/etc/init.d/目录下,并在脚本开头添加chkconfig识别配置。

复制代码
# 生成服务器管理脚本
cp /usr/local/apache/bin/apachectl /etc/init.d/httpd

# 添加chkconfig识别
vim /etc/init.d/httpd
  #!/bin/sh
  # chkconfig:2345 11 88                  # 运行级别 启动优先级 关闭优先级
  # description:apache web server         # 服务描述信息

# 设置开机自动启动
chkconfig --add httpd  		# 添加服务,以便让chkconfig指令管理它
chkconfig httpd on    		# 设置开机运行该服务,默认是设置2345等级开机运行服务
chkconfig --list httpd
复制代码
# 删除指定的服务,不再让chkconfig指令管理它
chkconfig --del httpd  
复制代码
# 查看端口和进程信息
netstat -antup | grep httpd
ps -ef | grep httpd
复制代码
# 客户端测试
cur 192.168.137.5
b 使用 .service 脚本

centos7使用sytemd管理操作系统服务,systemd是Linux系统最新的初始化系统,对应的进程管理命令是systemctl, systemctl命令兼容了service,systemctl实际上将 service 和 chkconfig 这两个命令组合到一起,即systemctl也会去/etc/init.d目录下,查看,执行相关程序。

systemd使用.service脚本管理linux脚本, systemd有系统和用户区分:

  • 系统.service文件放在/usr/lib/systemd/system/
  • 用户.service文件放在/etc/lib/systemd/user/

一般系统管理员手工创建的单元文件建议存放在/etc/systemd/system/目录下面。

Systemd 默认从目录/etc/systemd/system/读取配置文件。但是,里面存放的大部分文件都指向/usr/lib/systemd/system/目录。systemctl enable命令用于在上面两个目录之间,建立符号链接关系。开机时,Systemd只执行/etc/systemd/system目录里面的配置文件。

① 在编写.service 脚本之前,先将chkconfig服务和httpd服务停掉,清除上步操作:

复制代码
systemctl stop httpd
ps -ef | grep httpd

# chkconfig关闭httpd服务管理
chkconfig --del httpd
chkconfig --list | grep httpd

② 编写.service脚本

复制代码
cat /usr/lib/systemd/system/httpd.service 

[Unit]
Description=httpd
After=network.target

[Service]
Type=forking
ExecStart=/usr/local/apache/bin/apachectl start
ExecReload=/usr/local/apache/bin/apachectl restart
ExecStop=/usr/local/apache/bin/apachectl stop
PrivateTmp=True

[Install]
WantedBy=multi-user.target

③ 添加开机自启动

复制代码
# 设置服务开机自启动
systemctl enable httpd

# 查看服务是否是开机自启动
systemctl is-enabled httpd

ll /etc/systemd/system/multi-user.target.wants/httpd.service

④ 启动服务并查看

复制代码
# 启动服务
systemctl start httpd

# 查看服务
systemctl status httpd

⑤ 客户端测试

复制代码
curl 192.168.137.5
c. .service 脚本详解

Unit字段: 主要给出服务描述、启动顺序和依赖关系

Description字段 给出当前服务的简单描述。

Documentation字段 给出文档位置。

After字段 表示在什么服务之后启动,不涉及依赖关系

Before字段 表示在什么服务之前启动,不涉及依赖关系

Wants字段表示该服务和某服务存在某种弱依赖关系,即某服务停止运行或退出不影响该服务继续运行。

Requires字段 表示强依赖关系,即某服务停止运行或退出,该服务也必须停止运行。

Wants字段与Requires字段 只涉及依赖关系,与启动顺序无关,默认情况下是同时启动的。

Server字段 主要给出服务的启动行为,如何启动、重启、停止

Type字段 定义启动类型。它可以设置的值如下:

    • simple(默认值):systemd认为该服务将立即启动。服务进程不会fork。如果该服务要启动其他 服务,不要使用此类型启动
    • forking:ExecStart字段将以fork()方式启动,此时父进程将会退出,子进程将成为主进程
    • oneshot:类似于simple,但只执行一次,Systemd 会等它执行完,才启动其他服务
    • dbus:类似于simple,但会等待 D-Bus 信号后启动
    • notify:类似于simple,启动结束后会发出通知信号,然后 Systemd 再启动其他服务
    • idle:类似于simple,但是要等到其他任务都执行完,才会启动该服务。

PIDFile字段: pid文件路径

ExecStart字段: 定义启动进程时执行的命令,就是手动启动时执行的命令。

ExecReload字段: 重启服务时执行的命令。

ExecStop字段: 停止服务时执行的命令。

ExecStartPre字段: 启动服务之前执行的命令。

ExecStartPost字段: 启动服务之后执行的命令。

ExecStopPost字段: 停止服务之后执行的命令。

KillMode字段: 定义 Systemd 如何停止服务。它可以设置的值如下:

    • control-group(默认值):当前控制组里面的所有子进程,都会被杀掉
    • process:只杀主进程
    • mixed:主进程将收到 SIGTERM 信号,子进程收到 SIGKILL 信号
    • none:没有进程会被杀掉,只是执行服务的 stop 命令

Restart字段:定义了Systemd 的重启方式。它可以设置的值如下:对于守护进程,推荐设为on-failure。对于那些允许发生错误退出的服务,可以设为on-abnormal。

    • no(默认值):退出后不会重启
    • on-success:只有正常退出时(退出状态码为0),才会重启
    • on-failure:非正常退出时(退出状态码非0),包括被信号终止和超时,才会重启
    • on-abnormal:只有被信号终止和超时,才会重启
    • on-abort:只有在收到没有捕捉到的信号终止时,才会重启
    • on-watchdog:超时退出,才会重启
    • always:不管是什么退出原因,总是重启

RestartSec字段:表示 Systemd 重启服务之前,需要等待的秒数。

user字段 可以设置服务的用户名

WorkingDirectory字段 指定服务的安装目录

Install字段: 该字段 定义如何安装这个配置文件,即怎样做到开机自启

WantedBy字段 表示该服务所在的 Target。

  • Target的含义是服务组,表示一组服务。WantedBy=multi-user.target指的是服务所在的Target是multi-user.target,Systemd 有默认的启动 Target。就是multi-user.target,在这个组里的所有服务,都将开机启动。
4、Apache 3种运行模式

Web服务器Apache目前一共有三种稳定的MPM(Multi-Processing Module,多进程处理模块)模式

  • Prefork:进程模式
  • worker:线程模式
  • Event : 事件模式(2.4版本后开始稳定)
a. prefork 运行模式

Prefork MPM实现了一个非线程的、预派生的web服务器。它在Apache启动之初,就先预派生一些子进程,然后等待连接;可以减少频繁创建和销毁进程的开销,每个子进程只有一个线程,在一个时间点内,只能处理一个请求, 这是一个成熟稳定,可以兼容新老模块,也不需要担心线程安全问题,但是一个进程相对占用资源,消耗大量内存,不擅长处理高并发的场景。

优点:因为每个进程使用独立的内存空间,所以比较安全。一个进程坏了,不会影响其他进程。

缺点:占用的内存比较大。

b. Worker MPM 运行模式

worker使用了多进程和多线程的混合模式,worker模式也同样会先预派生一些子进程,然后每个子进程创建一些线程,同时包括一个监听线程,每个请求过来会被分配到一个线程来服务。线程比起进程会更轻量,因为线程是通过共享父进程的内存空间,因此,内存的占用会减少一些,在高并发的场景下会比prefork有更多可用的线程,表现会更优秀一些;另外,如果一个线程出现了问题也会导致同一进程下的线程出现问题,如果是多个线程出现问题,也只是影响Apache的一部分,而不是全部。由于用到多进程多线程,需要考虑到线程的安全了,在使用keep-alive长连接的时候,某个线程会一直被占用,即使中间没有请求,需要等待到超时才会被释放(该问题在prefork模式下也存在)。

**优点:**可以处理海量请求,而系统资源的开销小。原因:一个进程中包括多个线程。多个线程之间可以共享内存,所以占用的内存资源比较少。

**缺点:**不太安全。如果一个线程坏了。整个进程都要坏了。另外存在keep-alive长连接占用资源时间过长。

c. Event MPM

event模式是在2.4版本中才稳定发布的模式。这是Apache最新的工作模式,它和worker模式很像,不同的是在于它解决了keep-alive长连接的时候占用线程资源被浪费的问题,在event工作模式中,会有一些专门的线程用来管理这些keep-alive类型的线程,当有真实请求过来的时候,将请求传递给服务器的线程,执行完毕后,又允许它释放。这增强了在高并发场景下的请求处理。

当某个连接没有请求时,会主动关闭连接,在work模式下,必须等keep-alive超时,才可以释放。

d. 修改 Apache 工作模式
复制代码
# 查看Apache 工作模式
httpd -V

由于在预编译的时候添加了--enable-mpms-shared=all参数,可以直接修改工作模式,如果没有添加,需要重新指定参数编译安装。

复制代码
 vim /usr/local/apache/conf/httpd.conf
复制代码
# 重启服务
systemctl restart httpd

# 查看工作模式
httpd -V
e. 查看web站点访问情况

Httpd服务器使用了两种类型的日志:访问日志和错误。这两种日志的文件名分别为access_log和error_log,均位于/usr/local/apache/logs目录下。

复制代码
# 查看web访问日志
tail /usr/local/apache/logs/access_log
复制代码
# 查看web错误日志
tail /usr/local/apache/logs/error_log
5、httpd.conf 配置文件
复制代码
vim /usr/local/apache/conf/httpd.conf

全局配置:

复制代码
ServerRoot "/usr/local/apache"    			# httpd服务器安装目录
Listen 80																# 设置httpd服务器监听的地址和网络端口号
User daemon															# 设置运行httpd进程的用户账号
Group daemon														# 设置运行httpd进程的组账号
ServerAdmin you@example.com							# 设置httpd服务器的管理员e-mail地址
ServerName www.test.com:80							# 设置web站点的完整域名
DocumentRoot "/usr/local/apache/htdocs"	# 设置网站根目录
DirectoryIndex index.html index.php			# 设置网站的默认首页
ErrorLog  logs/error_log								# 设置错误日志文件的路径
LogLevel warn														# 设置记录错误日志的级别
CustomLog logs/access_log common				# 设置访问日志文件的路径
PidFile logs/httpd.pid									# 设置用于保存httpd进程号的文件
AddDefaultCharset UTF-8									# 设置站点中的网页默认使用的字符集编码
Include conf/extra/httpd-default.conf		# 加载另一个配置文件的内容

区域配置项:

复制代码
<Directory />    					# 定义"/"目录区域的开始
  AllowOverride None    	# 不允许隐含控制文件覆盖配置
  Require all denied     	# 禁止任何人访问此区域
</Directory>    					# 定义"/"目录区域的结束
6、httpd 服务的访问控制
a. 客户机地址限制

通过require配置项,可以根据主机的主机名或ip地址来决定是否允许客户端访问,在httpd服务器的主配置文件的<Location>、<Directory>、<Files>、<Limit>配置段中均可以使用Require配置项来控制客户端的访问,地址的形式可以是ip地址、网络地址、主机名或域名,使用名称"all"时表示任意地址。

复制代码
Require all granted:										表示允许所有主机访问
Require all denied:										表示拒绝所有主机访问
Require local:													表示仅允许本地主机访问
Require [not] host <主机名或域名列表>:	表示允许或拒绝指定主机或域访问
Require [not] ip<ip地址或网段列表>:			表示允许或拒绝指定ip地址或网段访问

通常情况下,网站服务器是对所有客户机开放的,网页文档目录并未做任何限制,因此使用的是"Require all granted"策略,表示允许从任何客户机访问。

复制代码
<Directory "/usr/local/apache/htdocs">
    Options Indexes FollowSymLinks
    AllowOverride None
    Require all granted
</Directory>
b. 用户授权限制

基于用户的访问控制包括认证(authentication)和授权(authorization)两个过程,是apache允许指定用户使用用户名和密码访问特定资源的一种方式。认证是指识别用户身份的过程,授权是指允许特定用户访问特定目录区域的过程。

Httpd服务器支持使用摘要认证(digest)和基本认证(basic)两种方式,使用摘要认证需要在编译httpd之前添加--enable-auth-digest选项,但并不是所有的浏览器都支持摘要认证;而基本认证是httpd服务的基本功能,不需要预先配置特别的选项。

① 创建用户认证数据文件

复制代码
htpasswd -c /usr/local/apache/conf/.apachepasswd admin
htpasswd  /usr/local/apache/conf/.apachepasswd user1
  • -c选项表示新建立此文件,如果密码文件已经存在,则省略-c,否则会覆盖

    cat /usr/local/apache/conf/.apachepasswd

② 添加用户授权配置

复制代码
vim /usr/local/apache/conf/httpd.conf
  # 添加用户授权配置
  <Directory "/usr/local/apache/htdocs">
          Options Indexes FollowSymLinks
          AllowOverride None
          AuthName        "welcome"
          AuthType        Basic
          AuthUserFile    /usr/local/apache/conf/.apachepasswd
          Require valid-user
          #Require all granted
  
  </Directory>
  • AuthName: 定义受保护的领域名称,该内容将在浏览器弹出的认证对话框中显示
  • AuthType: 设置认证的类型,Basic表示基本认证
  • AuthUserFile:设置用于保存用户账号、密码的认证文件路径
  • Require valid-user:要求只有认证文件中的合法用户才能访问,其中valid-user表示所有合法用户,若只授权给单个用户,可改为指定的用户名。

③ 启动服务

复制代码
systemctl restart httpd

④ 测试访问

7、配置Apache虚拟主机

虚拟web主机指的是在同一台服务器中运行多个web站点,httpd支持的虚拟主机类型包括三种:

  • 不同ip相同端口
  • 相同ip不同端口
  • 不同域名相同端口
a. 开启虚拟主机功能

三种都需要把虚拟主机功能打开

复制代码
# 编辑Apache配置文件
vim /usr/local/apache/conf/httpd.conf

# 去掉文件中的这行注释,如果没有此行,手写此行
Include conf/extra/httpd-vhosts.conf
b. 配置不同ip相同端口虚拟主机

① 给服务增加IP

复制代码
ifconfig ens33:1 192.168.137.20
ifconfig ens33:1

② 创建站点目录

复制代码
mkdir -p /var/www/html/{web,bbs}
tree /var/www

③ 创建站点网页

复制代码
echo "Welcome to web page!!!" > /var/www/html/web/index.html
echo "Welcome to bbs page!!!" > /var/www/html/bbs/index.html

④ 定义虚拟主机文件

复制代码
# 创建日志文件目录
mkdir -p /usr/local/apache/logs/www/{web,bbs}

# 编辑虚拟主机配置文件
vim /usr/local/apache/conf/extra/httpd-vhosts.conf

<VirtualHost 192.168.137.5:80>
    ServerAdmin root@hualu.com
    DocumentRoot "/var/www/html/web"
    ServerName www.hualuweb.com
    ErrorLog "logs/www/web/hualuweb.com-error_log"
    CustomLog "logs/www/web/hualuweb.com-access_log" common
    <Directory "/var/www/html/web">
	Require all granted
    </Directory>
</VirtualHost>

<VirtualHost 192.168.137.20:80>
    ServerAdmin root@hualu.com
    DocumentRoot "/var/www/html/bbs"
    ServerName www.hualubbs.com
    ErrorLog "logs/www/bbs/hualubbs.com-error_log"
    CustomLog "logs/www/bbs/hualubbs.com-access_log" common
    <Directory "/var/www/html/bbs">
	Require all granted
    </Directory>
</VirtualHost>

# 添加服务名称
vim /usr/local/apache/conf/httpd.conf
  # 添加服务网站
  ServerName www.hualuweb.com:80
  ServerName www.hualubbs.com:80

# 检查虚拟主机配置文件语法
httpd -t

⑤ 重启服务并测试

复制代码
systemctl restart httpd
复制代码
# 查看web访问日志
cat /usr/local/apache/logs/www/web/hualuweb.com-access_log 
c. 配置相同ip不同端口虚拟主机

① 修改 httpd.conf

复制代码
# 添加监听端口
vim /usr/local/apache/conf/httpd.conf
  #Listen 12.34.56.78:80
  Listen 80
  Listen 8081

② 编辑虚拟主机配置文件

复制代码
vim /usr/local/apache/conf/extra/httpd-vhosts.conf

<VirtualHost 192.168.137.5:80>
    ServerAdmin root@hualu.com
    DocumentRoot "/var/www/html/web"
    ServerName www.hualuweb.com
    ErrorLog "logs/www/web/hualuweb.com-error_log"
    CustomLog "logs/www/web/hualuweb.com-access_log" common
    <Directory "/var/www/html/web">
        Require all granted
    </Directory>
</VirtualHost>

<VirtualHost 192.168.137.5:8081>
    ServerAdmin root@hualu.com
    DocumentRoot "/var/www/html/bbs"
    ServerName www.hualubbs.com
    ErrorLog "logs/www/bbs/hualubbs.com-error_log"
    CustomLog "logs/www/bbs/hualubbs.com-access_log" common
    <Directory "/var/www/html/bbs">
        Require all granted
    </Directory>
</VirtualHost>

③ 测试虚拟主机配置文件语法

复制代码
httpd -t

④ 重启服务并测试

复制代码
systemctl restart httpd
d. 不同域名相同端口虚拟主机

① 编辑虚拟主机配置文件

复制代码
vim /usr/local/apache/conf/extra/httpd-vhosts.conf

<VirtualHost www.hualuweb.com:80>
    ServerAdmin root@hualu.com
    DocumentRoot "/var/www/html/web"
    ServerName www.hualuweb.com
    ErrorLog "logs/www/web/hualuweb.com-error_log"
    CustomLog "logs/www/web/hualuweb.com-access_log" common
    <Directory "/var/www/html/web">
        Require all granted
    </Directory>
</VirtualHost>

<VirtualHost www.hualubbs.com:80>
    ServerAdmin root@hualu.com
    DocumentRoot "/var/www/html/bbs"
    ServerName www.hualubbs.com
    ErrorLog "logs/www/bbs/hualubbs.com-error_log"
    CustomLog "logs/www/bbs/hualubbs.com-access_log" common
    <Directory "/var/www/html/bbs">
        Require all granted
    </Directory>
</VirtualHost>

② 配置hosts映射文件

复制代码
vim /etc/hosts
192.168.137.5 www.hualuweb.com
192.168.137.5 www.hualubbs.com

③ 检测虚拟主机文件语法

复制代码
httpd -t

④ 重启服务

复制代码
systemctl restart httpd

⑤ 修改Windows映射文件

复制代码
C:\Windows\System32\drivers\etc\hosts
192.168.137.5 www.hualuweb.com
192.168.137.5 www.hualubbs.com
相关推荐
A小辣椒1 天前
TShark:Wireshark CLI 功能
linux
A小辣椒2 天前
TShark:基础知识
linux
AlfredZhao2 天前
OCI 明明分配了 200G 系统盘,为什么 df 只看到 30G?
linux·oci
AlfredZhao2 天前
vi 删除指定范围的行,不用再反复按 dd
linux·vi
用户9718356334663 天前
银河麒麟 KY10 申威(SW64) 安装 nginx-1.16.1-2.p01.ky10.sw_64.rpm 详细步骤
linux
猪脚踏浪3 天前
linux 拷贝文件或目录到指定的位置
linux
摇滚侠3 天前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
bush43 天前
嵌入式linux学习记录十四、术语
linux·嵌入式
载数而行5203 天前
Linux 11 动态监控指令top
linux
不会C语言的男孩3 天前
Linux 系统编程 · 第 8 章:进程基础
linux·c语言