在ubuntu下用mono-service运行SuperSocket
浏览(23836)Mono最近用开源的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

关于卸载。
如果在开机启动脚本里面加入了 开机启动,请自行删除掉。
如果服务正在运行请停止
然后删除掉所在服务目录即可