一.系统环境要求;

流媒体数据流接续主要占用CPU资源,在服务器选型,选择高性能CUP;

本环境部署在windows serves 2008 r2 datacenter。详细信息如下;

JT1078 流媒体服务器部署

二.环境补丁

C++2017 https://support.microsoft.com/en-us/help/2977003/the-latest-supported-visual-c-downloads

Net Framework 4-6-1 https://www.microsoft.com/en-us/download/details.aspx?id=49982

SP1 https://www.microsoft.com/zh-cn/download/details.aspx?id=5842

详见如下截图;

JT1078 流媒体服务器部署

三.流媒体文件服务器

Nginx提供负载  videoserver-new流媒体

1,进入nginx 目录,右击nginx以管理员权限运行Nginx。

2,进入videoserver-new 找到

3,右键编辑Dao_mysql文件,修改IP地址指向数据库,内容如下;

</object>

  <db:provider id="DbProvider" provider="OracleClient-2.0" connectionString="Data Source=X.X.X.X;Port=3306;User Id=ascs;Password=96bcnJ6ifCz7NBHpjhB1ZA45;database=subiaodb;Character Set=utf8"/>

 

4.右键编辑GPSNET。VideoServer.exe 文件类型config。内容如下;

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <configSections>

    <!-- 数据库的配置参数节 -->
    <section name="dataSettings" type="System.Configuration.NameValueSectionHandler" />
    <sectionGroup name="spring">
      <section name="context" type="Spring.Context.Support.ContextHandler, Spring.Core" />
      <section name="parsers" type="Spring.Context.Support.NamespaceParsersSectionHandler, Spring.Core" />
    </sectionGroup>
    <sectionGroup name="common">
      <section name="logging" type="Common.Logging.ConfigurationSectionHandler, Common.Logging" />
    </sectionGroup>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" />
    <sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
      <section name="GpsNET.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" />
    </sectionGroup>
  </configSections>

  <!-- 数据库的配置参数 -->
  <dataSettings>
    <add key="db.datasource" value="127.0.0.1" />
    <add key="db.user" value="sa" />
    <add key="db.password" value="abc168." />
    <!--主数据库名称-->
    <add key="db.database" value="gpstest" />

  </dataSettings>

  <spring>
    <parsers>
      <parser type="Spring.Data.Config.DatabaseNamespaceParser, Spring.Data" />
    </parsers>
    <context>
      <!-- using embedded assembly configuration file
      <resource uri="assembly://Spring.IocQuickStart.MovieFinder/Spring.IocQuickStart.MovieFinder/AppContext.xml"/>
      <resource uri="config://spring/objects"/>
      <resource uri="file://~//Quartz.xml"/>
      <resource uri="file://~//service.xml"/>
      -->

      <!-- using section in App.config -->

      <resource uri="file://~//Dao_mysql.xml" />
      <resource uri="file://~//service.xml" />

      <resource uri="assembly://GpsNET.Service/GpsNET.Config/QueryService.xml" />
    </context>
  </spring>


  <log4net>
    <root>
      <!--如果只需要看看Sql设置INFO就够了,如果你要调试可以设置为DEBUG或ALL-->
      <level value="Info" />
      <appender-ref ref="ConsoleAppender" />
      <appender-ref ref="ClientLogFileAppender" />
    </root>
    <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
      </layout>
    </appender>
    <appender name="ClientLogFileAppender" type="log4net.Appender.RollingFileAppender">
      <param name="File" value="log\server.log" />
      <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
      <appendToFile value="true" />
      <rollingStyle value="Size" />
      <maxSizeRollBackups value="30" />
      <maximumFileSize value="2MB" />
      <staticLogFileName value="true" />
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
      </layout>
    </appender>
    <logger name="SocketAsyncServer.AsyncTcpServer">
      <level value="DEBUG" />
      <appender-ref ref="ClientLogFileAppender" />
    </logger>
    <appender name="ServerLogFileAppender" type="log4net.Appender.RollingFileAppender">
      <param name="File" value="log\t808.log" />
      <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
      <appendToFile value="true" />
      <rollingStyle value="Size" />
      <maxSizeRollBackups value="3" />
      <maximumFileSize value="2MB" />
      <staticLogFileName value="true" />
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="记录时间:%date 日志:%message%newline" />
      </layout>
    </appender>
    <logger name="SocketAsyncServer.AsyncSocketConnection">
      <level value="DEBUG" />
      <appender-ref ref="ServerLogFileAppender" />
    </logger>
    <appender name="StaticFileAppender" type="log4net.Appender.RollingFileAppender">
      <param name="File" value="log\service.log" />
      <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
      <appendToFile value="true" />
      <rollingStyle value="Size" />
      <maxSizeRollBackups value="3" />
      <maximumFileSize value="2MB" />
      <staticLogFileName value="true" />
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
      </layout>
    </appender>
    <logger name="GpsNET.Service.FuelStatisticService">
      <level value="INFO" />
      <appender-ref ref="ServerLogFileAppender" />
    </logger>
    <logger name="Spring">
      <level value="ERROR" />
    </logger>
    <logger name="NHibernate">
      <level value="ERROR" />
    </logger>
  </log4net>
  <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1" />
  </startup>

  <system.serviceModel>

    <behaviors>
      <serviceBehaviors>
        <behavior name="WcfServerBehavior">
          <!-- 为避免泄漏元数据信息,请在部署前将以下值设置为 false 并删除上面的元数据终结点-->
          <serviceMetadata httpGetEnabled="false" />
          <!-- 要接收故障异常详细信息以进行调试,请将以下值设置为 true。在部署前设置为 false 以避免泄漏异常信息-->
          <serviceDebug includeExceptionDetailInFaults="true" />
          <dataContractSerializer maxItemsInObjectGraph="65536000" />
          <serviceThrottling maxConcurrentCalls="1000" maxConcurrentSessions="1000" maxConcurrentInstances="1000" />
        </behavior>

        <behavior name="ExposeMexAndThrottleBehavior">
          <serviceMetadata httpGetEnabled="true" httpGetUrl="http://localhost:1111/EventService/Mex" />
          <serviceThrottling maxConcurrentCalls="3" maxConcurrentInstances="100" maxConcurrentSessions="100" />
        </behavior>

      </serviceBehaviors>

      <endpointBehaviors>
        <behavior name="WcfServerBehavior">
          <dataContractSerializer maxItemsInObjectGraph="65536000" />
        </behavior>
      </endpointBehaviors>
    </behaviors>


    <services>
      <!-- GPS数据服务,端口:11300 -->
      <service name="RealDataService" behaviorConfiguration="WcfServerBehavior">
        <endpoint binding="netTcpBinding" contract="GpsNET.Service.IRealDataService" bindingConfiguration="hServerBinding" address="net.tcp://localhost:11300/realDataService/" />
        <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
        <host>
          <baseAddresses>
            <add baseAddress="http://localhost:11301/realDataService/" />
          </baseAddresses>
        </host>
      </service>

    </services>
    <client>
      <!-- 809GPS数据转发服务,端口:10300 -->
      <endpoint address="net.tcp://127.0.0.1:19300/JT809TransferService" binding="netTcpBinding" bindingConfiguration="NetTcpBinding_IJT809TransferService" contract="GpsNET.Service.IJT809TransferService" name="NetTcpBinding_IJT809TransferService" behaviorConfiguration="WcfServerBehavior" />
    </client>


    <bindings>
      <netTcpBinding>
        <binding name="hServerBinding" closeTimeout="00:01:00" openTimeout="00:2:00" receiveTimeout="01:10:00" sendTimeout="00:10:00" transactionFlow="false" transferMode="Buffered" transactionProtocol="OleTransactions" hostNameComparisonMode="StrongWildcard" listenBacklog="100" maxBufferPoolSize="21474836470" maxBufferSize="2147483647" maxConnections="200" maxReceivedMessageSize="2147483647">
          <readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" />
          <!--<reliableSession ordered="true" inactivityTimeout="10:10:00" enabled="true" />-->
          <security mode="None">
            <transport clientCredentialType="None" />
            <message clientCredentialType="None" />
          </security>
        </binding>
        <binding name="NetTcpBinding_IJT809TransferService" closeTimeout="00:15:00" openTimeout="00:01:00" receiveTimeout="10:10:40" sendTimeout="00:01:40" transactionFlow="false" transferMode="Buffered" transactionProtocol="OleTransactions" hostNameComparisonMode="StrongWildcard" listenBacklog="10" maxBufferPoolSize="2147483647" maxBufferSize="2147483647" maxConnections="100" maxReceivedMessageSize="2147483647">
          <readerQuotas maxDepth="32" maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" />
          <!--<reliableSession ordered="true" inactivityTimeout="10:20:00" enabled="true" /> -->
          <security mode="None">
            <transport clientCredentialType="Windows" protectionLevel="EncryptAndSign" />
            <message clientCredentialType="Windows" />
          </security>
        </binding>


      </netTcpBinding>

    </bindings>

  </system.serviceModel>

  <userSettings>
    <GpsNET.Properties.Settings>
      <setting name="ListenPort" serializeAs="String">
        <value>6001</value>
      </setting>
      <setting name="Console" serializeAs="String">
        <value>True</value>
      </setting>
      <setting name="ProcessDataInterval" serializeAs="String">
        <value>10</value>
      </setting>
      <setting name="BufferSize" serializeAs="String">
        <value>2048</value>
      </setting>
      <setting name="AllNeedResponse" serializeAs="String">
        <value>True</value>
      </setting>
      <setting name="LogPacket" serializeAs="String">
        <value>False</value>
      </setting>
      <setting name="IsNew808" serializeAs="String">
        <value>True</value>
      </setting>
      <setting name="DisplayLogo" serializeAs="String">
        <value>False</value>
      </setting>
      <setting name="Backlog" serializeAs="String">
        <value>100</value>
      </setting>
      <setting name="MaxConnections" serializeAs="String">
        <value>2000</value>
      </setting>
      <setting name="MaxAcceptNum" serializeAs="String">
        <value>500</value>
      </setting>
      <setting name="IdleTime" serializeAs="String">
        <value>120</value>
      </setting>
      <setting name="PlaySound" serializeAs="String">
        <value>False</value>
      </setting>
      <setting name="RtmpLocation" serializeAs="String">
        <value>rtmp://127.0.0.1:19350/live/</value>
      </setting>
      <setting name="JMSServerIp" serializeAs="String">
        <value>10.223.47.171</value>
      </setting>
      <setting name="JMSServerPort" serializeAs="String">
        <value>61616</value>
      </setting>
      <setting name="MaxOnlineTime" serializeAs="String">
        <value>30</value>
      </setting>
      <setting name="JMSEnabled" serializeAs="String">
        <value>True</value>
      </setting>
      <setting name="RecordVideo" serializeAs="String">
        <value>False</value>
      </setting>
      <setting name="Title" serializeAs="String">
        <value>JT1078流媒体转发服务器</value>
      </setting>
      <setting name="SimNoLength" serializeAs="String">
        <value>12</value>
      </setting>
      <setting name="BroadcastAudioWithoutHISI" serializeAs="String">
        <value>False</value>
      </setting>
      <setting name="Rtmp809TimeCode" serializeAs="String">
        <value>201901010001</value>
      </setting>
      <setting name="RedisConnectionString" serializeAs="String">
        <value>10.223.47.171:6379,password=46qUdp1mH1AM8RNS3TVsfNkQ</value>
      </setting>
      <setting name="RedisPullInfo" serializeAs="String">
        <value>1</value>
      </setting>
      <setting name="ServerTag" serializeAs="String">
        <value>0</value>
      </setting>

    </GpsNET.Properties.Settings>
  </userSettings>
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="Common.Logging" publicKeyToken="af08829b84f0328e" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-3.0.0.0" newVersion="3.0.0.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="Spring.Aop" publicKeyToken="65e474d141e25e07" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-2.0.1.40000" newVersion="2.0.1.40000" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="Spring.Core" publicKeyToken="65e474d141e25e07" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-2.0.1.45000" newVersion="2.0.1.45000" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="Spring.Data" publicKeyToken="65e474d141e25e07" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-2.0.1.45000" newVersion="2.0.1.45000" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="NHibernate" publicKeyToken="aa95f207798dfdb4" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-3.3.0.4000" newVersion="3.3.0.4000" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="Quartz" publicKeyToken="f6b8c98a402cc8a4" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-2.2.1.400" newVersion="2.2.1.400" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="System.Runtime.CompilerServices.Unsafe" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-4.0.4.1" newVersion="4.0.4.1" />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
</configuration>
 

5.右击 GpsNET.VideoServer 运行;信息如下;

JT1078 流媒体服务器部署

 

相关文章: