如果是接入API,而非安装,请看 API接入文档
requirements: Redis >= 3.x Mysql/MariaDB PHP 7(如果不是,修改 AesSecurity/不使用加密方案可以不改 )
clone完代码建议直接全部文件777权限 chmod -R 777 .
, 同时跑 git config core.filemode false
忽略Git的权限变更
Redis:
yum install -y redis
nohup redis-server &
Nginx:
yum install -y nginx
systemctl start nginx
systemctl enable nginx
Mysql(mariadb):
yum install mariadb-server mariadb -y
初始化密码 mysql_secure_installation
systemctl start mariadb
systemctl enable mariadb
PHP7:
yum -y install epel-release
wget http://rpms.remirepo.net/enterprise/remi-release-7.rpm
rpm -Uvh remi-release-7.rpm
yum install yum-utils -y
yum-config-manager --enable remi-php71
yum --enablerepo=remi,remi-php71 install -y php-fpm php-common
yum --enablerepo=remi,remi-php71 install -y php-opcache php-pecl-apcu php-cli php-pear php-pdo php-mysqlnd php-pgsql php-pecl-mongodb php-pecl-redis php-pecl-memcache php-pecl-memcached php-gd php-mbstring php-mcrypt php-xml php-zip
systemctl start php-fpm
systemctl enable php-fpm
如遇问题可参考: https://www.hostinger.com/tutorials/how-to-install-lemp-centos7
新建数据库用户,避免ROOT账号连接
mysql -u root -p
CREATE USER 'gdufeuser'@'localhost' IDENTIFIED BY '密码';
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE ON *.* TO 'gdufeuser'@'localhost';
GRANT SELECT, INSERT, UPDATE, REFERENCES, DELETE, CREATE ON `gdufeapp`.* TO 'gdufeuser'@'localhost';
flush privileges;
然后更改config/db.php配置
如果想远程root连接数据库
mysql -u root -p 密码
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '你的密码' WITH GRANT OPTION;
flush privileges;
在 config
下新建个 api_center.php
<?php
return $apiCenter = [
'AppIdSecretMap' => [
'我是KEY' => '我是纯英文私钥,建议6位'
]
];
上面那个文件本来是放 安卓APP 1.6 参数加密使用的,后来放弃了,所以即使不要也OK
放弃原因:原计划根据加密后的参数进行解码, 因遇到 签名不一致 和 强要求PHP 7.0 、 DieReturn 的data必须匹配不同接口(数组还是对象), 所以没发1.6.0版,白开发了
建议直接 PHP7
如果你想用PHP5,最少得是 5.5.9 而且需要修改 controllers/AesSecurity
让他与现有的PHP7版反正一致
以下为PHP5升级7教程:
Centos6: https://www.zerostopbits.com/how-to-install-upgrade-php-5-3-to-php-5-5-on-centos-6-7/
Centos7: https://www.cadch.com/modules/news/article.php?storyid=227
EPEL和remi要装对应版本,Centos7就装7的,如果报了 Requires: httpd-mmn = 20051115
类似错误说明是你Centos7装了remi6,你需要 remove
掉6的再装7的。
新建数据库,名字叫gdufeapp
,导入gdufeapp.sql,修改 config/db.php
的数据库密码等配置,在不用客户端的情况下命令如下
mysql -uroot -p
MySQL [(none)]> create database gdufeapp;
MySQL [(none)]> use gdufeapp;
MySQL [gdufeapp]> source 绝对路径/gdufeapp.sql;
MySQL [gdufeapp]> exit;
代码需要一堆第三方库,在vendor
目录里,
-
方案一:
unzip vendor.zip
解压放到项目根目录,这样就不用安装composer了 -
方案二:安装
composer
,然后跑命令在线下载,这种方案少了/vender/bower/目录,不过那个是错误页,少了没关系curl -sS https://getcomposer.org/installer | php mv composer.phar /usr/local/bin/composer composer config -g repo.packagist composer https://packagist.phpcomposer.com # 设置镜像加速用 yum -y install php-mbstring php-xml # 防依赖库报错用 composer install # 让composer去下载依赖库
-
复制并编辑nginx样例配置替换
/etc/nginx/nginx.conf
里的Server部分 -
由于样例是Nginx通过sock文件跟PHP交互,所以
vi /etc/php-fpm.d/www.conf
把listen = 127.0.0.1:9000
改为listen = /var/run/php-fpm/php-fpm.sock
-
然后重启Nginx和php-fpm
systemctl restart php-fpm
systemctl restart nginx
,尝试访问你的iP:82端口,如果出现Json字符串说明成功 如果你全程是root账号操作你可能需要 尝试chmod o+w /var/run/php-fpm/php-fpm.sock
启动失败请看日志:/var/log/nginx/error.log
/usr/share/nginx/MovingGdufe-Server/runtime/logs
php yii serve app.wintercoder.com:82
就行。但这个是单线程的,只能测试用,不要线上用,否则更新APP的时候可能卡全部用户。
直接监听82端口,目录指到项目根目录的/web目录
就行,如果代码放在默认的/var/www/html/
目录下,直接如下操作就行。
vi /etc/httpd/conf/httpd.conf
Listen 82
NameVirtualHost *:82
<VirtualHost *:82>
ServerName 这里是服务器IP/域名
DocumentRoot "/var/www/html/web"
</VirtualHost>
完工。如果不在/var/www/html/
里,你跟着改路径就行。
如果同时跑Web官网和接口,添加如下:
NameVirtualHost *:82
<VirtualHost *:82>
ServerName app.wintercoder.com
DocumentRoot "服务端代码根目录地址/web"
</VirtualHost>
NameVirtualHost *:82
<VirtualHost *:82>
ServerName api.wintercoder.com
DocumentRoot "服务端代码根目录地址/web"
</VirtualHost>
NameVirtualHost *:8080
<VirtualHost *:8080>
ServerName www.wintercoder.com
DocumentRoot "官网代码根目录地址"
</VirtualHost>
然后DocumentRoot "这目录下包含服务端代码目录和官网目录"
启动 service httpd start
记得关闭iptables
或者开放82,8080
端口
- 能浏览器打开(GET)
http://你的ip:82/index.php?r=work/check-app-update
且返回json则说明环境通了 - 访问
http://你的ip:82/index.php?r=work/feedback&sno=13251102210&content=test
能通说明数据库OK - 能查成绩且第二次打开会快很多则说明redis没问题
http://你的ip:82/index.php?r=jw/get-grade&sno=你的学号&pwd=你的密码
Api文档是用Apidoc生成的,需要NodeJs环境,以下是按Win来说明的,Linux和Mac操作同理
-
安装NodeJs: http://www.runoob.com/nodejs/nodejs-install-setup.html 装完后安装apidoc: sudo npm install apidoc -g
-
解决国内npm命令安装依赖速度慢的问题:
npm config set registry http://registry.npm.taobao.org
-
修改完
controller/
的注释就在项目根目录就可以生成到apidoc
目录下apidoc -i controllers/ -o apidoc/
MISCONF Redis is configured to save RDB snapshots, but is currently not able to persist on disk.
解决方案: 在redis-cli里运行 127.0.0.1:6379> config set stop-writes-on-bgsave-error no
-
HTTPD显示PHP文件为源码或者自动下载
vi /etc/httpd/conf/httpd.conf
AddHandler php5-script PHP AddType application/x-httpd-php .php AddType application/x-httpd-php-source .phps <IfModule prefork.c> LoadModule php5_module modules/libphp5.so </IfModule> <IfModule !prefork.c> LoadModule php5_module modules/libphp5-zts.so </IfModule>
如果加载不到这几个.so的报错就可能PHP你不是通过yum安装的
-
该系统在Win上也可安装,最开始是在Win上测试的,不过安装软件就需要自己百度去官网下载了。
-
修改Mysql的Root密码,连上mysql再
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('新密码'); FLUSH PRIVILEGES;