CentOS 部分配置整理

最近在 CentOS 7 下部署了几个智能语音相关的服务器,对相关配置进行整理,便于以后操作。

云服务器数据盘

挂载

云服务器的数据盘默认是没有挂载的,首先执行:

1
fdisk -l

然后对未挂载的盘进行格式化,如 vdb 盘以 ext4 文件系统:

1
mkfs.ext4 /dev/vdb

如果不想进行分区操作,则直接挂载即可:

1
mount /dev/vdb /data

通过df -h可以查看已挂载的文件系统。

分区

创建一个单分区数据盘,依次执行以下命令:

  1. 运行fdisk /dev/vdb对数据盘进行分区。

  2. 输入 n 并按回车键:创建一个新分区。

  3. 输入 p 并按回车键:选择主分区。因为创建的是一个单分区数据盘,所以只需要创建主分区。

    说明:如果要创建 4 个以上的分区,您应该创建至少一个扩展分区,即选择 e。

  4. 输入分区编号并按回车键。因为这里仅创建一个分区,可以输入 1。

  5. 输入第一个可用的扇区编号:按回车键采用默认值 1。

  6. 输入最后一个扇区编号:因为这里仅创建一个分区,所以按回车键采用默认值。如果创建多个分区,可以在这里选择当前创建分区的大小。

  7. 输入 wq 并按回车键,开始分区。

查看新的分区:运行命令fdisk -l

完成之后,按照上一节挂载的步骤对分区进行挂载即可使用。

开机自动挂载

向 /etc/fstab 写入新分区信息:运行命令 echo /dev/vdb /mnt ext4 defaults 0 0 >> /etc/fstab

扩容

  1. 运行umount [文件系统名称]命令卸载主分区。

    1
    umount /dev/vdb1
  2. 使用 fdisk 命令删除原来的分区并创建新分区:

    1. 运行命令 fdisk -l 罗列分区信息并记录扩容前数据盘的最终容量、起始扇区(First sector)位置。
    2. 运行命令 fdisk [数据盘设备名] 进入 fdisk 界面。本示例中,命令为 fdisk /dev/vdb。
    3. 输入 d 并按回车键,删除原来的分区。

      删除分区不会造成数据盘内数据的丢失。

    4. 输入 n 并按回车键,开始创建新的分区。

    5. 输入 p 并按回车键,选择创建主分区。因为创建的是一个单分区数据盘,所以只需要创建主分区。

      如果要创建 4 个以上的分区,您应该创建至少一个扩展分区,即选择 e。

    6. 输入分区编号并按回车键。因为这里仅创建一个分区,所以输入 1。

    7. 输入第一个可用的扇区编号:为了保证数据的一致性,First sector 需要与原来的分区保持一致。在本示例中,按回车键采用默认值。
    8. 如果发现 First sector 显示的位置和之前记录的不一致,说明之前可能使用 parted 来分区,那么就停止当前的 fdisk 操作,使用 parted 重新操作。

    9. 输入最后一个扇区编号:因为这里仅创建一个分区,所以按回车键采用默认值。
      输入 wq 并按回车键,开始分区。

  3. 检查文件系统,并变更文件系统大小。

1
2
e2fsck -f /dev/vdb1 # 检查文件系统
resize2fs /dev/vdb1 # 变更文件系统大小

查看新的分区:运行命令fdisk -l

完成之后,按照上一节挂载的步骤对分区进行挂载即可使用。

SSH 使用密钥登陆

制作密钥对

1
2
3
4
5
6
7
8
9
10
[root@host ~]$ ssh-keygen  <== 创建密钥对
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): <== 按 Enter
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase): <== 输入密钥锁码,或直接按 Enter 留空
Enter same passphrase again: <== 再输入一遍密钥锁码
Your identification has been saved in /root/.ssh/id_rsa. <== 私钥
Your public key has been saved in /root/.ssh/id_rsa.pub. <== 公钥
The key fingerprint is:
0f:d3:e7:1a:1c:bd:5c:03:f1:19:f1:22:df:9b:cc:08 root@host

在服务器上安装公钥

将公钥拷贝到服务器上,然后执行:

1
2
[root@host ~]$ cd .ssh
[root@host .ssh]$ cat id_rsa.pub >> authorized_keys

本以为这样就结束了,搞了半天还是不行,发现还需要配置文件的权限:

1
2
[root@host .ssh]$ chmod 600 authorized_keys
[root@host .ssh]$ chmod 700 ~/.ssh

设置 SSH,打开密钥登录功能

编辑 /etc/ssh/sshd_config 文件,修改如下内容:

1
2
3
RSAAuthentication yes
PubkeyAuthentication yes
PermitRootLogin yes //root是否可以

重启 SSH 服务器就完成了

MySQL 安装配置

安装

首先安装 wget:

1
yum install wget

下载安装软件库,并更新:

1
2
3
wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm
sudo rpm -ivh mysql-community-release-el7-5.noarch.rpm
yum update

安装及启动:

1
2
sudo yum install mysql-server
sudo systemctl start mysqld

root 初始密码为空,可执行下面语句进行修改及初始化配置:

1
sudo mysql_secure_installation

重置 root 密码

如果忘记了密码,可以进行重置。

停止服务,并配置可不使用密码登陆:

1
2
sudo systemctl stop mysqld
sudo mysqld_safe --skip-grant-tables &

连接 MySQL:

1
mysql -u root

修改密码并推出:

1
2
3
4
use mysql;
update user SET PASSWORD=PASSWORD("password") WHERE USER='root';
flush privileges;
exit

重启服务:

1
sudo systemctl start mysqld

修改主机名

1
hostnamectl set-hostname  newhostname

NFS 安装配置

安装

NFS服务需要安装两个包:nfs-utils 和 rpcbind,使用 yum 安装 nfs-utils 时会自动安装 rpcbind:

1
yum install -y nfs-utils

配置/etc/exports文件:

在配置文件中增加内容,每一行分为三部分:

  • 本地要共享出去的目录
  • 允许访问的主机(ip或ip段),*表示不限制
  • 权限选项

例如:

1
/home/cotin/share 192.168.0.1/24(rw,sync,all_squash,anonuid=501,anongid=501)

权限说明如下:

  • rw 表示读/写
  • ro 表示只读
  • sync 表示数据同步写入内存缓冲区与磁盘中,效率较低,但可以保证数据的一致性(适合于小文件传输)
  • async 表示数据先暂时放于内存,而非直接写入硬盘,等到必要时才写入磁盘(适合于大文件传输)
  • no_root_squash 表示root用户对这个共享的目录拥有至高的控制权(不安全,不建议使用)
  • root_squash 表示root用户对这个共享的目录的权限和普通用户一样。
  • all_squash 表示不管使用NFS的用户是谁,其身份都会被限定成一个指定的普通用户。
  • no_all_squash 表示所有的普通用户使用nfs都不使用权限压缩(默认设置)
  • anonuid/anongid 要和root_squash以及all_squash选项一同使用,用于指定使用NFS的用户被限定后的uid和gid

启动服务:

1
2
systemctl start rpcbind.service
systemctl start nfs.service

修改配置文件/etc/exports后,使用exportfs命令挂载不需要重启NFS服务

1
exportfs -arv

命令选项:

  • -a 表示全部挂载或者卸载
  • -r 表示重新挂载
  • -u 表示卸载某一目录
  • -v 表示显示共享的目录

客户端挂载

查看服务器共享的目录:

1
showmount -e 服务器ip地址

挂载目录:

1
mount -t nfs 服务器ip地址:服务器共享目录  挂载点

“access denied by server while mounting”

使用了非法端口,也就是使用了大于1024的端口。这个错误,可以通过查看日志确认:

1
2
[root@local~ /]# cat /var/log/messages | grep mount
Jan 2 12:49:04 localhost mountd[1644]: refused mount request from 192.168.0.100 for /home/nfsshare/ (/home/nfsshare): illegal port 1689

解决办法:
修改配置文件/etc/exports,加入 insecure 选项,重启nfs服务,再尝试挂载。

1
/home/nfsshare/  *(insecure,rw,async,no_root_squash)

NFS版本问题

编辑/etc/sysconfig/nfs文件,找到下面:

1
2
3
4
#Turn off v2 and v3 protocol support 
#RPCNFSDARGS="-N 2 -N 3"
#Turn off v4 protocol support
#RPCNFSDARGS="-N 4"  /*把这句前面的#号去掉*/

最后保存,重启nfs服务,再尝试挂载

配置固定端口

NFS 开启的端口如下:

  • TCP/UDP 111 – RPC 4.0 portmapper
  • TCP/UDP 2049 – NFSD (nfs server)
  • mountd、rpc.statd、nlockmgr,在/etc/sysconfig/nfs文件中定义的一系列TCP/UDP端口

按 NFS 默认启动的话,很多服务如 rpc.mounted,端口都不是固定的,这样不方便在防火墙上进行管理,所以我们需要把每个启动的服务的端口固定下来,需要做的就是编辑/etc/sysconfig/nfs文件。

配置/etc/sysconfig/nfs文件:

1
2
3
4
RQUOTAD_PORT=6900
MOUNTD_PORT=6901
STATD_PORT=6902
STATD_OUTGOING_PORT=6903

配置/etc/modprobe.d/lockd.conf文件:

1
2
3
4
5
6
7
# Set the TCP port that the NFS lock manager should use.
# port must be a valid TCP port value (1-65535).
options lockd nlm_tcpport=6904
#
# Set the UDP port that the NFS lock manager should use.
# port must be a valid UDP port value (1-65535).
options lockd nlm_udpport=6904

保存退出,重启 NFS 服务即可。

配置防火墙:

1
2
3
4
5
6
7
8
sudo firewall-cmd --zone=public --add-port=111/tcp --permanent
sudo firewall-cmd --zone=public --add-port=111/udp --permanent

sudo firewall-cmd --zone=public --add-port=2049/tcp --permanent
sudo firewall-cmd --zone=public --add-port=2049/udp --permanent

sudo firewall-cmd --zone=public --add-port=6900-6904/tcp --permanent
sudo firewall-cmd --zone=public --add-port=6900-6904/udp --permanent

可使用命令rpcinfo -p查询结果:

NFS port

CPU 信息查看

1
2
3
4
5
6
7
8
# 查看 cpu 型号
sudo dmidecode -s processor-version
# 查看 cpu 个数
grep 'physical id' /proc/cpuinfo | sort -u | wc -l
# 查看核心数
grep 'core id' /proc/cpuinfo | sort -u | wc -l
# 查看线程数
grep 'processor' /proc/cpuinfo | sort -u | wc -l

CPU 个数

 CPU 的个数是指物理上,也就是硬件上存在着几颗物理 CPU,指的是真实存在的处理器的个数,1个代表1颗、2个代表2颗 CPU 处理器。

CPU 核心数

 一个核心就是一个物理线程,单核、双核、多核,指的就是物理核心的数目。   

CPU 线程数

 CPU 的线程数概念仅仅只针对 Intel 的 CPU 才有用,因为它是通过 Intel 超线程技术来实现的,最早应用在 Pentium4 上。如果没有超线程技术,一个 CPU 核心对应一个线程(因此对于一个CPU,线程数总是大于或等于核心数的)。所以,对于 AMD 的 CPU 来说,只有核心数的概念,没有线程数的概念。
 
 CPU 之所以要增加线程数,是源于多任务处理的需要:线程数越多,越有利于同时运行多个程序,因为线程数等同于在某个瞬间 CPU 能同时并行处理的任务数。
 
 因此,线程数是一种逻辑的概念,简单地说,就是模拟出的 CPU 核心数。一个核心最少对应一个线程,但英特尔有个超线程技术可以把一个物理线程模拟出两个线程来用,充分发挥 CPU 性能,即一个核心可以有两个到多个线程。

Cotin Yang wechat
欢迎订阅我的微信公众号 CotinDev
小小地鼓励一下吧~😘