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
以上是关于CentOS使用手册的主要内容,如果未能解决你的问题,请参考以下文章
前端开发必备!Emmet使用手册(转自 http://www.w3cplus.com/tools/emmet-cheat-sheet.html)