新服务器们的日常调戏

很长时间没有发布博客了,这两个月几乎就是一直在捣鼓新买的两台VPS服务器:一台Debian和一台CentOS。主要的想法就是把所有跟个人有关的内容全都放到Debian上去,然后用CentOS来搭建一个游戏服务器。可以说现在已经大部分部署完成了,所以想要记录一下大致的流程。大部分的参考都是根据Linode所提供的帮助文档来进行的。

基础配置与设置

Debian的参考配置与步骤:

apt update && apt upgrade

echo "debian" > /etc/hostname
hostname -F /etc/hostname

vim /etc/hosts
# 依次输入 <IP Address> <Domain> <Alias>

dpkg-reconfigure tzdata # 时区设置

adduser user
adduser user sudo # 将user加入到sudo组中

########## 本地设置 开始 ##########
ssh-keygen -b 4096
ssh-copy-id user@196.168.0.1 # 更换为自己的IP Address
########## 本地设置 结束 ##########

sudo vim /etc/ssh/sshd_config
# 设置PermitRootLogin和PasswordAuthentication都为no

CentOS的参考配置与步骤:

yum update
# Note: dnf is the next-generation version of yum

hostnamectl set-hostname centos

vim /etc/hosts
# 依次输入 <IP Address> <Domain> <Alias>

timedatectl list-timezones # 时区设置
timedatectl set-timezone 'America/New_York'

useradd user && passwd user
usermod -aG wheel user # 将user加入到wheel组中

########## 本地设置 开始 ##########
ssh-keygen -b 4096
ssh-copy-id user@196.168.0.1 # 更换为自己的IP Address
########## 本地设置 结束 ##########

sudo vim /etc/ssh/sshd_config
# 设置PermitRootLogin和PasswordAuthentication都为no

配置LEMP环境

Debian的参考配置与步骤:

sudo apt install nginx mariadb-server php7.0-cli php7.0-cgi php7.0-fpm

mysql -u root -p # 设置数据库root用户密码

CREATE DATABASE db; # 创建新数据库
CREATE USER 'user' IDENTIFIED BY 'pass'; # 创建新用户
GRANT ALL PRIVILEGES ON db.* TO 'user'; # 授权数据库给新用户
quit

Minecraft游戏服务器

这里选用了Spigot核心来搭建Minecraft服务器,参考了两份Spigot官方教程,一份是关于安装BuildTools的,另一份是关于安装Spigot的。下面的流程为CentOS的安装步骤。

yum install java-1.8.0-openjdk

curl -o BuildTools.jar https://hub.spigotmc.org/jenkins/job/BuildTools/lastSuccessfulBuild/artifact/target/BuildTools.jar

git config --global --unset core.autocrlf
java -jar BuildTools.jar

########## 开始创建start.sh ##########
#!/bin/sh

java -Xms1G -Xmx1G -XX:+UseConcMarkSweepGC -jar spigot.jar
########## 结束创建start.sh ##########

sudo chmod +x start.sh # 添加execute权限
sudo ./start.sh

# 在eula.txt中更改eula=false为eula=true

sudo yum install screen

screen -S minecraft # 创建一个session名为minecraft
# 运行./start.sh并使用Ctrl A+D离开session
screen -rd minecraft # 重新加载到session中

在绑定域名时,遇到了一个小问题。因为在同一台VPS上同时还配置了Nginx的Web服务器,所以VPS上其实有两种不同类型的服务器,这样配置其实并不好,本来这种情况是应该分两台VPS来处理的,但是我个人倾向于把Minecraft的东西都放在同一台VPS上。在A记录中,我将Subdomain指向同一个IP,导致了这个问题。

hostname     ip_address        ttl
play         139.162.**.**     default      <== for minecraft (port: 25565)
www          139.162.**.**     default      <== for website (port: 80)

Minecraft服务器使用的是25565端口,在游戏中会自动查找到25565端口,然后成功连接到服务器。但是因为在VPS上也有Web服务器,所以浏览器也会自动查找域名的80端口,这就非常尴尬,就是说play这个Subdomain不仅可以玩游戏,也可以打开网页。而本来打开网页,只能通过www这个Subdomain来进行。

minecraft ==> play.domain.com (:25565)
browser ==> play.domain.com (:80)

这里需要用到的就是SRV记录,在设置完A记录后,它可以将端口转发到25565,这样使用Ping或者浏览器都不会访问到该Subdomain的80端口了。

Service           Domain          Priority  Weight  Port   Target               TTL
_minecraft._tcp   domain.com      0         5       25565  play.domain.com      Default

之后需要在nginx.conf中进行设置,因为当浏览器访问不到该网页时,Nginx会默认给出404错误,但是我想要的是网页不会给出任何响应,所以在Nginx默认设置中,需要返回的是444错误。

Posted in life category.

Read more: