CentOS使用手册

Posted Java小白学心理

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CentOS使用手册相关的知识,希望对你有一定的参考价值。

点击蓝色字免费订阅,每天收到这样的好信息


私活接单qq群:716817407


来源:https://book.altitude.xin/chapter/CentOS%E4%BD%BF%E7%94%A8%E6%89%8B%E5%86%8C.html

一、序言

本文记录用户在维护centos操作系统时遇到的常见问题及解决方式,助力于本文阅读者能够以最短的时间解决遇到的问题。

快速配置CentOS服务器,请移步 传送门

二、yum源管理

1、基本知识

yum源是CentOS系统下载安装软件的途径之一,配置国内源能够极大提高软件安装效率。目录/etc/yum.repos.d是系统yum源的存放路径。

# 查看当前系统yum源
yum repolist
2、配置阿里云yum源

如果检测系统yum源非国内源,建议切换至阿里云yum源,具体命令如下:

# CentOS7更新yum源
wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo

更新yum源后,更新缓存

# 清理yum缓存
yum clean all

# 缓存软件包信息
yum makecache

三、用户和组管理

root用户最为操作系统最高权限拥有者,在通常情况下,应尽量少使用,并且定期更换登录密码,从运维流程上保证服务器的安全。

为了满足普通用户能够开启1024以下端口和安装软件,需要授权普通用户拥有相应的权限。

(一)用户管理

1、sudo授权

为了更方便的授予普通用户sudo权限,提高账号管理效率,授权普通用户通过sudo命令行使root账号的权限的另一种方法如下:

su root #切换成root

chmod 640 /etc/sudoers #给文件夹授予读写权限
vim /etc/sudoers
chmod 440 /etc/sudoers #修改完毕有去除写权限

打开文件/etc/sudoers后,在文件中添加如下内容

lj ALL=(ALL) ALL # 需要使用自己的密码访问sudo
lj ALL=(ALL) NOPASSWD:ALL # 不需要使用自己的密码访问sudo

上述命令表示对用户lj授予sudo权限。通常情况下不对sudo用户授予全部执行权限,按照最小授权按需授权的策略进行。

(二)组的管理

给用户添加额外用户组

useradd -a -g wheel lj # 授予用户lj附加组wheel使其能够通过sudo命令临时获取root权限
groups lj # 查看用户lj的主用户组和附加用户组

lj : dev wheel dev_view

用户lj的主用户组是dev,附加用户组是dev_view、wheel,其中wheel是通过sudo命令临时获取root权限的用户组。

1、组的新建

通常情况下按照组对使用系统的人员进行管理,以便能够按需增减人员而不影响原来的业务。使用如下命令可创建用户组:

groupadd dev                             # 创建用户组

将用户添加到用户组中:

usermod -g dev lj                    # 将用户lj的主用户组变更为dev
2、组的分类

一般情况下所说的用户组指的主用户组,用户在创建时指定的用户组默认为主用户组。特殊情况下,一个用户需要从属于多个用户组。

用户组分为主用户组与附加用户组。

3、附加组管理

把用户添加到附加组中,主用户组不受影响

#usermod -a -G groupname username
usermod -a -G wheel lj #将用户lj添加到wheel附加用户组中

把用户的某个附加组移除

#gpasswd -d userName groupName
gpasswd -d lj wheel #将lj从wheel附加用户组剔除

(三)nobody用户

nobody用户默认登录shell是/sbin/nologin,是一个不能通过SSH登陆的帐号,它是一个普通用户(非特权用户),任何账户都可以切换到此账户,访问人人皆可读写的文件,其 UID 和 GID 不提供任何特权。这个用户的权限配置很低,一切都只给最低权限,有比较高的安全性。

四、全局配置文件

全局配置文件主要是指/etc/profile文件,通过对其配置,所有用户都能共享使用环境变量。

1、修改系统默认编码

在使用过程中,中文显示常常出现乱码,为此需要修改系统默认编码,具体命令如下:

echo $LANG        #系统默认编码en_US.UTF-8

打开/etc/profile文件,在文件下面添加

export LC_ALL="zh_CN.UTF-8"
export LANG="zh_CN.UTF-8"

修改系统默认编码的方式不推荐使用,使用原生态的英文编码方式更具有交互性。

在使用系统过程中,为了具有统一的界面风格,建议使用全英文的界面,在/etc/profile文件中添加如下命令:

export LC_ALL=en_US.UTF-8
2、去除ssh登陆警告信息

使用命令行ssh远程登陆时,常常出现如下警告信息:

-bash: warning: setlocale: LC_CTYPE: cannot change locale (UTF-8): No such file or directory

使用Mac电脑terminal终端上传文件时,也可能出现该警告信息,配置系统变量,即可有效规避该警告信息,使用命令vim /etc/locale.conf打开配置文件,添加如下内容:

LC_ALL=en_US.utf8 
LC_CTYPE=en_US.utf8
LANG=en_US.utf8
3、修改主机名

在配置新服务器时,通常希望配置(修改)主机名,以达到shell交互更优的体验,应用场景如下所示:

[root@sageledger conf]#
hostnamectl set-hostname ireliaashe             # 使用这个命令会立即生效且重启也生效

通过修改主机名使shell交互更简洁,具体操作如下:打开/etc/hostname文件,编辑并保存文件。

4、环境变量
环境 全局 用户
bash /etc/bashrc ~/.bashrc
vim /etc/vimrc ~/.vimrc

五、日志管理

(一)日志轮转

日志轮转能够减小日志文件的大小,减少服务器磁盘压力;基于日期的日志轮转,能够提高日志分析效率。服务组件以单个文件作为日志文件的日志管理场景适合用日志轮转。

1、rsyslog进程
# 查看进程状态(未启动则安装)
systemctl status rsyslog

yum -y install rsyslog

主配置文件/etc/logrotate.conf与子配置文件夹/etc/logrotate.d,在子配置文件夹中的符合规范的配置都能加载到进程中,日志管理生效。第三方配置建议都放在子配置文件夹中,子配置增加或者减少不影响主进程的执行。

2、轮转配置文件

nginx访问日志轮转配置文件,执行如下命令,添加配置

cat <<EOF> /etc/rsyslog.d/nginx.conf
/usr/local/nginx/logs/access.log {
# 如果日志丢失不报错
missingok
# 每小时轮转一次
dayly
# 设置新的空文件权限
create 0600 root root
# 保留日志数量
rotate 7
# 轮转日志后缀(以日志未后缀)
dateext
}
EOF

强制轮转,即使未到轮转时间,也进行轮转

# 配置文件未新增的日志轮转配置
logrotate -vf /etc/logrotate.d/nginx.conf
3、配置轮转细节

常用的轮转频率:每年:yearly;每月:monthly;每周:weekly;每天:dayly

不常用轮转频率:每小时:hourly;每分钟:minutely

其中每个频率后面都可以加具体的数字,以形成更加具体的组合。

(二)普通策略

服务组件内置以日为单位切割日志文件,此时不需要使用日志轮转,按照日期删除即可。

find /usr/local/nginx/logs -mtime +91 -type f -name access_*.log -exec rm -f {} \;

/usr/local/nginx/logs/innov — 设置查找的目录;-mtime +91 --设置时间为91天前;-type f --设置查找的类型为文件;-name access_*.log --以字符串access_开头;-exec rm -f --查找完毕后执行删除操作;

将可执行文件放入crontab列表中每日自动调用执行,命令如下

crontab -e

编辑内容如下

0 10 * /usr/local/nginx/auto_del_logs.sh

每天10点执行一次删除日志脚本。

六、系统管理

(一)内存管理

在系统运行过程中需要了解内存运行现状,了解硬件负载情况,使用命令free -hl查看。

通过了解服务器核心信息,及时给予修复措施,尽可能减少服务器宕机。

1、关闭虚拟内存

虚拟内存对服务器性能有影响,因此为了提高服务器整体性能,需要永久关闭虚拟内存。

# 删除 swap 区所有内容
swapoff -a
# 注释 swap 行
vim /etc/fstab
# 查看内存情况(未生效重启)
free -h

(二)磁盘管理

在服务器管理过程中,需要时常跟进磁盘已使用硬盘和剩余硬盘空间的容量信息。对于常见组件的日志文件夹,也需要查看包含子文件的大小。

查看当前工作空间下所有子目录文件大小的命令如下:

du -h            #显示子目录文件大小(直接子目录)

此命令在查看组建日志方面应用较多,将日志较多的文件删除,以保证服务器有足够多的运行空间。

1、磁盘挂载

磁盘空间不足时,需要及时挂载新磁盘。磁盘挂载需解决服务器重启后逻辑路径变化的问题,常见于云服务器挂载数据盘。编辑文件/etc/fstab,添加如下命令开机自动挂载数据盘。

# 如果上面用的是ext3,这里也要用ext3;(/huichengff为挂载点)
/dev/vdb1 /huichengff ext4 defaults 0 1

使用命令df -h查看硬盘空间大小。

(三)文件远程传输

配置ssh免密登陆可实现命令行跨服务器文件传输。

# 将本地文件传输到远程服务器
scp localfile.tar.gz lj@remote_host:~

# 将远程服务器文件传输到本地当前文件夹
scp lj@remote_host:remotefile.tar.gz .

# 将本地文件传输到远程服务器
scp -r localdir lj@remote_host:~

# 将远程服务器文件传输到本地当前文件夹
scp -r lj@remote_host:remotedir .

更多文件传输内容,请查看 SSH使用手册

(四)服务管理

通过端口查看进程ID,进而查看服务状态。

# 使用前需安装服务
yum install lsof -y
# 查看端口占用情况
lsof -i:8080
1、系统管理服务

将服务设置为开机自启,将服务注册进系统级别,提高服务运行健壮性。

sudo systemctl list-unit-files # 查看所有的开机自启项
sudo systemctl daemon-reload # 当开机自启配置文件发生改变时,请执行
2、委托第三方管理服务

将第三方服务(比如Supervisor)注册为系统服务,然后将服务委托给第三方服务管理,更加方便对服务的监控于管理。委托第三方管理服务有诸多优点:可视化监控、服务自动重启、开启自启(跟随主服务)、查看服务日志等。

更多相关内容,请查看 Supervisor使用手册

3、用户管理服务
# 进程后台启动
nohup gitbook serve > /dev/null 2>&1 &
java -jar my-spring-boot.jar --spring.profiles.active=prod > /dev/null 2>&1 &

(五)密码管理

# 安装密码生成工具
yum -y install expect

执行如下命令生成密码,密码生成完毕后,将其保存到文本文件中。

# -l 密码长度 -d 多少个数字 -C 大写字母个数 -s 特殊符号的个数
mkpasswd -l 128 -d 10 -C 15 -s 10

七、推荐设置

(一)基础配置

1、更新服务器时间
# 同步服务器时间
ntpdate -u cn.pool.ntp.org
# 将时间写入硬件
hwclock -w
2、GitHub仓库加速

从GitHub代码仓库服务器拉取代码通常很慢,使用加速能够有效解决此问题。具体做法是将域名github.com替换成github.com.cnpmjs.org,其余内容保持不变。

# 加速前
git clone https://github.com/Free2Free/env-centos.git
# 加速后
git clone https://github.com.cnpmjs.org/Free2Free/env-centos.git

更通用的设置为

echo 'github.com.cnpmjs.org github.com' >> /etc/hosts

(二)个性化设置

1、专属环境目录

新建环境目录用于存放自定义PATH,避免与系统变量混合。

mkdir -p /usr/local/etc/bin

将用户个性化自定义需要添加环境变量的快捷命令添加到此目录,包含shell脚本命令文件、可执行文件、软连接等。设置专属环境目录,能够提高操作服务器的效率和增强可移植性。

2、别名(快捷键)

通过命令type clear查询可执行文件所在位置,不同操作系统存放不同的位置,创建快捷命令软连接时需要注意,此处提供的是建议命令。

# 查看命令绝对路径
type clear

# 设置别名并放入环境变量中(CentOS)
ln -sf /usr/bin/clear /usr/local/bin/cls

# 设置别名并放入环境变量中(Mac)
ln -sf /opt/local/bin/clear /usr/local/bin/cls

八、其它

(一)常用命令

1、yum命令
# 安装软件(手动确认)
yum install kernel

# 安装软件(自动确认)
yum install kernel -y
# 更新软件(自动确认)
yum update kernel -y

(二)压测

ab压力测试,默认使用get的方式执行,使用-m POST参数模拟post请求。

ab -c 100  -n 1000 -m POST http://localhost:8081/order

(三)CentOS8新特性

1、网络服务
# 重启网络服务
nmcli c reload /etc/sysconfig/network-scripts/ifcfg-eth33

附录:Mac客户端

1、Mac与远程服务器建立连接

将远程服务器目录挂在到Mac系统上,可以通过访达可视化查看远程文件结构。

# 创建本地目录,用于挂载
mkdir -p xxxx/mount_remote

# 挂在远程目录到本地,输入密码即可,若要免密,创建sshkey即可
sshfs -C -o reconnect xxxx@x.x.x.x:/home/xq.he /xxxx/mount_remote

# 取消挂载
umount /xxxx/mount_remote
2、Mac电脑客户端
# 禁止.DS_store生成
defaults write com.apple.desktopservices DSDontWriteNetworkStores -bool TRUE
# 恢复.DS_store生成
defaults delete com.apple.desktopservices DSDontWriteNetworkStores

测试远程服务器端口连通性

nc -vzw 2 ai-brain.cn 80


打油诗

我不在乎我的作品文章是被现在的人读还是由子孙后代来读。既然上帝花了六千年来等一位观察者,我可以花上一个世纪来等待读者。
私活接单qq群:716817407
 


以上是关于CentOS使用手册的主要内容,如果未能解决你的问题,请参考以下文章

转载:Emmet使用手册

前端开发必备!Emmet使用手册(转自 http://www.w3cplus.com/tools/emmet-cheat-sheet.html)

CentOS 7 安装手册

java项目小手册

Postman使用手册4——API test

CentOS使用手册