基于阿里云MaxCompute实现游戏数据运营

简介: 一、总览 一个游戏/系统的业务数据分析,总体可以分为图示的几个关键步骤:   1、数据采集:通过SDK埋点或者服务端的方式获取业务数据,并通过分布式日志收集系统,将各个服务器中的数据收集起来并送到指定的地方去,比如HDFS等;(注:本文Demo中,使用flume,也可选用logstash、Flue.

一、总览


38e7ace3282d6565be48559148a611ce9493ce05
一个游戏/系统的业务数据分析,总体可以分为图示的几个关键步骤:
 d371a61b446772f6bf2abed2f1ba49e267ba0559

1、数据采集:通过SDK埋点或者服务端的方式获取业务数据,并通过分布式日志收集系统,将各个服务器中的数据收集起来并送到指定的地方去,比如HDFS等;(注:本文Demo中,使用flume,也可选用logstash、Fluentd等)
2、数据同步:构建数据通道,接受数据采集agent的数据流,并且分发到不同的存储/计算引擎中去;(注:本文Demo中,使用阿里云datahub作为通道,MaxCompute作为存储/计算引擎)
3、数据开发:按照日志格式、业务领域,构建数据模型;(注:本文Demo中,在MaxCompute中创建对应的project、table)
4、数据计算/分析:按照业务场景的分析要求,编写SQL脚本 或者 使用工具,完成数据的分析及展现;(注:本文Demo中,基于阿里云quickBI,完成多维分析、仪表盘的配置)
接下来按照上述步骤,给大家具体介绍,如何利用相关的平台/工具,实现一个简单的数据分析场景。

二、环境准备

首先,需要准备一台服务器,作为日志采集的agent,此处选用阿里云的ECS(具体ECS选购过程不再赘述),服务器配置信息:
实例规格:4 核 16GB
地域:华东 1(华东 1 可用区 F)
操作系统:CentOS 7.4 64位
网络类型:专有网络
安全组:允许远程ssh
本地远程登录ECS服务器
ssh  {username}@{host}
d7431d5567046c707e46e14c0ae64b9ea5bc40e3

Step1:安装JDK

Flume运行依赖java环境,因此需要在服务器安装SDK,本文采用先下载到本地,再上传服务器的方式安装。
1、下载并上传SDK (demo选用jdk1.8.0_151,可至oracle官网下载)
scp {本地文件路径}  {username}@{host}:{服务器目录}
1283adb74803740a691a50f0030abad6cc741132
2、上传完成,解压并设置相应的环境变量:
1、tar -zxvf  {jdk压缩包名}
2、环境变量设置
# vi /etc/profile
增加:
export JAVA_HOME={jdk目录}
export CLASS_PATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$JAVA_HOME/bin:$PATH
export JAVA_HOME JRE_HOME CLASS_PATH PATH
#source /etc/profile
3、检查SDK是否安装完成:
java -version
6998e38afed91bd686290f64d6cc2ba04aafcded

Step2:安装flume

同样,对于flume,也可采用先下载到本地,再上传服务器的方式安装。
1、下载并上传flume安装文件 (demo选用apache-flume-1.8.0,可至apache官网下载)
scp {本地文件路径}  {username}@{host}:{服务器目录}
2、上传完成,解压并设置相应的环境变量
1、tar -zxvf  {flume压缩包名}
2、环境变量设置
# vi /etc/profile
增加:
export FLUME_HOME=/usr/local/flume
修改:
path= $path :$FLUME_HOME/bin
#source /etc/profile
3、检查flume是否安装完成:
#此处注意,需要写flume安装的全路径
{flume安装路径}/bin/flume-ng version
d284b913881c77648db768018fbd052e04c84b71

Step3:安装Datahub Sink插件

因为Demo选用datahub作为数据通道,所以还需要安装flume-datahub的插件,该文件不大,此处可以选择直接在服务器下载安装。
1、下载flume-datahub插件包
ab9562d8625bbb126ecf1ce98dcb1b6121645fc4
2、解压并部署插件
1、tar zxvf flume-datahub-sink-1.1.0.tar.gz
2、将解压后的插件文件夹移动到Flume安装目录下
# mkdir /usr/local/flume/plugins.d
# mv flume-datahub-sink  /usr/local/flume/plugins.d/
OK,环境准备工作,到此就基本完成了。

三、数据开发

Demo使用阿里云大数据服务MaxCompute作为存储计算引擎。

Step1:开通MaxCompute服务

阿里云实名认证账号访问https://www.aliyun.com/product/odps ,开通MaxCompute,此处选择按量付费进行购买。
f8869a8bbf2670e3b4413384f0c6279f46db81a9

Step2:创建项目及业务模型

1、进入数加控制台 https://data.aliyun.com/console ,点击“dataworks->项目列表” ;
e156132886fe468966018a324c1c9f550808fc94
2、点击页面“创建项目”按钮,输入project的基本信息,点击确定,会有一个短暂的初始化过程;
e001d835f97e0021dfed07b6e175a86b045f1f84
3、点击项目列表下对应项目操作栏,进入dataworks的数据开发页面;
bd9d2979f4c564b57a15fcb8028e4c6ae3c0ba53
4、创建脚本文件:点击顶部菜单栏中的数据开发,点击“新建”处新建脚本,也可直接点击“新建脚本”任务框;
a56247beb6bd5322c8fcf279c3b45d2ae3a359e0
5、按照需求,设计对应的业务模型,并通过脚本完成模型创建;
#此处按照场景示例,选择创建
1、 事实表:充值记录,与日志文件recharge_record_log对应;
2、 维表:商品信息;
#建表语句示例(同时维表可做数据初始化)
create table if not exists recharge_record_log(
recharge_time string comment '充值时间',
…     
item_id string   comment '商品ID'   
)
注:具体可以参考对应的建表脚本(建表及维表初始化脚本.sql)
可在数据开发的IDE环境编写、调测脚本:
8fceccd38562350df3d6bad1b4bd67f4cf998c8e
OK,数据建模的工作,到此就基本完成了。

四、数据同步

step1:数据通道设置

Demo使用阿里云datahub作为数据同步的通道。
1、首先,申请开通datahub服务(公测中,链接);
2、进入Datahub的管理控制台-项目管理(链接),创建project;
122db63e1e07e17a13bdd5bfdade42cc55a49b74
3、进入创建好的project,点击“创建topic”;
需要注意,此处的topic内容需要与日志文件、表的结构一致,此处可以选择“导入MaxCompute表结构”的方式,填写相应信息,快速完成创建;
c2115a38395509c92c0bea6a6898a93942f2cce9

step2:数据采集agent配置及启动

登录安装了flume环境的ECS服务器,配置、启动日志采集agent,并对接datahub的数据通道;
1、数据准备:通过手工方式,上传准备好的日志文件(实际应用场景中,应该是通过服务写入);
2、Flume作业配置:
1)在Flume安装目录的conf文件夹下,创建任务的conf文件;
vi  {任务名称}.conf
2)输入任务的配置信息
#示例如下(重点关注{}中的内容)
#a1是要启动的agent的名字
 a1.sources = r1   #命名agent的sources为r1
a1.sinks = k1     #命名agent的sinks为k1
a1.channels = c1  #命名agent的channels为c1
# Describe/configure the source
a1.sources.r1.type = exec #指定r1的类型为exec
a1.sources.r1.command =cat {日志文件的位置}   #写入本地文件路径
# Describe the sink
a1.sinks.k1.type = com.aliyun.datahub.flume.sink.DatahubSink #指定k1的类型
a1.sinks.k1.datahub.accessID ={ accessID }
a1.sinks.k1.datahub.accessKey ={ accessKey }
a1.sinks.k1.datahub.endPoint = http://dh-cn-hangzhou.aliyuncs.com
a1.sinks.k1.datahub.project = {datahub_project_name}
a1.sinks.k1.datahub.topic ={datahub_ topic _name}
a1.sinks.k1.batchSize = 100 #一次写入文件条数
a1.sinks.k1.serializer = DELIMITED
a1.sinks.k1.serializer.delimiter = {字段间隔符}
a1.sinks.k1.serializer.fieldnames= {字段 “,” 隔开,注意需要与日志文件的顺序、datahub topic的顺序保持一致}
a1.sinks.k1.serializer.charset = {文字编码格式}
a1.sinks.k1.shard.number =  {分片数,需要与datahub 的topic配置一致}
a1.sinks.k1.shard.maxTimeOut = 60
# Use a channel which buffers events in memory
a1.channels.c1.type = memory  #指定channel的类型为memory
a1.channels.c1.capacity = 1000  #设置channel的最大存储数量为1000
a1.channels.c1.transactionCapacity = 1000 #每次最大可从source中拿到或送到sink中的event数量是1000
# Bind the source and sink to the channel
a1.sources.r1.channels = c1
a1.sinks.k1.channel = c1
3、检查无误后,启动flume日志采集agent;
bin/flume-ng agent -n a1 -c conf -f conf/ {任务名称}
.conf -Dflume.root.logger=INFO,console
如果能正常启动,可以看到数据正在按照配置往datahub中同步;
0b5e50ea6e1cb26b56ce6ee3a72679e118f846cf

step3:数据检查

在datahub的topic页面,可以看到数据同步的情况:
e6454a74d4dd425286be11794ffba3bcdab99766

可以通过两种方式来检查数据:

1、topic的数据抽样,查看数据格式是否正常;

87dc17747b71b4e8eb4714713f6d04ec48a6e700

2、因为已经配置了datahub到MaxCompute的数据链路,可以在MaxCompute中检查数据入库情况;

d2022cb6f7db2a255f81a6dc99b20c4d2c4b75f9

OK,数据同步的工作,到此就基本完成了。


五、数据分析&报表制作

接下来需要基于日志,做业务分析,那么这里我们可以选择quickBI工具,来快速完成多维分析报表、仪表盘等数据产品的配置;

通过 链接 ,打开quickBI的产品页面,并开通对应服务。

Step1:分析模型设置(数据集)

1、进入数据工作台https://das.base.shuju.aliyun.com/console.htm,点击左侧QuickBI;

d4b5095eb574a2db8315b386c7f2977a876c5114

2、在引导页,点击“添加数据源”;

81507e30a38c576082dd8dd0ddeeb7968eede6cd

3、设置数据源的属性

按demo场景,选择MaxCompute;

ef384ebf1d632a311ef20717c33e51e2c5037a96

并设置对应的peoject信息:

1fb7b500aad1ec0516c24982d7cf2a9f95fbf379

4、数据源连接成功后,可以看到project下的表,选择需要分析的表,创建数据集;

3219df769d92b1d92322afa4039c61aff7d5e004

5、按照分析场景需求,可以对数据集的逻辑模型做设置;

demo的分析场景,需要 基于事实表(充值数据,recharge_record_log)和维表(商品信息表,t_item_record)关联,来完成业务分析,因此可以点击编辑数据集:

fd863983ff017c81220adebdfd98e66451d1a70b

完成:

1)构建关联模型

bb96003e0eb80db87f82dbdb5b011da24eea35ac

0e8229e7cd0ecf88dbb7b78867baf40e00ca5dbc

4935dfa440e3cb928bcd8376f2980266ec3a578b

2)可以对时间维度做拆分,会自动生成多个level

d01aad51b075ac26ca789f8f369ec94bf090b265

Step2:多维分析报表配置

1、分析模型设置好之后,接下来就可以开始分析了,点击“表格分析”:

483192d12c97dbb6710ab9178696dd56b4e97b39

2、进入多维分析报表的IDE工作台:

af8ec22cb5fe4aeb38372c47ca52a66474f887fa

3、可以看到,左侧的字段属性区,会自动加载物理表的对应字段(默认加载comment描述):

ad4d55a9f1c52dfae7f0938ab2ae71842c67450d

4、具体分析操作,比较简单,按需双击、拖拽需要分析的字段,点击查询即可看到报表,比如:

1)按商品(维度),看充值(计量)的整体情况

5b86861bc0a4e21ac31baa532a086c6caad12e4d

2)增加角色等级(维度),做交叉表

c3275168403e45f4a3b0f6a9975cedc3157fec08

3)同时也支持各种查询条件的设置

按时间

11e9c7204ba244852ebf4bbb4dac0bbf110e5bc5

多层嵌套的高级查询

6b4558b702e4b07c579f46589789aa2de434195e

Step3:仪表盘、数据产品配置

灵活性较强的数据探查类场景,可以通过多维报表支撑,对于展现形式要求较高的,可以通过仪表盘来灵活实现;

1、数据集List页面,点击“新建仪表盘”:

7fc33758f6a7667daa0c4d7772a1c1158514ddcc

2、进入仪表盘的IDE工作台,页面分为左、中、右三栏:

e2e571f6b0731853dfd2eb5cf6e61eed31c0c378

3、同样,可以通过拖拽的方式,快速完成仪表盘页面的配置:

1)拖拽/双击 选择需要作图的字段:

d8488f151ab921f6eb5efaa14ba2a18d7b4945dc

2)点击更新,刷新图表,同时可以自由设置图表的样式

56bbc7d7c68ef1563ca5d5246c4771564a86caa1

3)拖拽设置页面布局

d45851beef524e8a6797ae7c30b69731475f7d61

比如,可以做一个专门的充值分析页面,效果示例:

38e7ace3282d6565be48559148a611ce9493ce05

数据产品是类似于分析专题、报表门户,具体配置就不再赘述:

3a4a9516d2647434f6d9cd210c7849c1c1de4773


六、架构总结

一、Demo涉及的产品 以及 数据流

如图所示:

bbcbc2924269b2f02fc6802a0a30deec61dfd2c8

二、如何实现生产场景下的动态数据采集及常见问题处理

和Demo不同的是,在生产场景下,我们的日志文件是动态的,因此需要实现如下逻辑:

1、 监控日志目录下的文件变化;

2、 根据配置的频率,采集日志;

1、flume1.7及以上版本

包含TaildirSource组件,可以实现监控目录,并且使用正则表达式匹配该目录中的文件名进行实时收集。

Flume作业配置:

1)在Flume安装目录的conf文件夹下,创建任务的conf文件;

vi  {任务名称}.conf

2)输入任务的配置信息(注意,此处差异较大)

#示例如下(重点关注{}中的内容)

#a1是要启动的agent的名字

 a1.sources = r1   #命名agent的sources为r1

a1.sinks = k1     #命名agent的sinks为k1

a1.channels = c1  #命名agent的channels为c1

# TaildirSource配置

a1.sources.r1.type = org.apache.flume.source.taildir.TaildirSource

a1.sources.r1.channels = memory_channel

a1.sources.r1.positionFile = /tmp/taildir_position.json

a1.sources.r1.filegroups = f1

a1.sources.r1.filegroups.f1 = {/usr/logfile/s51/mylog/*}

a1.sources.r1.batchSize = 100

a1.sources.r1.backoffSleepIncrement  = 1000

a1.sources.r1.maxBackoffSleep  = 5000

a1.sources.r1.recursiveDirectorySearch = true

# Describe/configure the source

a1.sources.r1.type = exec #指定r1的类型为exec

a1.sources.r1.command =cat {日志文件的位置}   #写入本地文件路径

# Describe the sink

a1.sinks.k1.type = com.aliyun.datahub.flume.sink.DatahubSink #指定k1的类型

a1.sinks.k1.datahub.accessID ={ accessID }

a1.sinks.k1.datahub.accessKey ={ accessKey }

a1.sinks.k1.datahub.endPoint = http://dh-cn-hangzhou.aliyuncs.com

a1.sinks.k1.datahub.project = {datahub_project_name}

a1.sinks.k1.datahub.topic ={datahub_ topic _name}

a1.sinks.k1.batchSize = 100 #一次写入文件条数

a1.sinks.k1.serializer = DELIMITED

a1.sinks.k1.serializer.delimiter = {字段间隔符}

a1.sinks.k1.serializer.fieldnames= {字段 “,” 隔开,注意需要与日志文件的顺序、datahub topic的顺序保持一致}

a1.sinks.k1.serializer.charset = {文字编码格式}

a1.sinks.k1.shard.number =  {分片数,需要与datahub 的topic配置一致}

a1.sinks.k1.shard.maxTimeOut = 60

# Use a channel which buffers events in memory

a1.channels.c1.type = memory  #指定channel的类型为memory

a1.channels.c1.capacity = 1000  #设置channel的最大存储数量为1000

a1.channels.c1.transactionCapacity = 1000 #每次最大可从source中拿到或送到sink中的event数量是1000

# Bind the source and sink to the channel

a1.sources.r1.channels = c1

a1.sinks.k1.channel = c1


3、检查无误后,启动flume日志采集agent;

bin/flume-ng agent -n a1 -c conf -f conf/ {任务名称}

.conf -Dflume.root.logger=INFO,console


2、flume 1.6 

原生不支持TaildirSource,需要自行下载集成:

下载地址:http://7xipth.com1.z0.glb.clouddn.com/flume-taildirfile-source.zip

将源码单独编译,打成jar包,上传到$FLUME_HOME/lib/目录下,之后配置方法可以参考上文;


3、常见问题:

1、日志文件解析错误

异常信息截图:

805fbd1d659028bdcf768917a96fffa9147415a2

原因分析及解决方法

出现图示异常的原因,一般是因为解析日志文件得到的属性数量和配置文件不一致所致,此时需要重点排查:

1) 配置文件的间隔符、属性是否正确

a1.sinks.k1.serializer.delimiter = {字段间隔符}

a1.sinks.k1.serializer.fieldnames= {字段 “,” 隔开,注意需要与日志文件的顺序、datahub topic的顺序保持一致}

a1.sinks.k1.serializer.charset = {文字编码格式}

2) 日志文件格式是否符合预期、是否包含特殊字符


2、文件适配符模式下,找不到文件

异常信息截图:

929fb7a2bb022a59cb79940196c430b25eda3361

2a4756a176e772241a32cd6d8db50a2815088f01

原因分析及解决方法

出现图示异常的原因,一般是因为按照通配符设置,未找到文件导致异常退出,此时需要重点检查配置文件中的日志路径设置:

a1.sources.r1.filegroups.f1 = {/usr/logfile/s51/mylog/*}


3、 修改配置文件后,重新启动,无异常信息但是不加载数据

异常信息截图:

dc6b8257647c3a1ba8c46746a42fdf8de89b4154

原因分析及解决方法

该问题比较隐秘,任务可以启动,没有明显的异常日志,但是到sink环节后不再加载数据,一般是因为修改了配置文件设置,但是没有删除对应的描述文件,需要:

1) 找到配置的描述文件路径

a1.sources.r1.positionFile = /tmp/taildir_position.json

2) 删除描述文件,重启任务

db57155c509e5d49c41c3f35f829c8c49371a696

可正常加载数据;

三、扩展场景的产品架构&数据流

f5e989ff3365eb7aab8675dff96d6aa8dc4d6d7b


转自作者耿纯


华北2(北京)Region MaxCompute购买地址:https://common-buy.aliyun.com/?commodityCode=odpsplus#/buy

欢迎加入“数加·MaxCompute购买咨询”钉钉群(群号: 11782920)进行咨询,群二维码如下:

96e17df884ab556dc002c912fa736ef6558cbb51 


相关实践学习
简单用户画像分析
本场景主要介绍基于海量日志数据进行简单用户画像分析为背景,如何通过使用DataWorks完成数据采集 、加工数据、配置数据质量监控和数据可视化展现等任务。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps 
目录
相关文章
|
1月前
|
弹性计算 固态存储
玩转阿里云游戏服务器:阿里云幻兽帕鲁Palworld游戏专属服务器搭建保姆级流程
对于热爱《幻兽帕鲁》的玩家们来说,与好友一起联机冒险无疑是游戏的一大乐趣。但如何快速搭建一个专属服务器,让你和朋友轻松“抓帕鲁”呢?本文将为您提供阿里云极简部署幻兽帕鲁专属服务器的指引,让您仅需轻点三次鼠标,3秒轻松开服!
|
21天前
|
机器学习/深度学习 分布式计算 数据挖掘
阿里云 MaxCompute MaxFrame 开启免费邀测,统一 Python 开发生态
阿里云 MaxCompute MaxFrame 正式开启邀测,统一 Python 开发生态,打破大数据及 AI 开发使用边界。
198 1
|
1月前
|
弹性计算 Ubuntu Windows
阿里云自建《幻兽帕鲁Palworld》多人游戏专属服务器,搭建方法分享
对于《幻兽帕鲁》的忠实粉丝来说,与好友一同在游戏中探险、生存无疑增加了更多的乐趣。而为了实现这一愿望,搭建一个专属的多人游戏服务器就显得尤为重要。今天,我将为大家带来一篇极简教程,教您如何在三次点击内,轻松搭建《幻兽帕鲁》的专属服务器。
|
1月前
|
弹性计算 Ubuntu Windows
阿里云幻兽帕鲁Palworld搭建游戏联机服务器教程,3秒开服
对于《幻兽帕鲁》这款开放世界生存制作游戏的狂热粉丝来说,能够拥有自己的游戏服务器无疑是一个巨大的诱惑。这款游戏由Pocketpair开发,于2024年1月18日发行了抢先体验版本,其广阔的游戏世界和多样的玩法——收集神奇的生物"帕鲁",派遣它们进行战斗、建造、农活和工业生产等——已经吸引了无数玩家。今天,我将为大家详细介绍,如何在阿里云服务器上以最简单的方式一键部署幻兽帕鲁联机服务器。
|
1月前
|
弹性计算
2024年阿里云轻松创建《幻兽帕鲁Palworld》多人游戏专属服务器教程
对于热爱《幻兽帕鲁》的玩家们来说,与好友共同探险、挑战,无疑是游戏中的一大乐趣。但如何快速搭建一个稳定的专属服务器,却常常让玩家们感到头疼。别担心,阿里云为您提供了极简的解决方案,让您在三次点击之内,3秒内轻松开服!
29 0
|
1月前
|
人工智能 DataWorks 数据可视化
心动基于阿里云DataWorks构建游戏行业通用大数据模型
心动游戏在阿里云上构建云原生大数据平台,基于DataWorks构建行业通用大数据模型,如玩家、产品、SDK、事件、发行等,满足各种不同的分析型应用的要求,如AI场景、风控场景、数据分析场景等。
334 1
|
1月前
|
弹性计算 Linux Windows
阿里云幻兽帕鲁Palworld多人游戏专属服务器搭建教学,小白专属
随着幻兽帕鲁/Palworld的风靡,越来越多的小伙伴渴望搭建属于自己的游戏服务器,与好友共同探索这个神秘而奇幻的世界。今天,就为大家带来一篇简单易懂的服务器搭建教学,让你轻松成为服务器主人!首先,我们要感谢阿里云提供的便捷服务。只需10秒,你就能在阿里云上自动开设属于自己的幻兽帕鲁服务器。现在,就跟着我一起操作吧!
|
1月前
|
弹性计算 Linux Windows
玩转幻兽帕鲁Palworld:阿里云上搭建《幻兽帕鲁Palworld》多人游戏专用服务器,图文教程
《幻兽帕鲁》无疑是近期游戏界的焦点,其独特的开放世界与生存制作玩法吸引了众多玩家。但你知道吗?与好友一同在这个世界中冒险,其实更加有趣!今天,就为大家带来详细的图文攻略,教你在阿里云上快速搭建《幻兽帕鲁》的多人游戏专用服务器。
33 0
|
1月前
|
弹性计算
2024年幻兽帕鲁/Palworld游戏专用服务器搭建步骤(阿里云一键搭建帕鲁服务器)
《幻兽帕鲁》这款游戏自推出以来,便以其独特的联机对战模式赢得了玩家们的广泛喜爱。然而,联机过程中常常遇到的服务器卡顿、延迟高等问题,让许多玩家倍感困扰。为了解决这个问题,阿里云为《幻兽帕鲁》的玩家们提供了一种便捷且高效的解决方案:通过阿里云一键搭建云服务器,轻松优化游戏体验。
|
29天前
|
Ubuntu JavaScript 关系型数据库
在阿里云Ubuntu 20.04服务器中搭建一个 Ghost 博客
在阿里云Ubuntu 20.04服务器上部署Ghost博客的步骤包括创建新用户、安装Nginx、MySQL和Node.js 18.x。首先,通过`adduser`命令创建非root用户,然后安装Nginx和MySQL。接着,设置Node.js环境,下载Nodesource GPG密钥并安装Node.js 18.x。之后,使用`npm`安装Ghost-CLI,创建Ghost安装目录并进行安装。配置过程中需提供博客URL、数据库连接信息等。最后,测试访问前台首页和后台管理页面。确保DNS设置正确,并根据提示完成Ghost博客的配置。
在阿里云Ubuntu 20.04服务器中搭建一个 Ghost 博客

相关产品

  • 云原生大数据计算服务 MaxCompute