利用 Hexo 搭建个人博客(二)VPS 初始环境配置
VPS 购买
正如前期准备里所说,你需要先选择一个 VPS ,这里我使用了 Linode 。登录、注册就不详细讲解了,实在看不懂可以去网上搜流程,购买需要使用信用卡, Linode 不支持支付宝和微信支付。套餐选择 5 美元/月的足够,节点可以选择日本,也可选择美国和其他地区,按需求考虑。
部署镜像
网页端选择 Linodes - Dashboard - Deploy an Image,然后你需要选择系统。Linux 有许多发行版,请选择你所熟悉的版本,个人选择 CentOS 7。至于其他建议默认就好,之后需要设置 root 密码,请牢记你设置的密码。
然后请点击 Deploy 就会自动开始部署,等大概一两分钟即可完成。
首次登陆
在 Dashboard 界面点击 boot ,等右侧 Server Status 显示 Running 后你就可以进行远程登陆了。
通过 SSH 登陆
SSH 登陆工具有很多,windows 端推荐 XShell,Mac 平台推荐 iTerm2,或直接使用终端也行。
IP 查找
之后请去 Linodes - Remote Access 下找到服务器的 IP 地址,SSH 登陆需要它。
指令输入
以使用 iTerm 为例,首先输入 ssh root@xxx.xxx.xxx.xxx ,回车,第一次登陆会有提示,直接输入 yes 回车即可。之后会提示你输入密码,注意终端下输入密码是不会显示的,所以不要以为你键盘坏了。当你登陆成功后屏幕会出现 root@liXXX-XXX:~#,这时你就可以对系统执行各种操作了。
(注)如果 Rebuild 服务器
若 SSH 远程连接被拒绝,简单粗暴的解决办法是删除 .ssh 文件夹下的 known_hosts 文件。( OS X / Linux 系统 ,请通过命令行删除,图形界面看不到 .ssh 文件夹 )
登陆成功后
软件升级
首先请执行 yum update ( CentOS ) 进行软件升级,所需时间取决网速还看脸,一般五分钟不到。
时区
接着设置时区,输入 timedatectl set-timezone 'Asia/Shanghai' 回车执行。输入 date 回车查看设置后服务器时间。
添加新用户
之后请设置一个新用户,一般不推荐用 root 用户直接在系统上执行操作。输入 useradd example_user && passwd example_user ( 请用你自己设定的名称代替 example_user ) ,输入你设定的密码,回车生效。接着输入 usermod -aG wheel example_user 给予 sudo 权限。
注:更多安全设置请见参考,即 Linode 文档,或自行搜索 Linux 相关知识。
安装 fail2ban
fail2ban 主要用于封禁尝试 SSH 暴力破解的 IP 地址。
安装命令( CentOS 7 )
yum update && yum install epel-release(升级,安装 EPEL 库)yum install fail2ban(安装 fail2ban)yum install sendmail(邮件通知,可选择)- 运行 fail2ban
systemctl start fail2ban(启动 fail2ban)systemctl enable fail2ban(开机启动 fail2ban)systemctl start sendmail(可选,如果装了邮件通知)systemctl enable sendmail(同上)
修改 jail.local 文件
- 执行
cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local即拷贝jail.conf文件并重命名为jail.local。 - 修改
jail.local文件,找到backend = auto,将auto修改为systemd。( 修改文件操作请自行搜索 ) - 同上,仍然在
jail.local文件下查找#[sshd] #enable = true,修改为[sshd] enable = true,即去掉#。 - 还是
jail.local文件下,查找bantime = 600,这是设置封禁时间,单位是秒,个人修改为 24 小时,即bantime = 86400。 - 找到
findtime = 600和maxretry = 3。这两个代码的含义是在十分钟内最多允许登陆三次,修改成你想要的值。 - 其余设置见参考。
- 保存文件后使用
systemctl restart fail2ban重启应用。
其他命令
- 检测 fail2ban 是否成功运行:
fail2ban-client ping。回应pong即成功。 - 检测状态:
fail2ban-client status。 - 查看被禁 IP :
fail2ban-client status sshd - 白名单添加 IP :
fail2ban-client set sshd addignoreip 192.168.123.456 - 白名单删除 IP :
fail2ban-cilent set sshd delignoreip 192.168.123.456 - 查看日志:
tail /var/log/fail2ban.log
错误
缺少文件
啟動 fail2ban 出現錯誤訊息
systemctl status fail2ban
● fail2ban.service - Fail2Ban Service
Loaded: loaded (/usr/lib/systemd/system/fail2ban.service; enabled; vendor preset: disabled)
Active: failed (Result: start-limit) since Fri 2017-02-17 12:46:16 CST; 2min 55s ago
Docs: man:fail2ban(1)
Process: 972 ExecStart=/usr/bin/fail2ban-client -x start (code=exited, status=255)Feb 17 12:46:16 NPC11 systemd[1]: Failed to start Fail2Ban Service.
Feb 17 12:46:16 NPC11 systemd[1]: Unit fail2ban.service entered failed state.
Feb 17 12:46:16 NPC11 systemd[1]: fail2ban.service failed.
Feb 17 12:46:16 NPC11 systemd[1]: fail2ban.service holdoff time over, sche…t.
Feb 17 12:46:16 NPC11 systemd[1]: start request repeated too quickly for f…ce
Feb 17 12:46:16 NPC11 systemd[1]: Failed to start Fail2Ban Service.
Feb 17 12:46:16 NPC11 systemd[1]: Unit fail2ban.service entered failed state.
Feb 17 12:46:16 NPC11 systemd[1]: fail2ban.service failed.
Hint: Some lines were ellipsized, use -l to show in full.
檢查 /var/log/message 中的紀錄
grep -i fail2ban /var/log/message
Feb 17 04:46:15 NPC11 systemd: Starting Fail2Ban Service…
Feb 17 04:46:15 NPC11 fail2ban-client: ERROR There is no directory /var/run/fail2ban to contain the socket file /var/run/fail2ban/fail2ban.sock.
Feb 17 04:46:15 NPC11 systemd: fail2ban.service: control process exited, code=exited status=255
Feb 17 04:46:15 NPC11 systemd: Failed to start Fail2Ban Service.
Feb 17 04:46:15 NPC11 systemd: Unit fail2ban.service entered failed state.
Feb 17 04:46:15 NPC11 systemd: fail2ban.service failed.
看起來似乎是在 /var/run/fail2ban 目錄下找不到 fail2ban.sock 這一個檔案
解決方式:
- 建立目錄
mkdir /var/run/fail2ban - 重新啟動 fail2ban 就正常了!
systemctl enable fail2ban.service;systemctl start fail2ban.service
[sshd] 没有去掉注释
error:
[xxx@xxxxxxxx ~]# fail2ban-client reload ERROR Failed during configuration: File contains no section headers. file: /etc/fail2ban/jail.local, line: 24 'enabled = true\n'
解决方式:
去掉 #[sshd] 前面的 #
配置 FirewallD 防火墙
CentOS 7 自带 FirewallD ,但没有启动。
- 输入
systemctl start firewalld启动。 - 输入
systemctl enable firewalld设置开机自启。 - 输入
systemctl stop firewalld禁用。 - 输入
systemctl disable firewalld停止。 firewall-cmd --state检查防火墙状态。firewall-cmd --zone=public --list-ports查看防火墙打开的端口。firewall-cmd --reload重新更新防火墙规则。firewall-cmd --zone=public --add-port=80/tcp --permanent添加 80 端口,没有–permanent参数在防火墙重启后失效。请自行添加其他所需端口。firewall-cmd --zone=public --remove-port=80/tcp --permanent删除 80 端口( 仅做举例 )
修改 SWAP 分区大小
查看 SWAP 分区:
free -h或者free -m删除所有 SWAP 分区:
swapoff -a新增 SWAP 分区:
1
dd if=/dev/zero of=/root/swapfile bs=1M count=1024
bs 是每块的大小,count 是块的数量,bs * count 就是 SWAP 分区的大小了。
/root/swapfile是 SWAP 文件的路径,可以根据需求修改。格式化交换分区:
mkswap /root/swapfile启动分区:
swapon /root/swapfile添加开机启动:
修改/etc/fstab文件,添加或修改:1
/root/swapfile swap swap defaults 0 0
CentOS 7 安装 wget
wget 是一个自动下载文件的工具,即可以在用户退出登陆后继续在后台执行任务。
yum -y install gcc gcc-c++ make kernel-develyum -y install wgetyum -y install setupyum -y install perl
安装 git
yum install gitgit config --global user.name examplename设置名称git config --global user.email user@example.com设置邮箱git config --list检查设置
安装 Node.js
- 推荐使用 nvm ,即 node version manager ( Node 版本管理器 )。
- Wget:
wget -qO- https://raw.github.com/creationix/nvm/master/install.sh | sh - cURL:
curl https://raw.github.com/creationix/nvm/master/install.sh | sh - 以上两者二选一,安装完成后重启终端。
nvm ls-remote查看版本。nvm install stable安装稳定版nvm install v8.5.0安装某个版本 (此处为 v8.5.0 版本 )- 各个版本 node 安装路径为:
~/.nvm/versions/node/
其它:卸载 Node.js
包管理卸载
yum remove nodejs npm -y
手动卸载
/usr/local/lib下删除node和node_modules文件夹/usr/local/include下删除node和node_modules文件夹- 删除
/usr/local/bin/npm - 删除
/usr/local/share/man/man1/node.1 - 删除
/usr/local/lib/dtrace/node.d rm -rf /home/[homedir]/.npmrm -rf /home/root/.npm
安装 Nginx
rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpmyum install -y nginxsystemctl start nginx
接着访问 localhost ,你就能看到欢迎界面。
Nginx 默认路径
- 配置路径:
/etc/nginx/ - PID 目录:
/var/run/nginx.pid - 错误日志:
/var/log/nginx/error.log - 访问日志:
/var/log/nginx/access.log - 默认站点目录:
/usr/share/nginx/html
安装 PM2
PM2 是一个带有负载均衡功能的 Node 应用的进程管理器。
安装
npm install -g pm2
用法
pm2 start xxx.js启动某进程pm2 start app.js --watch当文件变化时自动重启应用pm2 list显示所有进程pm2 monit监视每个进程 CPU 和内存使用情况pm2 logs显示所有进程日志pm2 stop all停止所有进程pm2 restart all重启所有进程pm2 reload all重载所有进程pm2 stop 0停止某个进程pm2 delete all删除所有进程pm2 delete 0删除某个进程pm2 startup创建开机自启动命令pm2 save保存当前应用列表pm2 resurrect重新加载保存的应用列表