debian下搞个CSGO服务端

RT 闲着蛋疼 正好坑都踩完了 就留个记录 这次除了运行SteamCMD之前有一个前置需要安装会用到root,其它时候都不需要root也不需要sudo 所以还是很方便的
一、部署SteamCMD
按照官方wiki,先安装一个前置
apt-get install lib32gcc1
然后安装SteamCMD,这里有两种方式
1、用apt-get 也就是直接

apt-get install steamcmd

但是这个要求你的apt源要有这个包,国内的源似乎很多都没有,所以要用第二种方式
2、直接wget然后解压缩 这里就不需要解释了,官方留了个下载地址:https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz
这里因为我的apt源没有 所以我也选择了第二种方式,唯一的区别是启动steamcmd,后者是运行sh,前者直接steamcmd即可
二、下载CSGO服务端
先准备好一个文件夹,一会我们下载的时候要设置路径,否则设置的路径如果不存在的话并不会自动创建,而是下载到你用户的home下,这里假设我们丢到/var/csgo下,且文件夹已经创建好
然后启动SteamCMD

./steamcmd.sh

之后登陆一下

login anonymous

登陆后设置下载路径

force_install_dir /var/csgo

然后下载 

app_update 740 validate

由于G胖的服务器也不怎么好 所以有时候会断,这种时候可以尝试继续执行下载的命令,如果不能执行的话就只能直接退出,然后重启SteamCMD,重启后有一个巨坑要注意,就是你需要完整的重新执行登陆–>设置路径–>下载,缺一不可,如果不重新设置路径的话,会自动下载到home,然后就会变成重新下载的情形
顺便提一下 以后服务端升级,也是用同样的步骤和命令,CMD会自动检测升级并更新
三、塞点自定义地图
这个挺简单的 /根目录/csgo/maps/ 这里 丢进去就好~
四、配置下服务端
这里有以下几点要配置,首先需要申请一个key。。。
我们访问一下这里:https://steamcommunity.com/dev/managegameservers
登陆你的账号 然后游戏ID输入进去(csgo是730),设置一个好记的名字,然后生成
之后我们创建一个sh在根目录 写如下内容:

Classic Casual(经典休闲模式):
./srcds_run -game csgo -console -usercon +game_type 0 +game_mode 0 +mapgroup mg_bomb +map de_dust2
Competitive(经典竞技模式):
./srcds_run -game csgo -console -usercon +game_type 0 +game_mode 1 +mapgroup mg_bomb +map de_dust2
Arms Race(军备竞赛模式):
./srcds_run -game csgo -console -usercon +game_type 1 +game_mode 0 +mapgroup mg_armsrace +map ar_shoots
Demolition(爆破模式):
./srcds_run -game csgo -console -usercon +game_type 1 +game_mode 1 +mapgroup mg_demolition +map de_lake

总之按照你需要的去贴进去,或者干脆四个都创建也不是不可以
之后进入~/csgo/cfg/文件夹内 创建一个cfg

vim autoexec.cfg
log on //This is set to turn on logging! Don't put this in your server.cfg
hostname "<服务器名称>"
rcon_password "<op密码>"
sv_password "<服务器密码,默认为空>" //Only set this if you intend to have a private server!
sv_cheats 0 //This should always be set, so you know it's not on
sv_lan 0 //This should always be set, so you know it's not on
sv_setsteamaccount <你申请到的token>
exec banned_user.cfg
exec banned_ip.cfg

保存退出

vim server.cfg
exec autoexec.cfg

保存退出
最后启动服务器 理论上就能直接启动了~反正我是能用了

记一次业务整体迁移

RT 东西比较杂 算是随笔记录一下,参考资料蛮多的
大致的情况是:
操作系统均为debian 8.6 x64
服务器A(物理机),有一个普通的http业务,一个java业务,一个mysql业务,一个FTP业务
服务器B(套在A里面且没有公网ip的虚拟机)一个dz论坛,一个mysql业务
服务器C(目标机器,新系统,而且还有个还没挂载的硬盘)
A和C不在一个地点,需要公网传输,且A和B上面的业务都要整合在C上面,另:A上面的mysql可舍弃(不要问我为啥不要数据了,设定就是如此)
 
第一步:先部署一下新机器的环境
大致需要的有:tengine php5-fpm mysql-server openjdk vsftpd db5.3-util
以及有个没格式化也没挂载的硬盘

mkfs.xfs /dev/sdb -f (反正我是用xfs,以及这个不需要分区,直接把盘挂上去好了)
mount /dev/sdb /var/hdd

重启后保持挂载:
blkid 查看下这块硬盘的uuid

vim /etc/fstab

最下面直接按照这个格式写一下

UUID=12345678-1234-1234-1234-123456789012       /var/hdd      xfs     defaults        0       0

保存退出即可
其他的没啥事情 按照需求创建一些文件夹 以及mysql记得先设置个密码
 
第二步:先把最简单的搞起来(java/http/ftp)
这个应该最简单了
java装好openjdk即可
没有dz论坛,纯http也只是需要配置下tengine的配置即可,可参考以前的博文:http://blog.bilicloud.com/?p=133
ftp依旧:http://blog.bilicloud.com/?p=25
搞起来后文件通过tar打包,scp发送过去,再到指定的文件夹解包即可
文件太大/太杂/需要保持文件夹结构的话可以参考下偷懒的方法:http://blog.bilicloud.com/?p=172
 
第三步:迁移数据库
开头说明了一下,服务器A的数据库里的数据可以舍弃,所以这样就简单得多了~我们只需要把服务器B的数据库迁移即可
先确认一下版本,发现服务器B的版本要比C的版本老一点,用apt-get升级一下,升级后确认两边版本一致,然后stop掉mysql的服务
之后查看了一下数据库所在位置,cat /etc/mysql/my.cnf 找到路径 进去,tar打包一下,然后scp直接发到服务器C,解包,放到指定位置,然后检查一下文件夹和里面的文件的权限,如果不是mysql的话需要chown mysql:mysql -R 来设置一下权限
完事后mysql -uroot -p 登陆一下 然后show DATABASES; 查看下数据库是否存在,也可以use一下后show一下 看看能否正常读取之类的。总之我的迁移是顺利的完成了。
 
第四步:迁移dz论坛
这一步我们大致跟着官方文档走,官方文档地址见参考资料里的链接~
先将论坛全部tar打包,然后依旧scp发过去,解包,放到指定位置,确认权限
然后写一下tengine的配置文件,具体可参考http://blog.bilicloud.com/?p=133
之后修改以下文件,改一下数据库的账号密码(这里我创建了一个新的用户名和对应的密码 数据库上要做一下授权,然后再从这边改一下密码)

./config/config_global.php
./config/config_ucenter.php
./uc_server/data/config.inc.php

改完后 重启tengine 然后。。。嗯?502?
看了一下log 发现是fastcgi 连接被拒绝,然后ss -nat发现。。。根本就没有fastcgi的端口,检查了一下php-fpm.conf发现 原来我忘记写listen了。。。果断补一下

vim /etc/php5/fpm/php-fpm.conf

直接跳到结尾,粘贴上:

listen = 127.0.0.1:9000
listen.allowed_clients = 127.0.0.1
listen.backlog = -1

:wq保存退出 然后重启一下php5-fpm服务,然后浏览器刷新下页面。。。起来了~
之后做了一下登陆 发帖 删帖测试 都一切正常,迁移任务完美结束=w=
 
参考资料:
DZ资料库-论坛迁移:http://faq.comsenz.com/library/bbsapp/movesite/movesite_index.htm