游戏平台api的代码,本项目使用python2.7.16开发,其它版本的python没有经过测试,请小心使用, 服务器为centos 6.9
项目采用python2.7进行开发,使用到数据库为
- mysql 使用sqlalchmey连接数据库
- mongodb 使用mongoengine 连接项目
- 数据库连接全部采用url方式配置,数据库需要单独配置
使用到的依赖查询
$ yum install gcc openssl-devel bzip2-devel
下载python
参考文档How to Install Python 2.7.16 on CentOS/RHEL 7/6 and Fedora 30-25
$ cd /usr/src
$ wget https://www.python.org/ftp/python/2.7.16/Python-2.7.16.tgz
$ tar xzf Python-2.7.16.tgz
安装python
$ cd Python-2.7.16
$ ./configure --enable-optimizations
$ make altinstall
安装pip
$ curl "https://bootstrap.pypa.io/get-pip.py" -o "get-pip.py"
$ python2.7 get-pip.py
$ cd /etc/yum.repos.d/
$ vim fxdata.repo
把下面的内容贴上去
[fxdata]
name=fxdata repo
baseurl=https://fxdata-yum.oss-cn-shanghai.aliyuncs.com/
gpgcheck=0
enabled=1
保存退出
$ yum --enablerepo=fxdata install supervisor
下载代码
项目托管在github上面,直接拉去代码到服务器的/home
下面
$ pip install virtualenv
$ virtualenv game_venv -p /usr/local/bin/python2.7
$ source game_venv/bin/activate
安装依赖项目依赖
cd /home/game_center && pip install -e .
修改config
在/home/gamecenter/etc 目录中有三个文件
gamecenter_api.ini
gamecenter.conf.sample
nginx_gamecenter.conf
- gamecenter_api.ini supervisor 进程管理控制文件
- gamecenter.conf.sample app 配置文件样本
- nginx_gamecenter.conf nginx config的文件的
$ mv gamecenter.conf.sample gamecenter.conf
修改下面的内容
[DEFAULT]
# whether enable debug logging = None
debug = true
# log size, unit: byte default 10mb = None
log_size = 1048576
# job log dirname = None
job_log_dir = /home/game_logs
# log file number = None
log_num = 10
[DB]
# datebase url that xedge itself maintained
sql_connection = mysql://root:123456@localhost/gamecenter
[MONGODB]
# mongo address
mongodb_url = mongodb://127.0.0.1:27017
[SDK]
# sdk keys
cp_game_key = xxxx
# skd host
host = xxxx
[WORKER]
# the gamecenter app own crontab file path
crontab_file = /etc/cron.d/game.tab
[OLD_DATA]
# old data key hours
keep_hour = 6
修改对应的配置的保存退出
mysql中需要创建一个名字为gamecenter
的数据库
CREATE DATABASE IF NOT EXISTS `gamecenter` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
数据库采用sqlalcehmy模型和alembic文件托管,alembic文件模型和项目一起打包在代码中,
完成项目安装之后
$ source /home/game_venv/bin/activate
$ (game_venv) $ game-manage upgrade head
INFO [alembic.runtime.migration] Context impl MySQLImpl.
INFO [alembic.runtime.migration] Will assume non-transactional DDL.
关于game-manage
项目命令行工具下面会详细说明
$ echo_supervisord_conf > /etc/supervisord.conf
创建文夹
$ mkdir /etc/supervisord.d
移动文件/home/gamecenter/etc/*.ini 这些文件到上面创建的文件夹中
修改/etc/supervisord.conf
最下面的内容
[include]
files = supervisord.d/*.ini
完成上述配置,执行
$ supervisorctl upgdate
检查进程是否起来
$ ps -ef | grep game-api
root 13998 9590 0 Mar25 ? 00:05:16 /home/game_venv/bin/python /home/game_venv/bin/game-api --port=8005
root 13999 9590 0 Mar25 ? 00:05:33 /home/game_venv/bin/python /home/game_venv/bin/game-api --port=8004
root 14012 9590 0 Mar25 ? 00:04:48 /home/game_venv/bin/python /home/game_venv/bin/game-api --port=8007
root 14019 9590 0 Mar25 ? 00:04:50 /home/game_venv/bin/python /home/game_venv/bin/game-api --port=8006
出现上面的结果表示已经起来了
app默认开放本地端口8004-8007四个端口,需要使用nginx做内部负载均衡,具体参考/etc/nginx_gamecenter.conf
$ cd /home/nginx/conf.d && mv default.conf default.conf.bak
将app中nginx配置文件移动到的 /home/nginx/conf.d
执行命令
$ service nginx reload
Reloading nginx: [ OK ]
按照上面的配置完成可以使用服务器的80端口访问app
curl localhost/v1
{"status": "success"}
该项目一共有三个入口
- game-api app api的主要入口 完成
- game-manage 用来做一些命令行工具的操作 完成
- game-worker 定时任务的入口 完成
$ game-api --help
usage: game-api [-h] [-p PORT] [-a ADDRESS] [-c CONFIG]
optional arguments:
-h, --help show this help message and exit
-p PORT, --port PORT run on the give port
-a ADDRESS, --address ADDRESS
run on the give address
-c CONFIG, --config CONFIG
use specific config file
参数 | 说明 |
---|---|
-p |
port端口 默认 8000 |
-a |
host address 默认 127.0.0.1 |
-c |
config 文件的地址 默认app 根目录下的 etc中的gamecenter.conf |
$ game-manage --help
usage: game-manage [-h] [-c CONFIG] [-v]
{upgrade,downgrade,version,history,revision,dump_config}
...
positional arguments:
{upgrade,downgrade,version,history,revision,dump_config}
upgrade upgrade database verion
downgrade downgrade database version
version print current database version
history print database migration history
revision create an alembic file of database
dump_config dump example config into gamecenter.conf.sample
list_job list app job
run_job run app job manually
optional arguments:
-h, --help show this help message and exit
-c CONFIG, --config CONFIG
use specific config file
-v, --verbose increase output verbosity
参数 | 说明 |
---|---|
-c |
config 文件的地址 默认app 根目录下的 etc中的gamecenter.conf |