玩命狂奔的间隙,莫忘记抬头看看前路的星光

0%

十分钟完成centOS/Ubuntu服务器配置

前言

已经荒废了6年的网站,最近打算重新运行起来,正好把这一波操作都记下来。从第一次SSH登录服务器开始,到安装nginx/vsftpd/Git/Node/hexo的快速部署和问题解决方案,应该能给需要配置服务器的朋友节省不少时间。

提示:以下操作均在centOS上实操进行,如果涉及到yum install,Ubuntu系统对应使用apt-get代替即可;理论上来说大体是差不多的;

远程登录服务器

SSH连接错误 Host key verification failed.

错误输出:

1
2
3
4
5
6
7
8
9
10
11
12
13
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that a host key has just been changed.
The fingerprint for the ECDSA key sent by the remote host is
SHA256:cidhwMKPa7H4Kl4raE51/GYJNYvsf8J1b7/9SikONao.
Please contact your system administrator.
Add correct host key in /Users/username/.ssh/known_hosts to get rid of this message.
Offending ECDSA key in /Users/username/.ssh/known_hosts:16
ECDSA host key for ourbrander.com has changed and you have requested strict checking.
Host key verification failed.

解决: ssh-keygen -R 要登录的IP地址或域名

1
ssh-keygen -R 193.110.126.41

输出:

1
2
/Users/username/.ssh/known_hosts updated.
Original contents retained as /Users/username/.ssh/known_hosts.old

客户端设置ssh连接时间

修改SSH配置文件(没有就新建): /etc/ssh/ssh_config

1
2
TCPKeepAlive yes
ServerAliveInterval 300

Shell SSH登录显示警告setlocale: LC_CTYPE: 无法改变区域选项 (UTF-8)

在/etc/environment加入(没有就新建)

1
2
LC_ALL=en_US.UTF-8
LANG=en_US.UTF-8

硬盘分区与挂载

查看已挂载分区

1
df -h

输出

1
2
3
4
5
6
7
8
Filesystem      Size  Used Avail Use% Mounted on
devtmpfs 1.9G 0 1.9G 0% /dev
tmpfs 1.9G 24K 1.9G 1% /dev/shm
tmpfs 1.9G 536K 1.9G 1% /run
tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
/dev/vda1 50G 2.6G 45G 6% /
tmpfs 379M 0 379M 0% /run/user/1000
/dev/vdb1 20G 45M 19G 1% /data

查看所有硬盘

1
fdisk -l

输出:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Disk /dev/vda: 53.7 GB, 53687091200 bytes, 104857600 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x0009ac89

Device Boot Start End Blocks Id System
/dev/vda1 * 2048 104857566 52427759+ 83 Linux

Disk /dev/vdb: 21.5 GB, 21474836480 bytes, 41943040 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x8bee9025

Device Boot Start End Blocks Id System
/dev/vdb1 2048 41943039 20970496 83 Linux

数据盘格式化

1
fdisk /dev/vdb

按照界面的提示,依次输入“n”(新建分区)、“p”(新建扩展分区)、“1”(使用第1个主分区),两次回车(使用默认配置),输入“wq”(保存分区表),回车开始分区。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
Disk /dev/vdb: 247.0 GB, 246960619520 bytes, 482344960 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

[root@VM_0_12_centos /]# fdisk /dev/vdb
Welcome to fdisk (util-linux 2.23.2).

Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.

Device does not contain a recognized partition table
Building a new DOS disklabel with disk identifier 0x653179c9.

Command (m for help): data
No partition is defined yet!

Command (m for help): n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p
Partition number (1-4, default 1): 1
First sector (2048-482344959, default 2048):
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-482344959, default 482344959):
Using default value 482344959
Partition 1 of type Linux and of size 230 GiB is set

Command (m for help): wq
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.

分区格式化

分区好后,格式成需要的硬盘格式。我们使用ext4;你也可以使用ext3或其他;

1
mkfs.ext4 /dev/vdb1

挂载分区

单次挂载分区
1
mount  /dev/vdb1  /data
自动挂载
  • 查看分区的UUID
1
blkid  /dev/vdb1

输出:

1
/dev/vdb1: UUID="9ce370e8-c331-41a5-bb26-9bde1515ac15" TYPE="ext4"
  • 自动挂载
1
vim /etc/fstab
  • 在fstab里加入需要自动挂载的分区的UUID等信息
1
2
UUID=4b499d76-769a-40a0-93dc-4a31a59add28 /                       ext4    defaults        1 1
UUID=9ce370e8-c331-41a5-bb26-9bde1515ac12 /data ext4 defaults 1 1

按esc然后输入 wq编辑保存;

  • 重启输入 df -h 查看挂载
1
df -h

挂载完成后,输入reboot;启动以后再使用命令查看是否已经挂载完成;

账户安全

禁止root账号远程登录

因为root拥有最大管理权限,如果允许远程访问,会导致极大风险,
日程使用如果手抖,删除了东西也很麻烦,因此,日程不要直接使用root账户进行维护工作;

先创建一个用户 superman(名字自定义,这里只是例子):

1
adduser superman -g root

创建密码

1
passwd superman

退出console,使用新的用户登录服务器

1
ssh superman@example.com  #后面写你自己的IP或者解析的域名

登录后,禁止root远程登录

1
su root

切换到root权限下,修改禁止root远程登录

1
vim /etc/ssh/sshd_config

将:PermitRootLogin no 去掉注释,且设置为yes,完整为:

1
PermitRootLogin no

保存退出后,重启sshd服务,再尝试root远程登录,发现已经生效:

1
2
3
ssh root@example.com
root@example.com's password:
Permission denied, please try again.

删除用户(谨慎操作)

1
userdel superman -r  #会删除 /home/superman

安装服务

更新服务器

1
yum -y update

安装VSFTPD服务

安装
1
yum install vsftpd
配置
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
anonymous_enable=NO   #默认为YES,需要改成NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES

chroot_local_user=YES #默认被注释,需要打开
chroot_list_enable=YES #默认被注释,需要打开
chroot_list_file=/etc/vsftpd/chroot_list #设置你的允许例外的用户名,可以不设置,但是需要有这个文件。没有自己vim /etc/vsftpd/chroom_list 新建一个即可。

#如果使用IPV4以下变量要如下设置
listen=YES #默认为NO,需要改成YES。
listen_ipv6=NO #默认为YES,需要改成NO。


pam_service_name=vsftpd #这里无需修改,网上很多文章都是错误的。但是需要
userlist_enable=YES
tcp_wrappers=YES
关闭pam里vsftpd不需要的设置,不然是无法登录的。
1
2
3
vim /etc/pam.d/vsftpd
# 将文件里的下面一行注释即可,原因是为了安全起见,一般FTP用户是不会与shell的。
#auth required pam_shells.so
如果有希望可以跳转根路径的FTP用户,在/etc/vsftpd/chroot_list添加
1
2
3
vim /etc/vsftpd/chroot_list
#添加一行,例如用户是superman 保存即可。
superman
卸载vsftpd
1
2
3
4
5
6
7
8
9
10
11
12
[root@VM_170_177_centos ~]# systemctl stop vsftpd.service  #停止服务

[root@VM_170_177_centos ~]# rpm -aq vsftpd #查询vsftpd
vsftpd-3.0.2-25.el7.x86_64

[root@VM_170_177_centos ~]# rpm -e vsftpd-3.0.2-25.el7.x86_64 #卸载

warning: /etc/vsftpd/vsftpd.conf saved as /etc/vsftpd/vsftpd.conf.rpmsave #可以手动删除
warning: /etc/pam.d/vsftpd saved as /etc/pam.d/vsftpd.rpmsave #可以手动删除

[root@VM_170_177_centos ~]# systemctl status vsftpd.service #查询是否还存在
Unit vsftpd.service could not be found.

nginx

安装nginx
1
yum install -y nginx
自动启动
1
systemctl enable nginx  #启动时自动开启nginx 服务
手动开启/停止/重启 服务
1
2
3
systemctl start nginx.service  #启动
systemctl stop nginx.service #停止
systemctl restart nginx.service #重启

如果需要执行其他的服务,例如vsftpd,也是同样的命令

安装NODEJS

安装NVM来安装和管理NVM
1
wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.3/install.sh | bash

Github 仓库获得详细说明和帮助:https://github.com/nvm-sh/nvm

安装node
1
nvm install node
安装pm2模块方便实现后台运行nodejs的脚本
1
npm  install -g pm2

pm2 如何用:

1
pm2 start xxx.js #具体自己看pm2的帮助即可

安装GIT和gitolite

安装GIT
1
yum install git

写在最后

根据每个服务器的不同,有些运行PHP服务,有些喜欢Go,还有NodeJs、JAVA等,具体的服务安装和配置如果要写将放在单独的文章里,不在这里赘述。