Linode VPS 使用记录
系统配置
linux 版本信息
$ cat /etc/os-release
NAME="CentOS Linux"
VERSION="7 (Core)"
ID="centos"
ID_LIKE="rhel fedora"
VERSION_ID="7"
PRETTY_NAME="CentOS Linux 7 (Core)"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:centos:centos:7"
HOME_URL="https://www.centos.org/"
BUG_REPORT_URL="https://bugs.centos.org/"
CENTOS_MANTISBT_PROJECT="CentOS-7"
CENTOS_MANTISBT_PROJECT_VERSION="7"
REDHAT_SUPPORT_PRODUCT="centos"
REDHAT_SUPPORT_PRODUCT_VERSION="7"
$ uname -a
Linux li1854-130.members.linode.com 3.10.0-1127.el7.x86_64 #1 SMP Tue Mar 31 23:36:51 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
时区设置为东八区Shanghai
默认情况下,Amazon Linux 实例设置为 UTC (协调世界时) 时区,将其修改为东八区,即上海
1、确保系统中有 Shanghai 的时区文件 /usr/share/zoneinfo/Asia/Shanghai
2、在 /etc/localtime
与时区文件之间创建一个符号链接,以便实例在引用本地时间信息时找到此时区文件。
sudo ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
3、重启系统,以便所有服务和应用程序接受新时区信息。
sudo reboot
不想重启系统的话,可以分别重启需要读取新时区的应用,以便读取新时区。
给linux添加swap交换文件(即虚拟内存)
1、创建大小为 2G 的交换文件 sudo dd if=/dev/zero of=/swapfile1 bs=1M count=2048
2、修改文件的权限,避免其他用户对这个文件进行误操作:
sudo chmod 600 /swapfile1
3、使用mkswap命令来设置交换文件 sudo mkswap /swapfile1
4、启用交换文件:
sudo swapon /swapfile1
5、写入 /etc/fstab
, 以便在系统启动时自动加载交换文件:
/swapfile1 none swap defaults 0 0
# cat /etc/fstab
#
# /etc/fstab
# Created by anaconda on Tue May 26 21:38:41 2020
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/sda / ext4 defaults 1 1
/dev/sdb none swap defaults 0 0
/swapfile1 none swap defaults 0 0
新添了交换分区并启用它之后,请查看 cat /proc/swaps
或 free
或 swapon -s
命令的输出来确保交换分区已被启用了。
创建用于远程登录的新账户
root 账户远程登录不安全,创建一个新账户
1 useradd testuser
创建用户 testuser
2 passwd testuser
给已创建的用户 testuser 设置密码
3 usermod -aG wheel testuser
将用户加入 wheel 用户组,以便可以使用 sudo 提升权限
之后的所有远程登录和操作都使用这个新账号,不使用 root
FirewallD防火墙配置
hexo 博客搭建好后始终无法从外网访问,原来是 centos7 默认开启了 firewalld 防火墙,拦截了所有外网流量,关闭防火墙或按需配置规则。
1 启动和启用 firewalld
sudo systemctl start firewalld
sudo systemctl enable firewalld
2 禁用和停止 firewalld
sudo systemctl stop firewalld
sudo systemctl disable firewalld
3 查看 firewalld 运行状态,结果是 running
或 not running
sudo firewall-cmd --state
4 查看 firewalld 状态,会输出一些详细信息
sudo systemctl status firewalld
Introduction to FirewallD on CentOS
https://www.linode.com/docs/security/firewalls/introduction-to-firewalld-on-centos/
ssh密钥登录配置
本机生成密钥
1 ssh-keygen -f linode
一路回车不需要密码,得到私钥 linode 和公钥 linode.pub
服务器添加ssh公钥
linode 管理界面上有添加公钥的地方,但添加后不起作用,登录还是需要输入密码,需要手动在服务器上添加。
使用 非 root 账户登录服务器后
1、创建 .ssh 目录 和 authorized_keys 文件
mkdir -p ~/.ssh && touch ~/.ssh/authorized_keys
2、修改权限
chmod 700 ~/.ssh && chmod 600 ~/.ssh/authorized_keys
3、拷贝公钥到 authorized_keys 中
注意:如果是用 root 账号 创建的 .ssh 目录 和 authorized_keys 文件,还需要把 .ssh 的 owner 改为实际登录的账户
chown -R your_username:your_username /home/your_username/.ssh
Use Public Key Authentication with SSH
https://www.linode.com/docs/security/authentication/use-public-key-authentication-with-ssh/
设置ssh回话超时时间
基于安全的理由,如果用户连线到 SSH Server 后闲置,SSH Server 会在超过特定时间后自动终止 SSH 连线。
为了避免总是被强行退出,可设置ssh超时时间。
编辑 sshd_config 配置文件
sudo vi /etc/ssh/sshd_config
找到注释掉的如下2个配置项,改为:
ClientAliveInterval 60
ClientAliveCountMax 3
ClientAliveInterval
指定了服务器端向客户端请求no-op包的时间间隔, 默认是0, 不发送。设置60表示每60秒发送一次, 然后客户端响应, 这样就保持长连接了。
ClientAliveCountMax
表示服务器发出请求后客户端没有响应的次数达到一定值, 就自动断开。正常情况下, 客户端不会不响应,使用默认值3即可。
修改后重新启动 sshd 服务
sudo service sshd restart
本机配置ssh别名
Host linode
HostName 127.0.0.1
IdentityFile ~/.ssh/linode.rsa
User linodeuser
之后直接 ssh linode
即可免密登录了
安装git并连接GitHub
使用 非 root 账户 登录后
1 直接yum安装即可
sudo yum install git
git 需要依赖 perl 等库,会自动安装这些依赖。
2 ssh-keygen -P '' -f github
生成密钥对, 使用默认加密算法,文件名指定github,得到私钥文件 github,公钥文件 github.pub
登录github页面,添加公钥到github
3 配置 ~/.ssh/config 文件(没有的话自己重建一个),指定不同域名使用不同key
Host github.com *.github.com
IdentityFile ~/.ssh/github
修改 config 文件权限 sudo chmod 600 config
否则提示 Bad owner or permissions on .ssh/config
ssh -T git@github.com
测试连接是否成功
注意:
1、执行 ssh-keygen
命令时,不要加 sudo
,否则生产的文件拥有者是root,当前账户无法读取密钥文件,会导致 Permission denied (publickey)
2、执行 ssh -T git@github.com
测试连接是否成功时,也不能加 sudo
,否则账户不对,读取不到密钥。
安装docker ce
Docker 分为 CE 和 EE 两大版本。CE 即社区版(免费,支持周期 7 个月),EE 即企业版,强调安全,付费使用,支持周期 24 个月。
参考笔记 Docker
安装 docker repo
1 安装 yum 仓库管理工具 yum-utils, 以及 device-mapper-persistent-data, lvm2
$ sudo yum install -y yum-utils \
device-mapper-persistent-data \
lvm2
2 安装 docker repo
$ sudo yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
安装完可以在 /etc/yum.repos.d/
中看到 docker-ce.repo
文件
docker-ce.repo
中默认只有 docker-ce-stable
是开启的,即只开启稳定版的repo
yum安装最新版docker
sudo yum install docker-ce docker-ce-cli containerd.io
我安装的版本信息
已安装:
containerd.io.x86_64 0:1.2.13-3.2.el7
docker-ce.x86_64 3:19.03.12-3.el7
docker-ce-cli.x86_64 1:19.03.12-3.el7
启动docker并验证
启动docker
sudo systemctl start docker
设置开机启动
sudo systemctl enable docker
验证
sudo docker run hello-world
注意必须加 sudo,启动 ducker 需要 root 权限
此命令将从 dokcerhub 下载一个 hello-world 镜像并启动一个容器
看到如下提示说明安装正确
Hello from Docker!
This message shows that your installation appears to be working correctly.
将当前用户加入docker用户组
默认情况下,docker 命令会使用 Unix socket 与 Docker 引擎通讯。
而只有 root 用户和 docker 组的用户才可以访问 Docker 引擎的 Unix socket。
出于安全考虑,一般 Linux 系统上不会直接使用 root 用户。
因此,更好地做法是将需要使用 docker 的用户加入 docker 用户组。
1 sudo groupadd docker
建立 docker 组
2 sudo usermod -aG docker $USER
将当前用户加入 docker 组
3 docker run hello-world
退出 linux 重新登录,不加 sudo 执行 docker,成功说明当前用户加入docker用户组没问题。
hexo环境搭建
git拉取hexo项目代码
yum安装node和npm
Installing Node.js via package manager
https://nodejs.org/en/download/package-manager/
NodeSource Node.js Binary Distributions
https://github.com/nodesource/distributions/blob/master/README.md
使用官方脚本添加NodeSource源
nodejs 官方制作了添加 node 源的在线脚本,直接下载执行就行,不需要再手动添加 epel 和 remi 源了
# As root
curl -sL https://rpm.nodesource.com/setup_14.x | bash -
# No root privileges
curl -sL https://rpm.nodesource.com/setup_14.x | sudo bash -
最后会提示执行 sudo yum install -y nodejs
来安装 nodejs 和 npm
安装nodejs
按照安装 NodeSource 源时输出信息的提示,使用 yum 来安装 nodejs
sudo yum install -y nodejs
安装 nodejs 时自动会安装 npm 工具,完成后查看版本验证安装成功:
$ node -v
v14.8.0
$ npm -v
6.14.7
nodejs降级为稳定版本
最新版 nodejs 有问题,hexo g 生成的博客 index.html 页面是 0kb 空白的,降级为稳定版。
1 sudo npm install n -g
安装 node 版本管理模块 n
2 sudo n stable
安装最新稳定版 node
我这里安装的稳定版是 12.18.3
安装后可能由于缓存不会立即生效,node -v
查看默认node版本还是之前的,登出系统后再登入即可。
npm安装hexo
sudo npm config -g set unsafe-perm
全局设置 npm 的 unsafe-perm
标识,避免出现权限问题。
sudo npm install -g hexo-cli
,安装hexo最新版
进入 hexo 项目目录
sudo npm install
,根据 package.json
安装依赖