LinuxInstall - ScutGame/Scut GitHub Wiki
此章节介绍如何搭建Scut服务端Linux/Mac开发环境
系统环境
章节以CentOS 6.x为例
CentOS系统安装,在些就不介绍了,自行安装。
Linux系统命令:
- vi --打开文件编辑
- ls --列出当前目录的所有文件名
- Shift + I --文件切换为可编辑
- :w --保存
- :q --退出文件编辑
安装准备
- Mono平台
- Web服务器:Jexus
- NoSql数据库:Redis
- 关系型数据库:MySql
- 开发工具:MonoDevelop
- Python类库
- Scut开发类库
下载与安装
1. Mono平台
Mono3.4.0以上版本,支持.Net Framework 4.5运行库;
安装步骤如下: 1.1 使用yum安装,先更新系统
#yum –y update
1.2. 安装Mono需要的库
#yum -y install gcc gcc-c++ bison pkgconfig glib2-devel gettext make libpng-devel libjpeg-devel libtiff-devel libexif-devel giflib-devel libX11-devel freetype-devel fontconfig-devel cairo-devel
1.3. 安装Mono需要的GDI+兼容API的库Libgdiplus
#cd /usr/local/src/
#wget http://download.mono-project.com/sources/libgdiplus/libgdiplus-2.10.tar.bz2
#tar -jxvf libgdiplus-2.10.tar.bz2
#cd libgdiplus-2.10
#./configure --prefix=/usr
#make
#make instal
1.4. 安装Mono3.4.0
#cd /usr/local/src/
#wget http://download.mono-project.com/sources/mono/mono-3.4.0.tar.bz2
#tar -jxvf mono-3.4.0.tar.bz2
#cd mono-3.4.0
#./configure --prefix=/usr
#make
#make instal
1.5. 安装完成,测试输入如下,有mono版本信息则说明安装成功
#mono -V
1.6. 运行命令ldconfig
#ldconfig
安装失败:
- 提示"找不到 Microsoft.Portable.Common.targets 文件",解决如下:
# cd /usr/local/src/mono-3.4.0/mcs/tools/xbuild/targets
# cp Microsoft.Portable.CSharp_4.0.targets Microsoft.Portable.Common.targets
# vim Microsoft.Portable.Common.targets
/*这行:<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> 删除,然后保存退出,再编译*/
- 提示有些dll组件找不到 解决方法: 原因是Mono安装时net4.5缺少dll类库文件,需要从net4.0中拷贝
# mkdir /usr/lib/mono/4.5
# cp -rf /usr/local/src/mono-3.4.0/mcs/class/lib/net_4_5/* /usr/lib/mono/4.5
如果少System.Core.dll等,则需要从/usr/local/src/mono-3.4.0/mcs/class/lib/net_4_0/路径手动copy:
2. Jexus Web服务器
自行安装,这里不在介绍
3. Redis数据库
Redis2.6.16以上版本, 了解Redis的配置说明
- 安装步骤:
1). 下载安装
#mkdir /usr/local/soft/
#cd /usr/local/soft/
#wget http://download.redis.io/releases/redis-2.6.16.tar.gz
#tar zxvf redis-2.6.16.tar.gz
#cd redis-2.6.16
#make
2). 启动Redis,并查看进程是否有一个叫“src/redis-server”的进程
# src/redis-server
#ps aux | grep redis
3). 启动Redis客户端,测试安装是否成功
#src/redis-cli
#set name John
#get name
4). 配置内存分配策略,修改/etc/sysctl.config文件
介绍 /proc/sys/vm/overcommit_memory 这里说一下这个配置的含义:/proc/sys/vm/overcommit_memory 该文件指定了内核针对内存分配的策略,其值可以是0、1、2。 0:表示内核将检查是否有足够的可用内存供应用进程使用;如果有足够的可用内存,内存申请允许;否则,内存申请失败,并把错误返回给应用进程。 1:表示内核允许分配所有的物理内存,而不管当前的内存状态如何。 2:表示内核允许分配超过所有物理内存和交换空间总和的内存
如果内存情况比较紧张的话,需要设定内核参数:
#vi /etc/sysctl.config
/*添加以下是内容*/
vm.overcommit_memory=1
/*输入":wq"保存退出,刷新配置生效*/
# sysctl vm.overcommit_memory=1
5). 开放防火墙端口
# vi /etc/sysconfig/iptables
--以下增加内容
-A INPUT -m state --state NEW -m tcp -p tcp --dport 6379 -j ACCEPT
/*输入":wq"保存退出,并重启防火墙*/
#/etc/init.d/iptables restart
- 用例:
配置启动多个Redis实例,一台Redis服务器可以启动多个Redis实例,为每个实例分配一个端口,同时需要为每个实例分配相应的Redis配置文件;分配6379(默认端口),6380,6381三个端口为例,配置文件为:redis.conf、redis6380.conf、redis6381.conf。*
a) redis6380.conf配置文件
#cp redis.conf redis6380.conf
#vi redis6380.conf
--修改以下是内容
pidfile /var/run/redis/redis_6380.pid
port 6380
logfile /var/log/redis/redis_6380.log
dbfilename dump_6380.rdb
b) 测试启动6380实例
#redis-server /usr/local/redis/redis6380.conf
#ps aux | grep redis
- 配置自启动脚本
在/etc/init.d/目录下创建redis6380文件
###########################
PATH=/usr/local/soft/redis-2.6.16:/usr/local/bin:/sbin:/usr/bin:/bin
REDISPORT=6380
EXEC=/usr/local/soft/redis-2.6.16/src/redis-server
REDIS_CLI=/usr/local/soft/redis-2.6.16/src/redis-cli
PIDFILE=/var/run/redis6380.pid
CONF="/usr/local/soft/redis-2.6.16/redis6380.conf"
case "$1" in
start)
if [ -f $PIDFILE ]
then
echo "$PIDFILE exists, process is already running or crashed"
else
echo "Starting Redis server..."
$EXEC $CONF
fi
if [ "$?"="0" ]
then
echo "Redis is running..."
fi
;;
stop)
if [ ! -f $PIDFILE ]
then
echo "$PIDFILE does not exist, process is not running"
else
PID=$(cat $PIDFILE)
echo "Redis is stopping ..."
$REDIS_CLI -p $REDISPORT SHUTDOWN
while [ -x ${PIDFILE} ]
do
echo "Waiting for Redis to shutdown ..."
sleep 1
done
echo "Redis stopped"
fi
;;
restart|force-reload)
${0} stop
${0} start
;;
*)
echo "Usage: /etc/init.d/redis6380 {start|stop|restart|force-reload}" >&2
exit 1
esac
##############################
修改rc.local文件增加启动项
#vi /etc/rc.d/rc.local
/*增加以下内容*/
bash /etc/init.d/redis6380 start
4. MySQL数据库
MySql5.0以上版本
安装步骤如下: 1). 使用yum下载Mysql安装包
# yes | yum install mysql
# yes | yum install mysql-server
2). 安装MySql
# service mysqld start
3). 设置root帐号密码
# /usr/bin/mysqladmin -u root password '123'
4). 修改/etc/my.cnf配置
# vim /etc/my.cnf
/*以下my.cnf内容*/
[mysqld]
lower_case_table_names=1
[mysql]
default-character-set = gbk
5). 保存并退出,测试Mysql连接
#mysql -u root -p123
mysql> show databases;
5. MonoDevelop开发工具
自行安装,这里不在介绍
6. Python类库
Python2.7.3以上版本
- 下载安装:
#cd /usr/local/src
#wget http://www.python.org/ftp/python/2.7.3/Python-2.7.3.tar.bz2
#tar jxvf Python-2.7.3.tar.bz2
#cd Python-2.7.3
#./configure
#make
#make install
- 设置环境变量: "IRONPYTHONPATH"
#vim /etc/profile
/*添加以下内容*/
export IRONPYTHONPATH=/usr/local/src/Python-2.7.3/Lib
/*输入:wq保存退出,刷新生效*/
#source /etc/profile
7. Scut开发类库
到官网“下载”栏目中下载最新版本Scut Zip包。
开发包中包括:GameServer的控制台程序,ScutSMS工具,排行榜示例脚本和Release的Lib类库。
运行GameServer控制台程序
- 先启动Redis Server
- 首次运行,需要手动将Lib目录的类库Copy到Console目录下
- 运行mono GameServer.exe
开发新项目时,只需要将Console目录和Lib目录Copy到项目当前路径下即可。