ScutGame edited this page Jul 6, 2015 · 12 revisions

此章节介绍如何搭建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到项目当前路径下即可。

Clone this wiki locally

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content
ScutGame edited this page Jul 6, 2015 · 12 revisions

此章节介绍如何搭建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到项目当前路径下即可。

Clone this wiki locally

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
ScutGame edited this page Jul 6, 2015 · 12 revisions

此章节介绍如何搭建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到项目当前路径下即可。

Clone this wiki locally

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
ScutGame edited this page Jul 6, 2015 · 12 revisions

此章节介绍如何搭建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到项目当前路径下即可。

Clone this wiki locally

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content
ScutGame edited this page Jul 6, 2015 · 12 revisions

此章节介绍如何搭建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到项目当前路径下即可。

Clone this wiki locally

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
ScutGame edited this page Jul 6, 2015 · 12 revisions

此章节介绍如何搭建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到项目当前路径下即可。

Clone this wiki locally

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
ScutGame edited this page Jul 6, 2015 · 12 revisions

此章节介绍如何搭建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到项目当前路径下即可。

Clone this wiki locally

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content
ScutGame edited this page Jul 6, 2015 · 12 revisions

此章节介绍如何搭建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到项目当前路径下即可。

Clone this wiki locally