Centos7醉生梦死(1/N)服务器基本配置

准备了一台 intel 骷髅侠,装了centos 作为后续 docker 集群/分布式的实验机

网络配置

装完 Centos7.6 的 Server,发现网络没有开启。

(注意,它默认没有安装 net-tools,即 ifconfig 用不了)

可以通过 nmcli 检查如下:

[ch-yk@centos-dev ~]$ nmcli dev status
DEVICE  TYPE      STATE   CONNECTION 
eno1    ethernet  连接的  eno1       
lo      loopback  未托管  --         
wlp3s0  wifi      未托管  --  

未连接的就表示有,但是没有连接,去配置一下 /etc/sysconfig/network-scripts 即可。

[ch-yk@centos-dev ~]$ ls /etc/sysconfig/network-scripts/
ifcfg-eno1   ifdown-eth   ifdown-post    ifdown-Team      ifup-aliases
...

这里的 eno1 这个 SSID 可以通过 ip addr 来确定。

确认SSID编号

具体编辑内容,比如我的,编辑 ifcfg-eno1 文件,把其中的 ONBOOT=yes 修正,然后重启服务 service network restart

  • 这个文件也可以像 /etc/resolv.conf 一样配置 DNS,例如 DNS1=114.114.114.114DNS2=8.8.8.8
  • 最好通过 if 命令配置网络相关的内容 (需要参考其他学习资料,略)

处理完有线问题,如果你真的需要再来处理 wifi,具体其实就是安装 NetworkManager-wifi 包,然后重启 NetworkManager

  • wifi 的启用,请自行安装上述 NetworkManager-wifi 包,然后 systemctl restart NetworkManager

(但是既然要作为开发机的部署环境,非生产环境的要求,也应该选择有线端口,而不是 wifi,主要是稳定性和延迟)

此后可以用 ping 测试一下延迟,用 dd 测试一下读写速度(吞吐)。(不测也没事儿,后续部署 分布式 应用的时候再来压测)

ssh及登录配置

无秘钥登录,把自己的公钥追加到对方的 authorized_keys 文件中

  • 拷贝请用 scp 或者 ssh 登录名后面 -c 接 cat 追加命令 (略)
  • 如果本机没有秘钥请自行生成 ssh-keygen -t rsa -P 存放秘钥的位置

然而,让人恼火的是,配置完毕之后一直登不上去了。OK,中奖了。

先看查看日志:

$ cat /var/log/secure
...
sshd[25100]: Authentication refused: bad ownership or modes for directory ...
...

可以看到,上面已经说了肯定是 chmod 的问题,然后尝试了一下,结论如下:

  • .ssh 目录 744 失败,调整成 700 问题 solved
  • .ssh/authorized_keys 调整成 644 失败,调整成 600 解决

也就是说 sshd 这货(ssh2.0) 其实要求还是蛮严格的。

$ sudo chmod 700 ~/.ssh
$ sudo chmod 600 ~/.ssh/authorized_keys

这里可能还有一个问题,client,也就是我的 Mac 上面的有多个 ssh key,此时要用 config 去解决:

$ cat $HOME/.ssh/config
...

HOST 192.168.xx.xxx
  User yyyy
  HostName 192.168.xx.xxx
  IdentityFile ~/.ssh/xxx
  port 22

...  

每一小段配置一台机器,git 提交的时候,也要参考这里的 ssh 配置的。

(上述问题虽小,但是需要试错才能找到问题,故而记录一笔,给人参考,提示)
(再不行,请去 /var/log/ 中找到相应的日志文件查看,一般是定位 secure 文件)

后面还需要配置 禁止密码登录 的话,请配置 /etc/ssh/sshd_config 文件中的 PasswordAuthentication 为 no。

yum源配置

很显然,我要安装软件,就要找一个快一点儿的(国内)镜像。

  • 安装 live-cd 的时候,下载是用 163 的 Mirror
  • 这里 Repo,经我测试,还是阿里云比较稳,当然 清华 也可以

直接说 结论:

  • redhat系列的yum配置文件放在 /etc/yum.repos.d/xxx.repo,基本格式为:
[xxx]
name=xxx
baseurl= http://xxxxx    镜像仓库链接
gpgcheck=0      不扫描

所以安装也就是下载一个配置文件:

  • 先备份旧文件啊 sudo mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak

安装配置源

可以检查一下是否安装成功了:

[root@localhost ~]# yum clean all
已加载插件:fastestmirror
正在清理软件源: base extras updates
Cleaning up list of fastest mirrors
[root@localhost ~]# 
[root@localhost ~]# yum repolist
已加载插件:fastestmirror
Determining fastest mirrors
 * base: mirrors.aliyun.com
 * extras: mirrors.aliyun.com
 * updates: mirrors.aliyun.com
base                                                                                                                     | 3.6 kB  00:00:00     
extras                                                                                                                   | 3.4 kB  00:00:00     
updates                                                                                                                  | 3.4 kB  00:00:00     
(1/4): base/7/x86_64/group_gz                                                                                            | 166 kB  00:00:00     
(2/4): extras/7/x86_64/primary_db                                                                                        | 215 kB  00:00:00     
(3/4): updates/7/x86_64/primary_db                                                                                       | 7.4 MB  00:00:00     
base/7/x86_64/primary_db       FAILED                                          
http://mirrors.aliyuncs.com/centos/7/os/x86_64/repodata/6614b3605d961a4aaec45d74ac4e5e713e517debb3ee454a1c91097955780697-primary.sqlite.bz2: [Errno 12] Timeout on http://mirrors.aliyuncs.com/centos/7/os/x86_64/repodata/6614b3605d961a4aaec45d74ac4e5e713e517debb3ee454a1c91097955780697-primary.sqlite.bz2: (28, 'Connection timed out after 30001 milliseconds')
正在尝试其它镜像。
(4/4): base/7/x86_64/primary_db                                                                                          | 6.0 MB  00:00:00     
源标识                                                   源名称                                                                           状态
base/7/x86_64                                            CentOS-7 - Base - mirrors.aliyun.com                                             10,019
extras/7/x86_64                                          CentOS-7 - Extras - mirrors.aliyun.com                                              435
updates/7/x86_64                                         CentOS-7 - Updates - mirrors.aliyun.com                                           2,500
repolist: 12,954

当跟换源头或者新增,可以用 yum clean all 试试清理一下源。(之后 yum makecache 更新软件包缓存)

  • 因为阿里源虽然稳定,但很多包有时候找不到,备用源头,三方源头推荐 sudo yum install epel-release

(yum 怎么用? man yum or yum --help 老清晰了;没事儿谁这么无聊还刻意去记忆呢?)

安装,举例 yum install emacs -yyum install docker -y

  • 最好安装一下 yum-axelget,这样下载软件就会是并行下载的了

(如果没有的,那么需要自行查找安装,而非借助 yum 工具,比如 docker-compose )

Tips: 升级的话,请用 yum upgrade 升级软件吧,谁没事儿老用 yum update 升级包及系统和内核呢?

安全配置

这台机器其实是放在内网,供开发随时部署测试效果的。

  • 也就是说,我的 Mac Client 会把 hosts 某个固定域名改到这里的固定 IP
  • 换句话说,不暴露给外网的

那么我其实是不太需要配置 SELinux 这类细粒度的 ACL 以及 Firewall 的。

先看下默认情况是个什么鬼?

# getenforce
Enforcing

# systemctl status firewalld.service
● firewalld.service - firewalld - dynamic firewall daemon
   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
   Active: active (running) since 二 2019-09-17 18:44:09 CST; 3h 39min ago
     Docs: man:firewalld(1)
 Main PID: 5438 (firewalld)
   CGroup: /system.slice/firewalld.service
           └─5438 /usr/bin/python -Es /usr/sbin/firewalld --nofork --nopid

9月 17 18:44:08 localhost.localdomain systemd[1]: Starting firewalld - dynamic firewall daemon...
9月 17 18:44:09 localhost.localdomain systemd[1]: Started firewalld - dynamic firewall daemon.

默认挺好的,这里目前不需要动。(可能后续安装了某个软件或许要变动一下?应该不会吧😲)

  • 我打脸了,还是关闭了吧,后续需要部署的时候,某些端口需要配置太麻烦

如果一定要动,这里参考如下:

1.关闭防火墙

# 停止
systemctl stop firewalld.service

# 禁用
systemctl disable firewalld.service

2.关闭SELinux

# 停止
setenforce 0

# 禁止
/etc/sysconfig/selinux 中 设置 SELINUX=disabled

然后 restart 机器。

(后续会安装一个图形段,来统一配置它们,类似 宝塔面板,但不要钱)

主机名配置

讲真,默认配置的 root@localhost 确实很让我在意。

  • 安装的时候,也没有给我机会选择吧?(或者我没看到) — 有的,安装的时候在网络部分就有

并且,个人也不想通过 profile 或者 bashrc 修改。

查了一下资料,这里有一个解决方案,直接说结论:

$ hostname 显示当前主机名


$ hostnamectl set-hostname 新名字

例如我修改为了 centos-dev,不用重新登录,默认已经修改了。

[root@centos-dev ~]# 已经修改的

sudo组配置

安装的时候,我是有新建一个用户的,但是 sudo 命令被禁止了(忘记勾选设置为管理员了),毕竟不是管理员。

  • 如果安装的时候,没有创建新用户,那么可以用 adduser 这个交互式询问进行的命令创建

(useradd 命令的选项太多了,至少我是记不住的;不写某些选项,默认就是没有; 动词在前的优先使用)

那么如何添加到 sudoer 组?(看上面)

我这么懒,肯定不想去编辑 /etc/sudoers 文件 (也不想去记都是什么意思)

简单的方法就是 usermod -aG 啦,注意没有 -a 是覆盖,一般都需要 -a,表示 append。

  • 添加 副组 操作,一般都是 -a -G,简写 -aG

那么 sudoers 到底是个什么组?用 cat /etc/group 查看一下,要么是 sys,要么是 wheel,肯定不能是 user 了。

没办法,还是看看 /etc/sudoer 怎么说?

# cat /etc/sudoers
## Sudoers allows particular users to run various commands as
## the root user, without needing the root password.
##

.... 省略


## Next comes the main part: which users can run what software on 
## which machines (the sudoers file can be shared between multiple
## systems).
## Syntax:
##
##     user    MACHINE=COMMANDS
##
## The COMMANDS section may have other options added to it.
##
## Allow root to run any commands anywhere 
root    ALL=(ALL)     ALL

## Allows members of the 'sys' group to run networking, software, 
## service management apps and more.
# %sys ALL = NETWORKING, SOFTWARE, SERVICES, STORAGE, DELEGATING, PROCESSES, LOCATE, DRIVERS

## Allows people in group wheel to run all commands
%wheel    ALL=(ALL)    ALL

## Same thing without a password
# %wheel    ALL=(ALL)    NOPASSWD: ALL

## Allows members of the users group to mount and unmount the 
## cdrom as root
# %users  ALL=/sbin/mount /mnt/cdrom, /sbin/umount /mnt/cdrom

## Allows members of the users group to shutdown this system
# %users  localhost=/sbin/shutdown -h now

## Read drop-in files from /etc/sudoers.d (the # here does not mean a comment)
#includedir /etc/sudoers.d

看到上面 wheel 就清晰了,这一点不同于 Ubuntu,毕竟 sudo 组不存在啊。

# usermod -a -G sudo ch-yk
usermod:“sudo”组不存在

# id ch-yk
uid=1000(ch-yk) gid=1000(ch-yk)=1000(ch-yk)

# usermod -aG wheel ch-yk

# id ch-yk
uid=1000(ch-yk) gid=1000(ch-yk)=1000(ch-yk),10(wheel)

欧了,重新登录一下我的账号,随便检查一下需要权限的,比如 sudo cat /etc/group 操作,即可知道已经成功。

(btw: 不是我喜欢改 /etc/sudoers 这个文件,而是命令能解决,就用它封装的不好么)

cyberpanel配置

直译的话,Cyber 网络的,Panel 面板,其实就是一个类似于但弱于宝塔面板的 GUI 管理面板。

CyberPanel gives you the control of your hosting environment and allows you to host your websites in a more easy manner, yet CyberPanel also boasts a high performance with an event-driven architecture that is super light weight with a minimal CPU and memory footprint. – from this site

为什么要装这个?一时脑子热,装完就后悔了。

我已经试过错了,过程简单记录如下:

# yum install wget -y

# cd /usr/local/src && wget https://cyberpanel.net/install.sh && sh install.sh

我当然选不要钱的 1 啦

至于其他的选项,如果没有其他要求,可以直接像我一样,all y 走下去。(它自身会进行一些网速和延迟的测试)

  • 安装这个 https://cyberpanel.sh/install.tar.gz 有点慢。(30 kB/s)

(整个过程,差不多花了 2 个多小时)

界面大致展示

最后,这个用户友好的 GUI,别太依赖,用少量的功能即可。(比如后续 db slave操作,这个就完成不了)

(然后,用了一天,发现是在太鸡肋了,举个例子,比如配置 nginx 我更在行;它的功能偏简单,例如,内存都不显示实际有多少占用,而只显示百分比,无其他选项,且存在一些明显的错误,如磁盘空间显示错误,用户列表信息显示 fetch 成功,但实际上没有显示等等…)

信息显示错误

还是补充一句吧: 如果你想卸载,非常麻烦,所以我选择直接重装了(同时为了去除centos全盘磁盘加密)。


   转载规则


《Centos7醉生梦死(1/N)服务器基本配置》 欧文 采用 知识共享署名 4.0 国际许可协议 进行许可。
  目录