最近用开源的SuperSocket 开发了服务端。当要在mono下运行时遇到很多比较麻烦的事让我走了不少弯路。现在将解决的方法写出来与大家一起分享,如有不足的地方请告之小白。

  下载江大的SuperSocket上面已经自带了

  文件:

  

  在Config文件里面检查下是否存在log4net.unix.config 在mono下运行需要这个。 在mono下可以删除掉UninstallService.bat 和 InstallService.bat这两个在linux下无用的。

  至于如何配置SuperSocket.SocketService.exe.config 以及拷贝你的dll等我就不详细描述 具体的可以参看这个http://supersocket.codeplex.com/wikipage?title=Start%20SuperSocket%20by%20Configuration

  在mono下将我写的bash脚本保存为supersocket 注意大小写和无文件扩展名 拷贝到 SuperSocket.SocketService.exe 在同一目录 

  修改SERVICE_PATH的路径

      
#!/bin/sh 
# control supersocket like windows service. copy this to your Working directory then ./supersocket {start|stop|restart}
#custom your servicename

SERVICENAME="SuperSocket"
SERVICE_PID=""
SERVICE_PATH="/root/SuperSocket/" #your Working directory

export PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin

if [ -f "/var/run/${SERVICENAME}.pid" ]; then
 SERVICE_PID=$(cat /var/run/${SERVICENAME}.pid)
fi

case "$1" in
  start)
  if [ -z "${SERVICE_PID}" ]; then
    mono-service -d:${SERVICE_PATH} -l:/var/run/${SERVICENAME}.pid -m:supersocket.log SuperSocket.SocketService.exe  
    echo "${SERVICENAME} running"
  else
    echo "${SERVICENAME} is already running!"
  fi
  ;;
  stop)
  if [ -n "${SERVICE_PID}" ]; then
    kill ${SERVICE_PID}   
    sleep 1        
    if [ -f "/var/run/${SERVICENAME}.pid" ]; then
         rm /var/run/${SERVICENAME}.pid 
    fi
    echo "${SERVICENAME} stop success !" 
  else
    echo "${SERVICENAME} is not running!"
   fi
   ;;
  restart)
       $0 stop
       sleep 1
       $0 start
   ;;
   *)
       echo "usage: $0 {start|stop|restart}"
esac 

exit 0

 

  检查是否拥有脚本执行权限如果没有对这个脚本修改权限 0755

  sudo chmod 755 supersocket这个脚本的路径

  如果是使用WinSCP直接鼠标右键

  

  通过putty连接到远程服务器

  cd 到你服务运行的目录

  执行下面的命令(确保你是root 如果不是请加 sudo)

  ./supersocket start

  你编写的supersocket服务就运行起来.

  启动:./supersocket start  停止:./supersocket stop 重启:./supersocket restart这个和window下的 service很相似了吧 使用也很简单。

  

关于随着系统自动启动的方法。

在/etc/rc.local 或类试的开机启动脚本中加入下面这一行命令:

自行替换对应的目录

你服务所在目录/root/SuperSocket/supersocket start

关于卸载。

如果在开机启动脚本里面加入了 开机启动,请自行删除掉。

如果服务正在运行请停止

然后删除掉所在服务目录即可