如何使用Linux/Centos搭建TeamSpeak服务器
一、前期准备
1.选择一台服务器
系统选择:推荐使用Centos7,比较经典的系统。
配置参考:本人采用阿里云的 2核 2G 3M ECS轻量服务器,亲测10人同时在线时语音,并且挂载其它观影同步服务时服务器负载仅为30%
2.软件
Xshell:用于远程连接服务器
Xftp:用于向远程服务器传输文件
二、部署服务
1.服务端安装包
下载Linux版本服务端:TeamSpeak Downloads | TeamSpeak
2.创建服务专属用户
使用root账户创建teamspeak用户
此步骤是为了安全考虑,当然你觉得无所谓的话直接用root部署即可
创建用户
useradd teamspeak passwd teamspeak //填写自己需要设置的密码
设置权限
sudo vim /etc/sudoers
在%wheel ALL=(ALL)ALL下面插入
teamspeak ALL=(ALL) NOPASSWD:ALL
teamspeak:指定了用户。
ALL:表示所有主机。
(ALL):表示该用户可以在所有终端上执行命令。
NOPASSWD:ALL:表示执行命令时不需要输入密码。
vim下按I
键进入插入模式,输入完成之后按ESC
退出插入模式,输入wq!
保存并退出
切换到创建的用户
su - teamspeak
3.下载、解压安装包
通过wget下载或者通过前面提供的地址下载到本地通过xtftp上传到服务器
wget https://files.teamspeak-services.com/releases/server/3.13.7/teamspeak3-server_linux_amd64-3.13.7.tar.bz2
解压安装包
tar -jxvf teamspeak3-server_linux_amd64-3.13.7.tar.bz2
tar参数说明
参数 | 描述 |
---|---|
-c |
创建归档文件 (create) |
-x |
解压归档文件 (extract) |
-f |
指定归档文件名 (file) |
-v |
详细输出信息 (verbose) |
-z |
使用 gzip 压缩 |
-j |
使用 bzip2 压缩 |
-J |
使用 xz 压缩 |
-p |
保持文件权限不变 |
-C |
指定解压路径 |
--list |
列出归档文件内容 |
--delete |
在归档中删除指定文件 |
4.启动服务端
创建许可协议
touch /home/teamspeak/teamspeak3-server_linux_amd64/.ts3server_license_accepted
启动服务端
sh /home/teamspeak/teamspeak3-server_linux_amd64/ts3server_startscript.sh start
注意保存密钥信息
5.设置服务端自启
在服务目录创建
sudo vim /lib/systemd/system/teamspeak.service
编辑内容
[Unit]
Description=My Teamspeak Service
Wants=network-online.target
After=syslog.target network.target network-online.target[Service]
User=teamspeak
Group=teamspeak
WorkingDirectory=/home/teamspeak/teamspeak3-server_linux_amd64/
ExecStart=/home/teamspeak/teamspeak3-server_linux_amd64/ts3server_startscript.sh start
ExecStop=/home/teamspeak/teamspeak3-server_linux_amd64/ts3server_startscript.sh stop
PIDFile=/home/teamspeak/teamspeak3-server_linux_amd64/ts3server.pid
Type=forking[Install]
WantedBy=multi-user.target
.service文件结构解释
下面详细解析每个部分。
1️⃣ [Unit] 部分
[Unit]
部分定义了服务之间的依赖关系。
ini复制代码[Unit] Description=Teamspeak, The most superior online voice communication solution. Wants=network-online.target After=syslog.target network.target network-online.target 🔍 参数说明:
Description
:
- 对服务的简要描述。
Wants
:
- 表示该服务希望在启动时,同时启动指定目标或服务。
- 在这个例子中,
Wants=network-online.target
表示服务需要在网络正常连接之后才启动。After
:
2️⃣ [Service] 部分
[Service]
部分定义了服务的实际运行配置。
ini复制代码[Service] User=teamspeak Group=teamspeak WorkingDirectory=/home/teamspeak/teamspeak3-server_linux_amd64/ ExecStart=/home/teamspeak/teamspeak3-server_linux_amd64/ts3server_startscript.sh start ExecStop=/home/teamspeak/teamspeak3-server_linux_amd64/ts3server_startscript.sh stop PIDFile=/home/teamspeak/teamspeak3-server_linux_amd64/ts3server.pid Type=forking 🔍 参数说明:
User
:
- 指定服务以哪个用户身份运行。这里是
teamspeak
用户。Group
:
- 指定服务所在的组。这里是
teamspeak
。WorkingDirectory
:
- 指定服务的工作目录,即程序所在路径。
ExecStart
:
- 指定启动服务的命令。
- 在这里,它使用脚本
/home/teamspeak/teamspeak3-server_linux_amd64/ts3server_startscript.sh start
来启动 Teamspeak 服务。ExecStop
:
- 指定停止服务的命令。
- 也是调用 Teamspeak 提供的脚本。
PIDFile
:
- 指定存放服务进程 ID 的文件路径。
- systemd 使用这个文件来管理服务进程。
Type
:
- 表示服务的启动类型。
forking
:表示服务会派生子进程并在后台运行。
3️⃣ [Install] 部分
[Install]
部分定义了服务安装与启用的目标。
ini复制代码[Install] WantedBy=multi-user.target 🔍 参数说明:
WantedBy
:
- 指定服务启用时与系统启动目标之间的依赖关系。
multi-user.target
表示服务在系统进入多用户模式时自动启动。
重新加载
sudo systemctl daemon-reload
设置开机启动
sudo systemctl enable teamspeak.service
teamspeak相关命令
//启动 sudo systemctl start teamspeak.service //停止 sudo systemctl stop teamspeak.service //重启 sudo systemctl restart teamspeak.service
三、开放端口
1.需要开放的端口
端口 | 协议 | 说明 |
---|---|---|
9987 | UDP | 默认语音服务端口 |
10011 | TCP | raw端口 |
10022 | TCP | SSH端口 |
30033 | TCP | 文件传输端口 |
41144 | TCP | TSDND |
2.如何开放端口
2.1云服务器
在对应的云服务器平台设置端口开放规则即可。
2.2本地服务器搭建
检查系统防火墙状态:systemctl status firewalld
开放对应的端口(推荐):
# 同时开放多个端口 sudo firewall-cmd --permanent --add-port=9987/udp sudo firewall-cmd --permanent --add-port=10011/tcp sudo firewall-cmd --permanent --add-port=10022/tcp sudo firewall-cmd --permanent --add-port=30033/tcp sudo firewall-cmd --permanent --add-port=41144/tcp # 重新加载配置 sudo firewall-cmd --reload
非常粗暴的关闭防火墙放行所有端口(不推荐):
# 停止 firewalld 服务 sudo systemctl stop firewalld # 禁用防火墙服务(开机不自动启动) sudo systemctl disable firewalld
重启防火墙
# 重启 firewalld 服务 sudo systemctl restart firewalld
Comments NOTHING