|
|
2 years ago | |
|---|---|---|
| app | 2 years ago | |
| bootstrap | 2 years ago | |
| database | 2 years ago | |
| newlink | 2 years ago | |
| public | 2 years ago | |
| resources | 2 years ago | |
| routes | 2 years ago | |
| storage | 2 years ago | |
| tests | 2 years ago | |
| .editorconfig | 2 years ago | |
| .env.example | 2 years ago | |
| .gitattributes | 2 years ago | |
| .gitignore | 2 years ago | |
| .htaccess | 2 years ago | |
| .styleci.yml | 2 years ago | |
| 404.html | 2 years ago | |
| README.md | 2 years ago | |
| artisan | 2 years ago | |
| composer.json | 2 years ago | |
| composer.lock | 2 years ago | |
| dcat_admin_ide_helper.php | 2 years ago | |
| doit.sh | 2 years ago | |
| index.html | 2 years ago | |
| package.json | 2 years ago | |
| server.php | 2 years ago | |
README.md
交易所服务端
pc端api接口,h5端api接口,后台管理,websocket信息推送系统
后台管理地址
域名/admin
账号:admin
密码:admin
软件架构
Laravel6 + Mysql。
环境要求
git用户版本管理,部署和升级必要工具PHP 7.3 +Mysql 5.7+,数据库Redisredis需要开启过期键监听功能
在配置文件中的配置
notify-keyspace-events Ex重启
composer用于安装依赖- PHP扩展
gmp PHP扩展,注意和 PHP 版本相同。mongodb PHP扩展,注意和 PHP 版本相同。ext-zip扩展,注意和 PHP 版本相同。ext-json扩展,注意和 PHP 版本相同。ext-fileinfo扩展,注意和 PHP 版本相同。
- PHP函数(需要进入php配置文件取消禁用)
putenv获取env配置信息proc_open(函数说明:执行一个命令,并且打开用来输入/输出的文件指针) composer 安装时需要pcntl_signal(函数说明:安装一个信号处理器) 启用workman需要pcntl_fork(函数说明:在当前金正当前未知产生分支) 启动workerman需要pcntl_wait(等待或返回fork的子进程状态) 启动workerman需要pcntl_signal_dispath(调用等待信号的处理器) 启动workerman需要pcntl_alarm()启动workerman需要symlink创建静态资源软连接需要exectinker需要
部署
Git部署
注意:使用过程中,必须避免直接修改数据库数据,Laravel 拥有强大的 Eloquent ORM 模型层,程序中的所有逻辑交互都由模型关联完成,直接修改数据库数据将会导致未知的错误。应用脱离数据库直接交互是现在最流行的做法。
生产环境下为遵守安全策略,非常建议在服务器本地进行部署,暂时不提供相关线上初始化安装的功能。因此,虽然前期部署的步骤较多,但已经自动化处理了很大部分的流程,只需要跟着下面的命令一步步执行,一般是不会有部署问题的。
- 创建一个数据库,命名随意,但记得之后填写配置时需要对应正确,并且数据库字符集为
utf8-general-ci。 - 打开linux服务器终端执行
ssh-keygen -t rsa将在 ~/.ssh/id_rsa.pub 生成公钥,将公钥添加到git仓库部署公钥中 获得拉去代码的权限 - 在你想要项目运行目录中,执行
git clone --depth 1 -b server git@gitee.com:guapiya233/binvet.git ./server将代码下载到本地-b 意为选择分支 ./server 意为将代码克隆到 server 目录
- 进入server项目目录执行
composer install进行依赖的安装如果未满足上述环境要求可能会出现安装报错
- 在项目根目录中,复制
.env.example为一份新的,并重命名为.env该文件储存了系统的配置信息
- 在
.env中配置Mysql数据库信息以及redis信息mysql与redis是必须配置的信息,其余的workerman、接口域名配置、邮件配置、短信配置可滞后配置
- 进入项目根目录后执行
php artisan exchange:install进行安装该命令将会自动创建导入数据库、创建资源目录软连接、重置管理员密码
- 你可能使用的web服务器为
nginx以及apache,无论怎样,应用的起始路径在/public目录,请确保指向正确,同时程序的根目录权限应该调整为:拥有者和你的 Web 服务器运行用户一致,且根目录权限为755。 - 修改web服务器的伪静态规则为:
location / { try_files $uri $uri/ /index.php?$args; } - 此时可以通过访问
http://your_domain来使用 交易所管理后台。管理员账号密码为:admin / admin。
启动websocket行情服务
-
启动主程序
php artisan workerman option start --dphp artisan workerman swap start --d
-
启动websocket行情采集工具
- 行情采集
cd public/exchange sh wss_start.sh & - swap采集
cd public/swap sh swap_start.sh &
- 行情采集
-
配置nginx 设置协议升级(如果是ws则需要将https改为http) 在站点nginx配置文件增加以下配置
#在nginx内添加该段内容 location /ws1 { proxy_pass https://127.0.0.1:2346; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; } location /ws2 { proxy_pass https://127.0.0.1:2348; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; } -
常见问题
killall -9 php解决无法workerman关闭的问题
开启守护进程 (使用supervisor管理器)
-
php artisan queue:work redis --queue=triggerStrategy合约平仓? triggerStrategy
-
php artisan queue:work redis --queue=HandleFlatPositionHandleFlatPosition
-
php artisan queue:work redis --queue=handleContractEntrusthandleContractEntrust
-
php artisan queue:work redis --queue=handleEntrust合约队列 handleEntrust
-
php artisan queue:work redis --queue=UdunDepositU盾队列 UdunDeposit
-
php artisan option:delivery 期权交割 option_delivery -
php artisan flatPosition平仓机器人 flatPosition
-
php artisan contractDealRobot合约交易成交机器人 contractDealRobot
-
php artisan BdealRobot BdealRobot币币交易买单处理机器人
-
php artisan SdealRobot SdealRobot币币交易卖单处理机器人
添加corntab任务(用于执行定时任务)
corntab任务是laravel的任务调度(定时任务)对系统的依赖,如果未开启这项配置将会导致,期权场景不能创建、异常期权任务不能取消、USD-CNY汇率不能更新、申购活动无法进行 在命令行终端执行
crontab -e -u www增加这一行配置 (命令中的目录需要根据自己的环境进行修改)* * * * * /www/server/php/73/bin/php /www/wwwroot/exchange/server/artisan schedule:run >> /dev/null 2>&1
这行命令是起 每分钟调度一次 php artisan schedule:run 命令 但使用的是绝对路径
常见问题
- 安装完成访问网址提示权限问题。 chown -R www:www ./ 将文件夹权限设置给www用户即可
- 期权订单无法交割。 打开redis的过期键监听功能 notify-keyspace-events "Ex"