分类: 服务器

服务器

sip服务器搭建

写这篇博客,距离我上次提到yate已经有很长一段时间了,今天的主题是:在ubuntu 12.04下搭建sip服务器,并且实现与数据库的连接,从而开发一款互联网电话。

至于yate的简介等,这里免了!直接进入主题,下载源码并安装,下载地址:

http://yate.null.ro/pmwiki/index.php?n=Main.Download

也可以在ubuntu软件中心搜索yate,然后安装*个即可!

解压后,编译并安装:

./configure

make engine

make modules

make install-noapi

之后,进行配置,至于如何在regfile.conf里注册用户,我就不啰嗦了,文件末尾已经有了提示。(/etc/yate/是配置文件路劲)

这里假定你已经装好了mysql,如果没装好,那你自行安装吧!

接下来,在phpmyadmin里创建一个用户yate,数据库yate,至于密码,你自己决定,然后打开新建的yate表,创建table users:

CREATE TABLE `users` (
`username` varchar(50) NOT NULL,
`password` varchar(50) DEFAULT ‘9999’,
`location` varchar(255) DEFAULT NULL,
`expires` datetime DEFAULT NULL,
PRIMARY KEY (`username`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8

至此,数据库创建好了!接下来,需要修改两个文件:register.conf、mysqldb.conf,这两文件都在/etc/yate下
mysqldb.conf 改为下面的这样:

[yate];这个是连接引用名
host=localhost
port=3306
database=yate
user=yate
password=something

不过,请改为和你设置的相同,连接用名可以不改。
*后,修改register.conf

[general]
user.auth=yes
user.register=yes
user.unregister=yes
call.route=yes
fallback=yes
[default]
priority=50
;mysqldb.conf里的连接名,我你是yate
account=yate
[user.auth]
query=SELECT password FROM users WHERE username=’${username}’ AND password IS NOT NULL AND password<>”
result=password

[user.register]
;用户登陆后,更新数据库
query=UPDATE users SET location=’${data}’,expires=CURRENT_TIMESTAMP + INTERVAL ${expires} SECOND WHERE username=’${username}’

[user.unregister]
;用户注销后的操作
query=UPDATE users SET location=NULL,expires=NULL WHERE expires IS NOT NULL AND username=’${username}’

[call.route]
;通话路由
offlineauto=yes
query=SELECT location,(CASE WHEN location IS NULL THEN ‘offline’ ELSE NULL END) AS error FROM users WHERE username=’${called}’
result=location
priority=120

至此,就ok了,新建的那张users表是用户表,那里面的账号就可以登陆,然后写一个php接口,至此,互联网电话好了,你可以看下android的sipDemo!

SIP消息类型简介

1.请求消息:用于客户端为了激活按特定操作而发给服务器的SIP消息,包括INVITE, ACK,OPTIONS,BYE,CANCEL和REGISTER消息等。

请求消息 消息含义
INVITE 发起会话请求
ACK 证实已收到对于INVITE请求的*终响应。该消息仅和INVITE消息配套使用
BYE 结束会话。
CANCEL 取消未完成的请求,对于已完成的请求(既已收到*终响应的请求)则没影响。
REGISTER 注册
OPTIONS 查询服务器的能力

2. 响应消息: 用于对请求消息进行响应,指示呼叫的成功或失败状态。不同类的响应消息由状态码来区分。状态码包含三位整数,状态码的*位用于定义响应类型,另外两位用于进一步对响应进行更加详细的说明。

(1)1xx:信息响应(呼叫进展),表示已经接收到请求消息,正在对其进行处理;

序号 状态码 消息功能
1xx 100 正在处理中(Trying)
180 振铃(RINGING)
181 呼叫前转(call being forwarder)
182 排队(queue)
181* 会话进行(session progress)

(2)2xx:成功响应,表示请求已被成功接收、处理;

序号 状态码 消息功能
2xx 200 会话成功(OK)

(3)3xx:重定向响应,表示需要采取进一步动作,以完成该请求;

序号 状态码 消息功能
3xx 300 表示多重选择(multiple)
301 表示永久迁移(moved permanently)
302 表示临时迁移(moved temporaily)
303 见其它
305 用户代理(user proxy)
380 代换服务(alternative service)

(4)4xx:客户端出错,表示请求消息中包含语法错误或SIP服务器不能完成对该请求的处理;

序号 状态码 消息功能
4xx 400 错误请求(bad request)
401 无权(unauthorized)
402 要求付款(payment required )
403 禁止(forbidden)
404 没有发现(not found)
405                      不允许的方法(method no allowed)
406 不接受(not acceptable)
407 代理需要验证(proxy authentication required)
408 请求超时(request timeout)
410 消失(gone)
413 请求实体太大( request entity too large)
414 请求URI太大(request-url too long)
415 不支持的媒体类型(unsupported media type)
              416 不支持的URI方案(unsupported url scheme)
420 分机无人接听(bad extension)
421 要求转接( extension required)
423 间隔太短( interval too brief)
480 临时失效(temporarily unavailable)
481 呼叫/事务不存在(call/transaction does not exist)
482 发现环路(loop detected)
483 跳数太多(too many hops)
484 地址不完整(address incomplete)
485 不明朗(ambiguous)
486 这里忙(busy here)
487 请求终止(request terminated)
488 这里请求不可接受(not acceptable here)
491 未决请求(request pending)
493 不可辨识(undecipherable)

(5)5xx:服务器出错,表示SIP服务器故障不能完成对正确消息的处理。

序号 状态码 消息功能
5xx 500 服务器内部错误( server internal error)
501 不可执行(not implemented)
502 坏网关(bad gateway)
503 服务器无效(service unavailable)
504 服务器超时(server time-out)
505 版本不支持(version not supported)
513 消息太大(message too large)

(6)6xx:全局错误,表示请求不能在任何SIP服务器上实现。

序号 状态码 消息功能
6xx 600 全忙(busy everywhere)
603 丢弃(decline)
604 都不存在(does not exist anywhere)
606 不接受(not acceptable)

SIP服务器类型

有一些不同类型的SIP服务器。根据你的应用,你可以使用它们其中的一种或所有类型来解决你的问题。OpenSIPS可以作为代理服务器、重定向服务器、背靠背用户代理或者注册服务器。

The proxy server(代理服务器)
在 SIP 代理模式下,所有的 IP 消息都要经过 SIP 代理。这种行为在向诸如计费( billing)的过程中帮助很大,而且迄今为止,这也是一种*普遍的选择。但是它的缺点就是在会话建立过程中的所有的 SIP 交互中,服务器造成的额外开销也是客观的。要记住的是,即使服务器作为 SIP 代理在工作时, RTP 包也总是直接从一端传送到另一端,而不会经过服务器。
%title插图%num

The redirect server(重定向服务器)
SIP 代理可以运行在 SIP 重定向模式。在这种模式下, SIP 服务器的处理量是相当巨大的,因为它不需要保持事务处理的状态。在对 INVITE 消息进行初始化后,仅仅向 UAC 回复一条―302 Moved Temporarily‖消息就可以离开 SIP 对话( dialog)了。在这种模式下的 SIP 代理,即使只是利用非常少的资源也可以每小时传送上百万的通话。当你需要的规模很大并且不需要对通话计费的情况下,这种模式通常会被使用。

%title插图%num

The B2BUA server(背靠背用户代理服务器)
The server can also work as a Back-to-Back User Agent(B2BUA). B2BUAs are normally applied to hide the topology of the network(网络的拓扑结构). They are also useful to support buggy clients unable to route SIP requests correctly based on record routing. Many PBX systems such as Asterisk, FreeSwitch, Yate, and others work as B2BUAs.

想了解B2BUA的可以看《FreeSWITCH权威指南》一书,上面做了详细介绍。

%title插图%num

注意:图中左边的Call-ID和右边的Call-ID不同(B2BUA Two Legs)。

服务器分类方式和类型

1、服务器的分类方式包含两种:

(1)如何处理请求。包含两种处理方式:一种是并发处理,另一种是迭代处理。并发服务器进程在同一时间并发的处理多个客户机;迭代服务器每次仅处理一个客户机。

(2)有无连接。一种是面向连接的服务器使用TCP;另一种是无连接的服务器使用UDP。

2、服务器的四种类型

(1)迭代无连接服务器;属于*常见,*易实现的服务器。

(2)迭代面向连接服务器;每次处理一个客户机连接的单进程。

(3)并发无连接服务器;适用于拥有高请求量,但仍需要快速周转时间的服务器。

(4)并发面向连接服务器;(TCP三次握手实现)。

不同版本服务器之间的区别与联系

1.Tomcat
Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,它是Apache 软件基金(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。由于有了Sun 的参与和支持,*新的Servlet 和JSP 规范总是能在Tomcat 中得到体现,Tomcat 5 支持*新的Servlet 2.4 和JSP 2.0 规范。因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web 应用服务器。

2.JBoss
JBoss是一个管理EJB的容器和服务器,支持EJB 1.1、EJB 2.0和EJB3.0的规范。但JBoss核心服务不包括支持servlet/JSP的WEB容器,一般与Tomcat或Jetty绑定使用。2006年,Jboss公司被Redhat公司收购。

JBoss是全世界开发者共同努力的成果,一个基于J2EE的开放源代码的应用服务器。 因为JBoss代码遵循LGPL许可,你可以在任何商业应用中免费使用它,而不用支付费用。JBoss支持EJB 1.1和EJB 2.0 EJB3.0的规范,它是一个管理EJB的容器和服务器。类似于Sun’s J2SDK Enterprise Edition(J2EE),JBoss的目标是一个源代码开放的J2EE环境。但是JBoss核心服务仅是提供EJB服务器。JBoss不包括serverlers/JSP page 的WEB容器,当然可以和Tomcat或Jetty绑定使用。

JBoss具有的六大优点:

1、JBoss是免费的,开放源代码J2EE的实现,它通过LGPL许可证进行发布。

2、JBoss需要的内存和硬盘空间比较小。

3、安装非常简单。先解压缩JBoss打包文件再配置一些环境变量就可以了。

4、JBoss能够”热部署”,部署BEAN只是简单拷贝BEAN的JAR文件到部署路径下就可以了。如果没有加载就加载它;如果已经加载了就卸载掉,然后LOAD这个新的。

5、JBoss与Web服务器在同一个Java虚拟机中运行,Servlet调用EJB不经过网络,从而大大提高运行效率,提升安全性能。

6、用户可以直接实施J2EE-EAR,而不是以前分别实施EJB-JAR和Web-WAR,非常方便。

JBoss的安装和配置可以直接拷贝使用,但是要改动 %JBoss-HOME%\bin\run.bat里JAVA-HOME的设置,改成本机JDK的目录。运行run.bat来启动JBoss

关闭JBoss:关闭JBoss的 DOS 窗口或按”CTRL + C”。

3.JBoss与Tomcat的区别
通过上面两个的介绍就可以发现二者的区别:

Tomcat 只能做jsp和servlet的container《web服务器》

Jboss只能作为应用服务器。

Jboss可以通过内嵌Tomcat…来做web服务器。

4.WebLogic
WebLogic是美国bea公司出品的一个application server确切的说是一个基于j2ee架构的中间件。BEA WebLogic是用于开发、集成、部署和管理大型分布式Web应用、网络应用和数据库应用的Java应用服务器。将Java的动态功能和Java Enterprise标准的安全性引入大型网络应用的开发、集成、部署和管理之中。

5.应用服务器(WebLogic)与Tomcat的区别
应用服务器提供更多的J2EE特征,如EJB,JMS,JAAS等,同时也支持Jsp和Servlet.而Tomcat则功能没有那么强大,它不提供EJB等支持。但如果与JBoss(一个开源的应用服务器)集成到一块,则可以实现J2EE的全部功能。既然应用服务器具有Tomcat的功能,那么Tomcat有没有存在的必要呢?事实上,我们的很多中小应用不需要采用EJB等技术,Jsp和Servlet已经足够,这时如果用应用服务器就有些浪费了。而Tomcat短小精悍,配置方便,能满足我们的需求,这种情况下我们自然会选择Tomcat.

6.webSphere

WebSphere是 IBM 的集成软件平台。它包含了编写、运行和监视全天候的工业强度的随需应变 Web 应用程序和跨平台、跨产品解决方案所需要的整个中间件基础设施,如服务器、服务和工具。WebSphere 提供了可靠、灵活和健壮的集成软件。

7.综合分析

1.价位不同
JBoss与Tomcat的是免费的。

2.开源性不同
JBoss与Tomcat的是完全开源的,而其他两个不是。

3.对技术的支持
Tomcat不支持EJB,JBoss是实现了EJB容器,再集成了Tomcat。WebLogic与WebSphere都是对业内多种标准的全面支持,包括EJB、JSB、JMS、JDBC、XML和WML,使Web应用系统的实施更为简单,并且保护了投资,同时也使基于标准的解决方案的开发更加简便。

4.扩展性的不同
WebLogic和WebSphere都是以其高扩展的架构体系闻名于业内,包括客户机连接的共享、资源 pooling以及动态网页和EJB组件群集。

5.应用范围的区别
Tomcat 是一个小型的轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。

WebLogic和WebSphere是商业软件,功能齐全强大,主要应用于大型企业的大型项目。

JBOSS 主要应用于EJB服务的中小型公司。

6.商业服务和技术支持的区别
因为JBoss和Tomcat都是开源免费的,所以它俩也就没有任何商业服务和技术支持,而WebLogic和WebSphere的技术文档和相关服务还是很到位,如果你的服务器哪一天出问题了,只要你能出的起钱,他们的技术工程师立刻就能出现在你面前。

7.安全性问题
因为JBoss和Tomcat都是开源的,所以它们的安全性相对来说比较低,万一应用服务器本身有什么漏洞,你是没办法向Apache索赔的。

而WebLogic和WebSphere其容错、系统管理和安全性能已经在全球数以千记的关键任务环境中得以验证。

8.与数据库的紧密结合性
如果硬件成本比软件成本高许多,那不如使用weblogic/Websphere。其中的道理太简单了,为什么电信/银行/移动之类的公司使用Oracle或DB2数据库,而不选用mysql。单靠tomcat是无法支持那么多的并发量,有钱的话还是选择商业产品。

9.简要概括
weblogic相当于tomcat和jboss结合在一起使用(因为weblogic支持servlet和jsp以及ejb,而tomcat仅支持servlet和jsp,jboss仅支持ejb)

6.另外简介一下EJB
做web开发的童鞋对EJB了解的可能不太多,下面通过EJB和Java Bean的对比来介绍一下:

Java Bean 是可复用的组件,对Java Bean并没有严格的规范,理论上讲,任何一个Java类都可以是一个Bean。但通常情况下,由于Java Bean是被容器所创建(如Tomcat)的,所以Java Bean应具有一个无参的构造器,另外,通常Java Bean还要实现Serializable接口用于实现Bean的持久性。Java Bean实际上相当于微软COM模型中的本地进程内COM组件,它是不能被跨进程访问的。Enterprise Java Bean 相当于DCOM,即分布式组件。它是基于Java的远程方法调用(RMI)技术的,所以EJB可以被远程访问(跨进程、跨计算机)。但EJB必须被布署在诸如Webspere、WebLogic这样的容器中,EJB客户从不直接访问真正的EJB组件,而是通过其容器访问。EJB容器是EJB组件的代理,EJB组件由容器所创建和管理。客户通过容器来访问真正的EJB组件。

Linux服务器创建流程

前提条件:在root用户权限下操作

一、模板部署场景
1、基本流程
模板部署Linux虚拟机—-配置网络—配置计算机名—配置磁盘—安装深信服EDR—创建普通账户—设置普通账户密码—配置普通账户密码不过期—配置sudoers—ssh禁用root远程登录—修改root密码

2、模板部署Linux虚拟机
按需求以模板部署Linux虚拟机,按配置需求配置虚拟机CPU、内存、磁盘和网络。
注:Linux系统暂提供CentOS 6.9、CentOS 7.6、Oracle Linux 6.9、Oracle Linux 7.6四种模板
在部署中按照需求匹配相应Linux模板,Oracle数据库建议使用Oracle Linux。

3、配置虚拟机网络
部署好虚拟机后,配置IP地址,并通过CRT远程登录虚拟机。

4、配置计算机名
计算机名要求:
计算机名要求简短,其中应用服务器名建议不超过12个字符,数据库服务器名建议不超过8个字符。

5、配置磁盘
分区
fdisk /dev/sda
分完区后重启系统

扩容文件系统
通过远程按需求配置磁盘,如无特殊需求,Linux虚拟机默认把全部剩余空间扩容至/目录
pvcreate /dev/sda3
vgextend vg /dev/sda3
lvextend -l +100%FREE /dev/mapper/vg-root
resize2fs /dev/mapper/vg-root

6、安装深信服EDR
上传linux_edr_installer.tar.gz至/root
mkdir /root/edr
mv /root/linux_edr_installer.tar.gz /root/edr
cd /root/edr
tar -zxvf linux_edr_installer.tar.gz
sh agent_installer.sh
等待安装完成
cd
rm -rf config/ edr/ var/

7、创建普通账户
要求:应用服务器统一创建weblogic用户,数据库服务器统一创建oracle用户
创建weblogic用户
useradd weblogic

创建oracle用户
groupadd oinstall
groupadd dba
useradd -g oinstall -G dba oracle

8、设置普通账户密码
要求:使用密码生成器生成随机密码,密码不小于16位,其中包含大写字母、小写字母、数字、特殊符号。
passwd weblogic   设置weblogic用户密码
passwd oracle     设置oracle用户密码

9、配置普通账户密码不过期
chage -M 99999 weblogic   修改weblogic用户密码过期时间为永不过期
chage -M 99999 oracle     修改oracle用户密码过期时间为永不过期

10、配置sudoers
chmod +w /etc/sudoers    给/etc/sudoers添加写入权限
vi /etc/sudoers
找到root    ALL=(ALL)       ALL这一行
在下面添加一行
weblogic ALL=(ALL)      NOPASSWD:ALL
chmod -w /etc/sudoers    给/etc/sudoers去除写入权限

11、ssh禁用root远程登录
vi /etc/ssh/sshd_config
注释 PermitRootLogin yes
添加
PermitRootLogin no
保存并退出
service sshd restart

12、修改root密码
要求:使用密码生成器生成随机密码,密码不小于16位,其中包含大写字母、小写字母、数字、特殊符号。
passwd

Android studio data目录不能显示的问题

在打开Android studio中打开Android device monitor时,发现data目录不显示其他文件,如图:当我们去点击/data/目录时,发现什么都没有,这是怎么回事呢?原因在于data权限限制访问。解决方法如下:

在这里插入图片描述

1、在Android studio的sdk目录中找到platform-tools目录,在这个目录下同时按住shift和鼠标右键,然后选择“在此处打开命令窗口”或者将sdk下的platform-tools添加到环境变量中,具体怎么配置环境变量我就不介绍了。

在这里插入图片描述

2、输入adb shell命令,然后输入su,使得用户切换到root。(PS:这时是拼手速了,在刚出现generic_x86:/ # ,快速输入su 然后在出现generic_x86:/ # 时快速输入chmod -R 777 /data/,然后回车。
在这里插入图片描述

3、然后将/data/目录的权限改为777(表示任何人都可以访问和修改)。出现以下结果表示权限修改成功
在这里插入图片描述

4、*后我们再刷新一下Android device monitor,发现data目录可以打开了
在这里插入图片描述

在 Linux 上使用 lgsm 搭建饥荒联机服务器

文件结构
主/地上服务器 (Master)

.klei
DoNotStarveTogether
Cluster_1
Master
server.ini
adminlist.txt
cluster_token.txt
cluster.ini
lgsm
config-lgsm
dstserver
dstserver.cfg
serverfiles
mods
dedicated_server_mods_setup.lua
副/地下服务器 (Cases)

.klei
DoNotStarveTogether
Cluster_1
Cases
server.ini
adminlist.txt
cluster_token.txt
cluster.ini
lgsm
config-lgsm
dstserver
dstserver.cfg
serverfiles
mods
dedicated_server_mods_setup.lua
操作流程
对于存档的创建与修改
在自己的计算机上创建一个新的饥荒存档,记得打开所有你需要添加的 mod ,打开洞穴。

创建之后不要选人物,左下角直接离开游戏。找到存档的文件夹(应当在游戏内有打开存档文件夹的按钮),将其中的内容拷贝出来,应该包括:

Master/
Caves/
cluster_token.txt
cluster.ini

我们所要做的就是在同一个服务器的两个用户内分别运行游戏,一个运行 Master 也就是主世界,另外一个运行 Caves 也就是洞穴。要做到这一点,我们就需要把原本在一个文件夹里的 Master 和 Caves 分开,但为了链接它们又需要共同的令牌与设置。按照这个逻辑我们就可以分开它们:

主世界文件夹

Master/
cluster_token.txt
cluster.ini

洞穴文件夹

Master/
cluster_token.txt
cluster.ini

这就要求你保证这两个文件夹的 cluster_token.txt 和 cluster.ini 相同。这里的 cluster.ini 与你刚刚在游戏内创建时的房间设置一致,不必修改。但是 cluster_token.txt 中存放的是游戏服务器的令牌,当前是刚刚创建的房间的令牌,如果不修改则会导致服务器无法上线。因此我们需要重新注册一个服务器令牌。

在饥荒游戏主菜单左下角有账号按钮,点开弹出 klei 官方网站,点上方的 游戏 找到饥荒联机游戏服务器,创建新的服务器,里面的设置无需修改不用关心,直接复制令牌并替换 cluster_token.txt 里的内容即可。

对于服务器文件系统的操作
先切换至在服务器内创建两个用户

adduser master
adduser caves

分别在两个用户内安装 lgsm 并安装饥荒,我这里演示在 master 里操作的流程,对于 caves 是一样的:

su master
cd
wget -O linuxgsm.sh https://linuxgsm.sh && chmod +x linuxgsm.sh && bash linuxgsm.sh dstserver
./dstserver install

如果在安装中遇到 raw.githubusercontent.com 连接不上的问题可以在系统的 etc/hosts 里加上一行 199.232.4.133 raw.githubusercontent.com 再重试(或者重启)。

安装完全完成以后,需要修改 lgsm 启动项,进入 lgsm/config-lgsm/dstserver ,将 _default.cfg 里的内容粘贴进 dstserver.cfg 里,并修改这几行:

## Predefined Parameters | https://docs.linuxgsm.com/configuration/start-parameters
sharding=”true”
master=”true”
shard=”Master”
cluster=”Cluster_1″
cave=”false”

注意,上面这段代码是 master 用户里的设置, caves 用户则与其不同,应当这样设置:

## Predefined Parameters | https://docs.linuxgsm.com/configuration/start-parameters
sharding=”false”
master=”false”
shard=”Caves”
cluster=”Cluster_1″
cave=”true”

改完启动项,我们需要将存档分别放入对应的服务器内。进入 .klei/DoNotStarveTogether/Cluster_1 文件夹(注意:这个文件夹默认是隐藏的!),然后删除里面的所有内容,将上边分好的存档分别放入。master 用户里放 Master 存档, caves 用户里放 Caves 存档。

*后一步也是比较困难的一步:修改 mod 配置文件。进入 serverfiles/mods ,打开 dedicated_server_mods_setup.lua 文件,将自己存档里用到的 mod 以这种格式添加进文件:

ServerModSetup(“1271089343”)
ServerModSetup(“1898181913”)
ServerModSetup(“2078243581”)

每一行里的数字对应一个 mod,这个编号可以从该 mod 创意工坊的链接末尾获得,也可以在你的存档文件里找到。打开 Master/modoverrides.lua ,这里会列出所有存档里加载的 mod 的设置。我截取以下片段作为例子:

[“workshop-1185229307”]={
configuration_options={ damage=2, noepic=false, phase=true, range=20, timeout=10 },
enabled=true
},

这里的 1185229307 就是该 mod 对应的编号,将这个编号以上述的 ServerModeSetup(“**********”) 添加即可。存档里用到的所有 mod 都要添加;master 和 caves 用户都需要添加。

*后一项操作可选:配置服务器管理员。服务器管理员可以执行控制服务器的指令,包括 T 键模组 也需要使用者拥有管理员权限。

饥荒里每一位玩家都有独一无二的编号标识。自己的编号可以在饥荒游戏主菜单左下角的 账户 里找到,是一个格式为 KU_******** 的编号。

打开 Master/adminlist.txt 将编号添加进去即可,Caves/adminlist.txt 同理

完成了这些所有的配置基本就绪。接下来就可以尝试启动服务器了。

游戏服务器操作
先切换 master 用户进行操作:

cd
./dstserver start
./dstserver console

这里有两个操作,start 是启动服务器, console 是在 shell 里显示控制台,这样就可以查看服务器是否成功启动。如果*后看到如下内容,说明基本成功:

[**:**:**]Sim Paused
[**:**:**]Registering master server in *** lobby

此时可以另开一个 shell 窗口,切换 caves 用户,同样如此:

cd
./dstserver start
./dstserver console

待 caves 完全启动,观察 master 的控制台是否有链接到 caves 的输出信息,如果有的话,服务器就基本搭建完成了。这时候两个窗口都可以使用 Ctrl + B 再按 D 的方式安全退出控制台,这时候就可以关闭窗口了。如果要停止服务器,则分别输入 ./dstserver stop 即可。

在游戏中想要快速连接到服务器,可以按 ~ 键进入游戏内控制台,输入 c_connect(“服务器地址”)。

Ubuntu 搭建web服务器

1.打开ubuntu14.04

2.开始安装mysql5

sudo apt-get install mysql-server mysql-client

你将被要求提供一个mysql的root用户的密码,我们需要在红色区域设置密码。

new password for the mysql root user: repeat password for the mysql root user:

3.安装apache2

apache2的是作为一个ubuntu的软件包,因此我们可以直接用下面命令安装它:

sudo apt-get install apache2

现在,您的浏览器到http://localhost,你应该看到apache2的测试页:

如果顺利的话会出现:It worke!

4.安装php7.0

我们可以直接安装php7和apache的php7的模块,如下:

sudo apt-get install php7.0 libapache2-mod-php7.0

安装完需要重启

/etc/init.d/apache2 restart

重启时可能遇到的错误:AH00558: apache2: Could not reliably determine the server’s fully qualified domain name, using 127.0.1.1.等等。

解决方法:$ sudo vim /etc/apache2/apache2.conf

*后加入一句: ServerName localhost:80

5.默认网站的文件根目录是在/var/www/html/下中。现在我们将在该目录中创建一个小型php文件(info.php的)在浏览器中调用它。该文件将显示很多关于我们的php安装,如安装的php版本和有用的一些细节。

vi /var/www/html/info.php

在系统文件/var/www/下建立文件info.php,里面编写

<?php

phpinfo()

?>

文件权限问题:sudo chmod 777 /var/www/

6.用浏览器访问例如http://localhost/info.php会看到所有在php5中已经启用的模块,

liunx饥荒独立服务器安装、启动、停止及定时自动更新脚本

liunx饥荒独立服务器安装、启动、停止及定时自动更新脚本
注:

部分基础内容摘自:https://blog.csdn.net/szhiy/article/details/79996017
增加内容:定时更新、安装及启停脚本
脚本下载地址:https://github.com/love390/dontstarveserver
小内存机器无法同时启动地上、地下服务器:增加swap分区https://www.cnblogs.com/chentop/p/10330052.html
一、解决环境依赖
Ubuntu 系统需要的依赖:
sudo apt-get install libstdc++6:i386 libgcc1:i386 libcurl4-gnutls-dev:i386 lib32gcc1

CentOS 系统需要的依赖 (仅供参考):
yum -y install glibc.i686 libstdc++.i686 libcurl4-gnutls-dev.i686 libcurl.i686

二,创建专用用户
useradd steam
password steam
su steam

注:相关脚本涉及根路径为/home/steam,不创建特定用户修改对应脚本路径也没问题

二、安装 SteamCMD
此目录用于 steam 程序的安装目录。
mkdir ~/steamcmd

下载 SteamCMD 安装文件
wget -P ~/steamcmd https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz

解压压缩包
cd ~/steamcmd
tar -xvzf ~/steamcmd/steamcmd_linux.tar.gz

三、安装饥荒服务端
准备好相关文件(暂时放到/home/steam目录)
cron_update_starve.sh:用于cron定时调度完成服务器更新的脚本
update_starve.cmd:steamcmd运行时实际命令
update_starve.sh:用于下载饥荒服务器至指定目录
start.sh:在后台启动地上地上服务器
start_master.sh:前台启动地上服务器
start_cave.sh:前台启动地下服务器
stop.sh:停止所有服务器
赋予执行权限
– chmod u+x *.sh

启动安装脚本
./update_starve.sh

移动启停脚本
mv start* /home/steam/common/dstserver/bin
mv stop* /home/steam/common/dstserver/bin

四,准备游戏存档及mods
复制相关mods至/home/steam/common/dstserver/mods
复制存档至/home/steam/.Klei\DoNotStarveTogether\Cluster_1
五,解决一个 lib 缺失
cd /home/steam/common/dstserver/bin/lib32
ln -s /usr/lib/libcurl.so.4 libcurl-gnutls.so.4

六,设置定时调度
centos
systemctl enable crond
systemctl start crond

使用crontab -e后写入:0 3 * * * /home/steam/cron_update_starve.sh,保存

crontab -e

七、预期文件目录结构(仅保留核心内容)
│/steam
├──common
│ └── dstserver
│ ├── bin
│ │ ├── start_cave.sh
│ │ ├── start_master.sh
│ │ ├── start.sh
│ │ ├── steam_appid.txt
│ │ └── stop.sh
├── steamcmd
│ └── steamcmd.sh
├── update_starve.cmd
└── update_starve.sh
├── cron_update_starve.sh

八、启动及验证
启动
/home/steam/common/dstserver/bin/start.sh

验证
ps aux | grep donts

友情链接: SITEMAP | 旋风加速器官网 | 旋风软件中心 | textarea | 黑洞加速器 | jiaohess | 老王加速器 | 烧饼哥加速器 | 小蓝鸟 | tiktok加速器 | 旋风加速度器 | 旋风加速 | quickq加速器 | 飞驰加速器 | 飞鸟加速器 | 狗急加速器 | hammer加速器 | trafficace | 原子加速器 | 葫芦加速器 | 麦旋风 | 油管加速器 | anycastly | INS加速器 | INS加速器免费版 | 免费vqn加速外网 | 旋风加速器 | 快橙加速器 | 啊哈加速器 | 迷雾通 | 优途加速器 | 海外播 | 坚果加速器 | 海外vqn加速 | 蘑菇加速器 | 毛豆加速器 | 接码平台 | 接码S | 西柚加速器 | 快柠檬加速器 | 黑洞加速 | falemon | 快橙加速器 | anycast加速器 | ibaidu | moneytreeblog | 坚果加速器 | 派币加速器 | 飞鸟加速器 | 毛豆APP | PIKPAK | 安卓vqn免费 | 一元机场加速器 | 一元机场 | 老王加速器 | 黑洞加速器 | 白石山 | 小牛加速器 | 黑洞加速 | 迷雾通官网 | 迷雾通 | 迷雾通加速器 | 十大免费加速神器 | 猎豹加速器 | 蚂蚁加速器 | 坚果加速器 | 黑洞加速 | 银河加速器 | 猎豹加速器 | 海鸥加速器 | 芒果加速器 | 小牛加速器 | 极光加速器 | 黑洞加速 | movabletype中文网 | 猎豹加速器官网 | 烧饼哥加速器官网 | 旋风加速器度器 | 哔咔漫画 | PicACG | 雷霆加速