1.项目centos6.5基本环境部署
workerman要求php版本大于5.3
CentOS 6.5的epel及remi源
注:该yum源里面php5.4到php7.1都有,各种扩展齐全。
# rpm -Uvh http://ftp.iij.ad.jp/pub/linux/fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm
# rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
php-cli的安装
yum install--enablerepo=remi--enablerepo=remi-php56 php-bcmath php-cli php-common php-devel php-fpm php-mbstring php-mcrypt php-mysqlnd php-opcache php-pdo php-soap php-phalcon3 php-fpm php-pecl-yaf php-pecl-xhprof php-pecl-swoole php-pecl-seaslog php-pecl-redis
版本引发的时区的问题
linux服务器校对时间方法
CentOS系统安装NTP校时包:
yum install ntpdate
校时命令:
ntpdate cn.pool.ntp.org
如果想每隔一定时间自动校时,只需将上面的命令加入至Cron就行了:
00 12* * * /sbin/ntpdate cn.pool.ntp.org
* cn.pool.ntp.org是ntp网络授时组织的中国授时源
2.redis部署
在linux下有server端以及redis-cli端;
两种启动方式:前台启动/后台启动;
需要把server端以及redis-cli端的启动文件,复制到/usr/local/redis下,还有一个是redis.conf配置文件;
开启远程访问,daement yes;
保护模式关闭;
绑定的域名变为 0.0.0.0;
这样处理之后,开启redis.serve &之后
在win端的redis可可视化管理工具可以远程访问部署在redis端的服务了;
后台启动服务
3.本地svn自动更新部署到生产环境
yum安装的是
yum -yinstall subversion
需要在根目录创建 /svndata
修改配置文件 passwd auth svnserve.conf(具体参考网络教程)
之后重启就好:
svnserve -d -r /svndata/
注意:根据创建的仓库位置启动项目,否则会出现很多奇奇怪怪的东西
假设在本地checkout网址
svn://192.168.247.131
之后在linux上是先到项目下,再检出文件
cd /www/code/
svn co svn://192.168.247.131./
注意:虚拟机重新开启而不是挂机进程的时候,防火墙重新开启了,导致连接不上svn;
need-to-insert-img
服务器自动化更新代码到项目中,已验证
无需svn up,可更新生产环境代码:
每次客户端提交(linux或者win都可以触发hook执行脚本)
4.chat基本的测试demo运行
需要安装php
yum -y install php
安装php-posix
yum -y install php-process
远程启动需要到项目根目录下面
php start.php start
之后可以在浏览器上看到web界面,意思是远程的服务开启了
注意: 如果用到zip解压工具,需要安装 :
yum -y install unzip
基本跑通了一个基础的框架demo
通过这个简单的demo,明白了这个框架的协议跟http协议不同,
这是一个双向通信的服务器,可以主动给客户端推送消息;
可以保持客户端与服务器长时间,多个客户端同时在线;
前端是web界面,可以加入多个用户,多个房间;
数据实时在服务器中显示,暂时没有使用redis的队列功能;
5.Mysql连接及Websocket配置
注:前端就是发送json格式的字符串作为请求:
ws://192.168.247.131:7272
本地数据库相关配置
/* 系统redis缓存 */
define('DATA_CACHE_TYPE','Redis');
define('REDIS_HOST','######');
define('REDIS_PORT',6379);
define('REDIS_AUTH','');
//缓存key前缀
define('DATA_CACHE_PREFIX','tp_');
//缓存默认生存时间
define('DATA_CACHE_TIME',3600);
/* 定义数据库配置文件 */
/*阿里云数据库*/
define('DB_HOST','######');
define('DB_USER','######');
define('DB_PWD','######');
define('DB_NAME','######');
define('DB_PORT',#####);
redis项目数据结构
KW:最外层的键;
Challenger+时间:区别开每一期参与者,两种身份:挑战者身份/淘汰者
List:总队列 排队出队列,处理请求
Room:区别开每一期的房间号
另外:
GROUP_KEY_USER:用于给所用用户发送题目
框架中有一个总的Group(客户端client_id与uid绑定的,隐含组);
加入总队列的时候,满足条件会加入到组中,删除队列中的元素;
围观者只需要给他们发题目,告知前端身份即可?
6.项目部署常见问题:
nginx服务器配置出错;
iptables网路防火墙开启;
linux文件夹权限;
软件服务配置问题;
网络安全组策略,端口问题;
svn代码同步出错或者是未同步代码;
数据库数据不对;