最低5刀一个月,基于SEER测试网络搭建一个属于自己的区块链棋牌游戏

最低5刀一个月,基于SEER测试网络搭建一个属于自己的区块链棋牌游戏

I 前言

这个5刀,说的是游戏和钱包服务器费用,代码是免费用的,因为用的是SEER测试网络,所以区块链手续费也完全不存在的。
大家可以通过自己动手做一个基于SEER的区块链游戏,来体验SEER文体平台的优势和手续费消耗等。但测试网络随时都有可能回滚,请勿认真。
此指南基于RQQ团队开源的 赛亚麻将 syMahjong-seer 文档编写:https://github.com/seer-developer-community/syMahjong-seer
请遵守所在地法律法规,切勿将此游戏代码及区块链用于非法用途,否则一切后果自行承担。
这里我们使用美国ISP Digitalocean公司的新加坡机房1核1G CentOS 7.6 x64 云服务器作为游戏服务端和钱包服务器,费用5美元/月,按分钟计费。另外送给大家一个 Digitalocean的优惠码:https://m.do.co/c/970eea2c3ff8 点此链接注册,第一个月使用50刀以内不收钱。

1

II 游戏评测

RQQ的这一款赛亚麻将(下载试玩: https://www.seer.best/download/seermahjong_pre_alpha_1014.apk 游戏体验方式见这里:基于SEER的区块链版赛亚麻将游戏Pre alpha版本内测啦! ),是为SEER公链定制的区块链游戏,游戏还是一样的玩法,但将游戏积分系统已经全部放在了区块链上,使用SEER链上的文体平台模块(Culture and Sports Platform,CSP)。用户需要将资产划转给游戏运营方,才能用划转的这部分资产玩游戏,用户的所有资金流向(资产划转、加入房间时支付房费、结算时向赢家派发赢得的积分等都可以在区块浏览器中查询到)。基于合规性的考虑(用户之间禁止转账,资产禁止提出平台,禁止兑换实物等),此版本赛亚麻将采用注册区块链账户时强制授权给运营方的账户管理体系,并不反馈区块链账户私钥给用户,用户的登陆仅能通过微信登陆进行,实现用户仅能在此平台内使用自己的区块链账户。有开发能力的开发者也可以对代码进行简单修改即可让游戏实现完全去中心化,但建议大家事先了解自己所在地的法律法规,以免误触红线。

III 指南总览

此指南主要分为两个部分的部署:客户端和服务器端,细分下来包括:客户端、服务端、区块链钱包、游戏管理后台、微信登陆配置等。我们一步一步来,服务端,客户端,游戏后台三端的部署可以分别独立进行,部署顺序没有影响,但因为有的依赖复用的问题,还是按此指南顺序比较好。

IV 部署游戏服务端

在这个章节,我们主要需要安装三个应用依赖:MongoDB、MySQL、nodejs。并配置区块链钱包,连接SEER测试网络区块链节点API。

part 1 基础环境搭建

  1. 切换root用户登录:sudo -i,如果不切换可能造成路径和此指南不一致;
  2. 安装 c++、wget、nano、git、screen:
yum install -y gcc-c++ wget nano git screen

修改SELinux的配置文件,永久关闭linux内置的安全子系统SELinux(因为此安全系统阻止外部访问Apache服务器根目录中文件内容,导致之后访问会403 Forbidden报错):

nano /etc/selinux/config

SELINUX=enforcing改为SELINUX=disabled(nano使用 ctrl + w进行搜索)然后ctrl + O enter 保存, ctrl + X 退出nano。
使用reboot重启系统。

  1. 克隆项目代码
git clone https://github.com/seer-developer-community/syMahjong-seer.git

  1. 解压、配置nodejs和mongodb:

PS:这里的nodejs以及mongdodb可以从官方渠道下载配置,但因为RQQ贴心的放在了项目里,可以直接解压即可。

tar -zxvf ~/syMahjong-seer/server-soft/node-v6.2.1-linux-x64.tar.gz
tar -zxvf ~/syMahjong-seer/server-soft/mongodb-linux-x86_64-amazon-3.3.10.tgz
mv ~/node-v6.2.1-linux-x64 ~/app/node 
mv ~/mongodb-linux-x86_64-amazon-3.3.10 ~/app/mongodb
mkdir ~/app/mongodb/data  ~/app/mongodb/log
touch ~/app/mongodb/log/mongodb.log
nano ~/.bash_profile

配置环境变量,在最下面添加:

PATH=$PATH:$HOME/bin:~/app/node/bin 
PATH=$PATH:$HOME/bin:~/app/mongodb/bin 

ctrl + O enter 保存, ctrl + X 退出nano。

让配置生效:

source ~/.bash_profile
  1. 配置并启动mongdodb数据库:
nano ~/app/mongodb/mongodb.conf

创建mogodb启动文件, 内容如下:
可以自行修改db路径,log路径,ip,端口号。

fork=true
dbpath=/root/app/mongodb/data
logpath=/root/app/mongodb/log/mongodb.log
bind_ip=209.97.170.87,127.0.0.1
port=9999
logappend=true

ctrl + O enter 保存, ctrl + X 退出nano。

启动mongdb数据库:

mongod --config /root/app/mongodb/mongodb.conf 
  1. 安装mysql5.6版本并配置远程连接MySQL
    检测系统是否自带安装mysql
yum list installed | grep mysql 

如果有自带的,且此mysql没有用,则删掉:

yum -y remove mysql-libs.x86_64 

拉取mysql包:

wget http://repo.mysql.com/mysql-community-release-el6-5.noarch.rpm

这个rpm还不是mysql的安装文件,只是两个yum源文件,执行后,在/etc/yum.repos.d/ 这个目录下多出mysql-community-source.repo和mysql-community.repo

rpm -ivh mysql-community-release-el6-5.noarch.rpm

可以用yum repolist mysql这个命令查看一下是否已经有mysql可安装文件

yum repolist all | grep mysql

安装mysql:

yum install -y mysql-community-server

启动MySQL服务:

systemctl start mysqld.service

输入mysql -u root这个命令即可进入MySQL数据库

刚开始安装好的MySQL5.6的密码是空,提示输入password时,直接点击键盘回车键即可(也有可能直接看到mysql>

进入MySQL数据库后输入以下三条命令就可以成功修改MySQL服务登陆密码了:

use mysql;
update user set password=PASSWORD("这里输入root用户密码") where User='root';
flush privileges;

返回信息如下:

mysql> use mysql
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> update user set password=PASSWORD("abc12345") where User='root';
Query OK, 4 rows affected (0.00 sec)
Rows matched: 4  Changed: 4  Warnings: 0

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

mysql> exit;
Bye

设置开机自动启动mysql服务:

systemctl enable mysqld.service

mysql安全设置(系统会一路问你几个问题,看不懂复制之后翻译,基本上一路yes即可):

mysql_secure_installation

如果看到这个提示是提醒你输入刚才设置的密码:

Enter current password for root (enter for none): 

这个是询问是否修改密码,输入n即可:

Change the root password? [Y/n] n

其他的直接enter就行了。

配置远程连接,输入本条命令就即可进入到MySQL服务后,输入以下四条命令即可通过MySQL工具(如Navicat for MySQL)就可以远程连接MySQL服务了:

mysql -uroot -p这里输入你之前设置的root用户密码
use mysql;
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '远程登录密码' WITH GRANT OPTION;
flush privileges;
exit;

返回信息如下:

[root@centos-s-1vcpu-1gb-sgp1-01 ~]# mysql -uroot -pabc12345 
Warning: Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 15
Server version: 5.6.46 MySQL Community Server (GPL)

Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'seer2018' WITH GRANT OPTION;
Query OK, 0 rows affected (0.00 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

mysql> exit;
Bye

以上,服务端基础环境搭建完成,下面进入配置文件设置。

part 2 初始化mongodb数据库并创建用户名

  1. 配置文件设置:
nano ~/syMahjong-seer/server/config/ServerAddrConfig.js

默认配置中,是中央服务器和web服务器单独的多服务器结构,这里我们用的是一台服务器做测试,所以需要把中央服务器、web服务器的局域网IP192.168.1.*全部改为服务器公网IP, mongodb数据库的port端口号需要改的和你的~/app/mongodb/mongodb.conf中的端口号一致,数据库名将用于下一步的初始化,用户名和密码即你之后要创建的,mySQL配置等可以后面再设置。

ctrl + O enter 保存, ctrl + X 退出nano。

  1. 修改mongodb数据库初始化脚本:
nano ~/syMahjong-seer/server/InitMiddleDB.js

找到let connectStr = "mongodb://127.0.0.1:26800";这一行,将端口号26800改成和你的~/app/mongodb/mongodb.conf中的端口号一致;

ctrl + O enter 保存, ctrl + X 退出nano。

  1. 初始化mongodb数据库:
node ~/syMahjong-seer/server/config/ServerAddrConfig.js
  1. 创建mongodb用户名和密码

使用mongo shell连接到实例,9999是你在~/app/mongodb/mongodb.conf中设置的mongodb端口号:

mongo --port 9999

进入shell后,为你的数据库创建一个具有读写权限的账户,数据库名,账户密码和~/syMahjong-seer/server/config/ServerAddrConfig.js中配置的一致:

use SEERGAME

db.createUser(
  {
    user: "seergame",
    pwd: "game123456",
    roles: [ { role: "readWrite", db: "SEER" }]
  }
)

exit

返回信息如下:

> use SEERGAME
switched to db SEERGAME
> db.createUser(
...   {
...     user: "seergame",
...     pwd: "game123456",
...     roles: [ { role: "readWrite", db: "SEERGAME" }]
...   }
... )
Successfully added user: {
        "user" : "seergame",
        "roles" : [
                {
                        "role" : "readWrite",
                        "db" : "SEERGAME"
                }
        ]
}
> exit
bye

详细操作请查看文档地址 https://www.yiibai.com/mongodb/enable-authentication.html

  1. 修改mongodb访问方式

首先,安全关闭mongodb进程:

首先使用ps x列出所有进程,找到mongod --config /root/app/mongodb/mongodb.confPID,即最前面的数字,例如13182

使用kill -9指令杀死这个进程,例如:kill -9 13182

然后修改配置文件:

nano ~/app/mongodb/mongodb.conf

在末尾追加:

auth=true

ctrl + O enter 保存, ctrl + X 退出nano。

为什么不能一开始就写上这个,是因为我们要先用无账号模式去创建用户,现在创建好了就关闭无账号模式。

重新启动mongodb:

mongod --config /root/app/mongodb/mongodb.conf 

返回信息如下:

[root@centos-s-1vcpu-1gb-sgp1-01 ~]# mongod --config /root/app/mongodb/mongodb.conf 
about to fork child process, waiting until server is ready for connections.
forked process: 24628
child process started successfully, parent exiting

part 3 导入mysql数据库

  1. 登入mysql:
mysql -uroot -p你的密码

  1. 创建数据库,例如SEERGAME,此数据库名,账户密码需要和~/syMahjong-seer/server/config/ServerAddrConfig.js中配置的一致:
create database SEERGAME;
  1. 选中数据库:
use SEERGAME;
  1. 设置编码为utf8:
set names utf8;
  1. 导入数据库:
source  ~/syMahjong-seer/server/seer_back.sql
  1. 退出mysql:

Ctrl-C或输入exit;

返回信息如下:

mysql>  create database SEERGAME;
Query OK, 1 row affected (0.00 sec)

mysql> use SEERGAME;
Database changed
mysql> set names utf8;
Query OK, 0 rows affected (0.00 sec)

mysql> source  ~/syMahjong-seer/server/seer_back.sql
Query OK, 0 rows affected (0.00 sec)

......

Query OK, 0 rows affected (0.05 sec)

mysql> Ctrl-C -- exit!
Aborted

part 4 游戏算法配置

这个主要是配置一些玩法和机器人模式,可以根据需求调整,也可以默认不修改,里面有注释,可以自行修改。

nano ~/syMahjong-seer/server/config/CSBaseConfig.js

如果有修改,ctrl + O enter 保存, ctrl + X 退出nano。

part 5 区块链钱包配置

SEER区块链钱包文体平台模块(Culture and Sports Platform,CSP)的详细使用方式请参考这篇使用指南:https://docs.seerchain.org/#/zh-Hans/CSPinstruction
此项目文件中已经包含了目前最新的钱包文件,可以直接使用。因为测试网络只能通过远程API连接,所以无需运行节点。如果要基于SEER主网,则还可以自行运行节点作为API,以保证区块链交互的安全性和效率。

  1. 因为SEER钱包需要在后台保持运行,所以我们使用screen新建一个窗口来运行钱包:
screen -S wallet

如果要切换到主窗口,使用ctrl+a-d下次再使用此窗口,使用screen -r wallet,wallet是窗口名,可以自行指定。在有多个同名窗口的情况下,使用screen -r num来恢复窗口,num是screen -ls列出的窗口名前的数字。

  1. 基于项目内提供的SEER钱包启动测试网络钱包:
cd ~/syMahjong-seer/wallet
chmod 777 * 
./cli_wallet -s ws://192.144.171.138:8003 -r 127.0.0.1:5698 --chain-id="da68a9c5f2fd9ed48e626ea301db1c77505523884ba0dd409e779246c6ea26cf" 

成功运行后,会显示new >>

  1. 输入set_password 123设置钱包密码;详见:https://docs.seerchain.org/#/zh-Hans/cli?id=_1-set_password
  2. 输入unlock 123解锁钱包;*** 记得每次看到locked>>的时候就解锁 *** 详见:https://docs.seerchain.org/#/zh-Hans/cli?id=_2-unlock
  3. 输入import_key cute 5Kb1PcVBpKWPacsgPwZ8KdesmBbvqnmAdYYKQtYVEpBJVF5GRci导入测试账号的私钥;详见:https://docs.seerchain.org/#/zh-Hans/cli?id=_5-import_key
  4. 输入suggest_brain_key生成几对秘钥对,复制下来;详见:https://docs.seerchain.org/#/zh-Hans/cli?id=_4-suggest_brain_key
  5. 用生成秘钥对中的公钥(SEER开头的一串数字字母字符),替换掉模板中的公钥SEER......yVgnQ,修改模板中的新账号用户名name,输入register_account name SEER4xBLWwa8Q42ZRnY2sFz5rywr16TG6WgbNSPDR5DodvNEQyVgnQ SEER4xBLWwa8Q42ZRnY2sFz5rywr16TG6WgbNSPDR5DodvNEQyVgnQ cute cute 20 true,注册账号,多个账号多次注册;详见:
    https://docs.seerchain.org/#/zh-Hans/cli?id=_1-register_account
  6. 输入transfer cute name 5000000 SEER "" true为你创建的账号name(需替换)转账 500万SEER 测试币,多个账号多次转账;详见:https://docs.seerchain.org/#/zh-Hans/cli?id=_2-transfer
  7. 输入import_key name 5Kb1...Rci导入你刚刚注册的测试账号的私钥,多个账号多次导入;详见:https://docs.seerchain.org/#/zh-Hans/cli?id=_5-import_key
  8. 输入sc_platform_create name "" 400000000000 ["SEER"] true创建平台,SEER是此平台接受的资产类型,你也可以自己创建一个资产,数字是带有5位精度的400万SEER的写法,详细参数说明参考: https://docs.seerchain.org/#/zh-Hans/CSPinstruction?id=sc_platform_create;
  9. 输入sc_platform_deal name 1.19.N 1 [] true开启平台,1.19.N是你创建的平台OID,详细参数说明参考:https://docs.seerchain.org/#/zh-Hans/CSPinstruction?id=sc_platform_deal;
    平台OID可以使用get_sc_platform_by_account nameID查询。详见:https://docs.seerchain.org/#/zh-Hans/CSPinstruction?id=get_sc_platform_by_account
    用户名的object_ID可通过get_account_id name查询。详见:https://docs.seerchain.org/#/zh-Hans/cli?id=_13-get_account_id
  10. 输入upgrade_account name true账号升级,升级以后才能作为注册人负责新账号的注册,因为新升级的用户在下一个维护期(下一个新加坡时间早上9点)以后才有成为注册人推荐人的权限,所以当天测试的话,在之后的配置中还是用cute,以后可以切换为你的账号,详细参数说明参考: https://docs.seerchain.org/#/zh-Hans/cli?id=_3-upgrade_account

如果节点故障,或是因为升级节点等操作重启,命令行钱包也会报错退出,造成报错,因此在主网升级维护等特殊情况时,需要注意钱包是否正常运行。

使用ctrl+a-d切换回主窗口。

part6 修改调用区块链钱包的配置文件

nano ~/syMahjong-seer/server/config/ServerConfig.js

修改最末尾的SEER配置,将seerAccount: "sy04"中的sy04改为你上面注册的账号名,seerAccountId: "1.2.26"中的1.2.26改为此账号的OID,GMUID : 100001是首次进入游戏后生成,回头再来改,RegisterInfoReferrerInfo是注册新账号时的注册人和推荐人账号名和私钥,先不用改,你新注册帐号的注册账户权限生效以后可以改为自己的。

ctrl + O enter 保存, ctrl + X 退出nano。

part7 修改文件权限,启动服务器

cd  ~/syMahjong-seer/server
chmod 777 start_* 
./start_all start 

如果以后要关闭则使用:

cd  ~/syMahjong-seer/server
./start_all stop

PS:需要cd到~/syMahjong-seer/server执行./start_all,因为此脚本中用的是相对路径,如果想在任何目录用~/syMahjong-seer/server/start_all start这样来启动和停止,则需要自行先编辑此脚本将里面的相对路径改为绝对路径。

以上,游戏服务端部署完成,下面进入游戏管理后台部署。

V 游戏管理后台环境配置搭建

游戏管理后台用于游戏的各种数据管理,使用apache+mysql5.6+php5.6的开发环境。

part1 安装并配置Apache

  1. 安装Apache
yum install -y httpd
  1. 启动apache并设置开机自动启动Apache服务
systemctl start httpd.service
systemctl enable httpd.service

成功的返回信息如下:

[root@centos-s-1vcpu-1gb-sgp1-01 ~]# systemctl start httpd.service
[root@centos-s-1vcpu-1gb-sgp1-01 ~]# systemctl enable httpd.service
Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.

如果在开机自动开启Apache服务时报错Failed to execute operation: Access denied,则需要操作如下步骤:

nano /etc/sysconfig/selinux
SELINUX=disabled

ctrl + O enter 保存, ctrl + X 退出nano。
再输入以下两条命令即可:

setenforce 0
getenforce
systemctl enable httpd.service # 设置开机自动启动Apache服务
systemctl restart httpd.service # 重启apache服务
  1. 编辑Apache配置文件:
nano /etc/httpd/conf/httpd.conf

作如下修改(nano使用 ctrl + w进行搜索,加*号的必须修改,其它为优化配置,根据apache版本的不同可能找不到):

NameVirtualHost *:80  # 找到这一行把 # 去掉
AddHandler cgi-script .cgi # *找到这一行修改为:AddHandler cgi-script .cgi .pl (*允许扩展名为.pl的CGI脚本运行)
Options Indexes MultiViews FollowSymLinks # 找到这一行修改为 Options MultiViews FollowSymLinks(不在浏览器上显示树状目录结构)
ServerSignature On # 找到这一行修改为:ServerSignature Off (在错误页中不显示Apache的版本)
DirectoryIndex index.html index.html.var # *找到这一行修改为:DirectoryIndex index.html index.htm Default.html Default.htm index.php Default.php index.html.var (设置默认首页文件,增加index.php)
AllowOverride None # *找到这一行修改为:AllowOverride All (允许.htaccess)
Options Indexes FollowSymLinks # *找到这一行修改为:Options Includes ExecCGI FollowSymLinks(允许服务器执行CGI及SSI,禁止列出目录)
MaxKeepAliveRequests 100 # 找到这一行修改为:MaxKeepAliveRequests 1000 (增加同时连接数)
KeepAlive Off # 找到这一行修改为:KeepAlive On (允许程序性联机)
ServerTokens OS # 找到这一行修改为:ServerTokens Prod (在出现错误页的时候不显示服务器操作系统的名称)

ctrl + O enter 保存, ctrl + X 退出nano。

  1. 重启apache服务:
systemctl restart httpd.service
  1. 删除默认测试页
rm -f /etc/httpd/conf.d/welcome.conf /var/www/error/noindex.html

因为我们在服务器端配置中已经安装了mysql,所以如果你也是用同一台服务器同时作为服务端和管理后台服务器的话就不用再安装,否则,回到IV 部署游戏服务端 part 1 基础环境搭建 5. 安装mysql5.6版本并配置远程连接MySQL,在当前服务器安装mysql。

part2 安装并配置php5.6版本

  1. 删除旧php包,如果提示找不到最好
yum remove php.x86_64 php-cli.x86_64 php-common.x86_64 php-gd.x86_64 php-ldap.x86_64 php-mbstring.x86_64 php-mcrypt.x86_64 php-mysql.x86_64 php-pdo.x86_64 
  1. 安装epel源、配置epel源、remi源、安装php5.6.x
yum install -y epel-release
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
rpm -ivh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
yum install -y --enablerepo=remi --enablerepo=remi-php56 php php-opcache php-devel php-mbstring php-mcrypt php-mysqlnd php-phpunit-PHPUnit php-pecl-xdebug php-pecl-xhprof 
  1. 安装php-fpm
yum install -y --enablerepo=remi --enablerepo=remi-php56 php-fpm 
  1. 重启php服务
systemctl restart php-fpm
  1. 重启apache服务
systemctl restart httpd.service
  1. 编辑php配置文件
nano /etc/php.ini

作如下修改(nano使用 ctrl + w进行搜索:

date.timezone # 把前面的分号去掉,改为date.timezone = Asia/Singapore
display_errors = On # 关于显示错误信息:注意设为off后就没办法调试了,这里只能填On,上线以后可以改为Off
expose_php = Off # 禁止显示php版本的信息
disable_functions = # 列出PHP可以禁用的函数,如果某些程序需要用到这个函数,可以删除,取消禁用。
找到open_basedir修改为:;open_basedir = .:/tmp/
short_open_tag = ON # 支持php短标签

ctrl + O enter 保存, ctrl + X 退出nano。
7. 重启MySql和Apche

systemctl restart mysqld.service
systemctl restart httpd.service

在重启MySql的时候有个坑,没遇到最好,提示:

[root@centos-s-1vcpu-1gb-sgp1-01 ~]# systemctl restart mysqld.service
Job for mysqld.service failed because the control process exited with error code. See "systemctl status mysqld.service" and "journalctl -xe" for details.

cat /var/log/mysqld.log查看mysql启动日志,找到[ERROR]开头的,发现有这几个:

2019-11-28 06:46:49 9742 [ERROR] InnoDB: Cannot allocate memory for the buffer pool//不能从缓存池中分配给innodb引擎需要的内存
2019-11-28 06:46:49 9742 [ERROR] Plugin 'InnoDB' init function returned error.//InnoDB报错
2019-11-28 06:46:49 9742 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.//InnoDB报错
2019-11-28 06:46:49 9742 [ERROR] Unknown/unsupported storage engine: InnoDB//InnoDB报错
2019-11-28 06:46:49 9742 [ERROR] Aborting

这个应该是因为这个服务器只有1G内存引起的,解决方法:
nano /etc/my.cnf调整 MySQL 配置文件 my.cnf,将innodb_buffer_pool_size改为8M:

 innodb_buffer_pool_size = 8M

ctrl + O enter 保存, ctrl + X 退出nano。

改好以后systemctl restart mysqld.service重启MySql即可。

part3 导入管理后台的mysql数据库

在导入数据库前,先将将管理后台移入Apache默认目录:

mkdir /var/www/gm
mv ~/syMahjong-seer/GM工具/seer_gm/* /var/www/gm
  1. 登入mysql:
mysql -uroot -p你的密码
  1. 创建数据库,例如SEERGM,此数据库名,账户密码需要和/var/www/application/database.php中配置的一致:
create database SEERGM;
  1. 选中数据库:
use SEERGM;
  1. 设置编码为utf8:
set names utf8;
  1. 导入数据库:
source  ~/syMahjong-seer/GM工具/seer_gm.sql
  1. 退出mysql:

Ctrl-C或输入exit

返回信息如下:

mysql> create database SEERGM;
Query OK, 1 row affected (0.01 sec)

mysql> use SEERGM;
Database changed
mysql> set names utf8;
Query OK, 0 rows affected (0.00 sec)

mysql> source  ~/syMahjong-seer/GM工具/seer_gm.sql
Query OK, 0 rows affected (0.00 sec)

......

Query OK, 1 row affected (0.02 sec)

mysql> exit
Bye

part4 配置管理后台

  1. 编辑数据库配置文件:
nano /var/www/gm/application/database.php

作如下修改(nano使用 ctrl + w进行搜索:

hostname:服务器的地址 (必填)
database:导入数据库的数据库名称 (必填)
username:数据库用户名 (必填)
password:数据库密码 (必填)
hostport:数据库端口号 (必填)

ctrl + O enter 保存, ctrl + X 退出nano。

  1. 编辑配置文件:
nano /var/www/gm/application/config.php

作如下修改(nano使用 ctrl + w进行搜索:

IP:与服务器接口调用IP地址设置 (必填)
IP1:跳转页面本地址的IP地址 (必填)
db_config2:mysql://数据库用户名:数据库密码@服务器IP:数据库端口号/数据库名称 # utf8 (必填)
serverException:与node服务器交互时发生错误提示的内容,可自行设置 (必填)
port:数据库端口号 (必填,即"~/syMahjong-seer/server/config/ServerAddrConfig.js"第8行配置的服务器端口)

ctrl + O enter 保存, ctrl + X 退出nano。

  1. 编辑apache配置文件:
nano /etc/httpd/conf/httpd.conf

作如下修改,nano使用 ctrl + w进行搜索:

DocumentRoot "/var/www"

ctrl + O enter 保存, ctrl + X 退出nano。

重启apache服务:

systemctl restart httpd.service

以上,数据后台基本配置完成,现在可以使用http://你的服务器ip/gm/pulic 打开管理后台。

GM工具初始登录账号和密码:admin、admin123(该账号和密码可修改)

  1. 在把整个项目上传到服务器后一定要把项目中的cache缓存目录设置为777命令,否则会报错,说你该目录下会没有权限进行读写:
cd /var/www/gm/runtime/cache
chmod 777 *
cd

管理后台结构:

.
www  WEB部署目录
├─application           应用目录
│  ├─admin              后台模块目录
│  │  ├─controller      控制器目录
│  │  ├─lang            语言包
│  │  ├─model           模型目录
│  │  ├─view            视图目录
│  │  ├─config          配置目录
│  │  └─ ...            更多类库目录    
│  │         
│  ├─api                模块目录
│  │  ├─common.php      模块函数文件
│  │  ├─controller      控制器目录
│  │  ├─model           模型目录
│  │  ├─view            视图目录
│  │  ├─config          配置目录
│  │  └─ ...            更多类库目录
│  │
│  ├─common             模块目录
│  │  ├─controller      控制器目录
│  │  │  └─Url.php      url接口公共文件
│  │  ├─model           模型目录
│  │  ├─view            视图目录
│  │  └─ ...            更多类库目录
│  │
│  ├─command.php        命令行定义文件
│  ├─config.php         配置文件
│  ├─database.php       数据库配置
│  └─tags.php           应用行为扩展定义文件
│
├─route                 路由定义目录
│  ├─route.php          路由定义
│  └─...                更多
│
├─public                WEB目录(对外访问目录)
│  ├─index.php 
│  │  └─assets
│  │     └─js
│  │        └─backend    所有的视图js数据显示文件,与application/admin/controller的逻辑文件是一致的
│  ├─index.php          入口文件
│  ├─router.php         快速测试文件
│  └─.htaccess          用于apache的重写
│
├─thinkphp              框架系统目录
│  ├─lang               语言文件目录
│  ├─library            框架类库目录
│  │  ├─think           Think类库包目录
│  │  └─traits          系统Trait目录
│  │
│  ├─tpl                系统模板目录
│  ├─base.php           基础定义文件
│  ├─convention.php     框架惯例配置文件
│  ├─helper.php         助手函数文件
│  └─logo.png           框架LOGO文件
│
├─extend                扩展类库目录
├─runtime               应用的运行时目录(可写,可定制)
├─vendor                第三方类库目录(Composer依赖库)
├─build.php             自动生成定义文件(参考)
├─composer.json         composer 定义文件
├─LICENSE.txt           授权说明文件
├─README.md             README 文件
└─think                 命令行入口文件

part5 配置微信登陆

  1. 将微信登陆模块移入Apache默认目录:
mkdir /var/www/weixin
mv ~/syMahjong-seer/weixin/* /var/www/weixin
  1. 目前项目中的微信登陆入口文件(http://服务器ip/weixin/index.php/admin/Wxx.php)是RQQ团队提供的,仅用于测试是可以的。

如果你要改为自己的需要提前申请微信登陆:https://open.weixin.qq.com/

修改WxxController.class.php

nano /var/www/weixin/Application/Admin/Controller/WxxController.class.php

作如下修改:

20行ip参数改为http://服务器的IP:node服务器端口 端口即"~/syMahjong-seer/server/config/ServerAddrConfig.js"第8行一致 
21行key参数跟"~/syMahjong-seer/server/config/ServerConfig.js"第53行node服务器设置的key参数一致 
22行的iv参数跟"~/syMahjong-seer/server/config/ServerConfig.js"第52行node服务器设置的iv参数一致
23行的ip2参数跟服务器ip参数一致 
117行token的参数必须设置为跟微信公众平台的token一致//如果已经申请好了微信登陆,修改此内容,否则不用修改,用RQQ的测试。

如果已经申请好了微信登陆,修改下面的内容:

将文件中weixin/index.php/admin/Wxx.php第123、124的注释关闭掉后,
再将http://服务器ip/weixin/index.php/admin/Wxx/wxPuMsg 地址填到微信公众平台中,即可配置成功,

配置成功后再将文件中weixin/index.php/admin/Wxx.php第123、124的注释打开即可。

ctrl + O enter 保存, ctrl + X 退出nano。

以上,服务端和管理后台全部内容配置完成,下面进入客户端开发。

因为整个部署有点长,笔者也是一边部署一边查资料排坑,写教程比较花时间,所以我们分个期怎么样,客户端部署下一期再写。