最近用开源的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} 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
关于卸载。
如果在开机启动脚本里面加入了 开机启动,请自行删除掉。
如果服务正在运行请停止
然后删除掉所在服务目录即可