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控制台程序

  1. 先启动Redis Server
  2. 首次运行,需要手动将Lib目录的类库Copy到Console目录下
  3. 运行mono GameServer.exe

开发新项目时,只需要将Console目录和Lib目录Copy到项目当前路径下即可。