美文网首页
iOS QuincyKit service 配置

iOS QuincyKit service 配置

作者: 字节码 | 来源:发表于2017-11-29 00:08 被阅读137次

最终实现: 搭建一个本地Crash收集系统

准备工作:

服务器端使用开源项目QuincyKit,我们先clone或下载下来;
由于QuincyKit的服务器端是PHP写的,所以我还需要部署PHP,这里我使用的是MAMP PRO,按照里面方法下载安装即可。

部署QuincyKit service 到 服务器

下面是QuincyKit的目录结构


Snip20171128_1.png
    1. 将QuincyKit中的sever文件夹拷贝到/Applications/MAMP/htdocs,这个目录是MAMP默认的服务器文件目录,当然这个目录你可以在MAMP的hosts下自定义
    1. 编辑server目录下的config.php.sample文件,
$server = 'localhost:8889';                     // database server hostname
$loginsql = 'root';                             // username to access the database
$passsql = 'root';                              // password for the above username
$base = 'CrashDataBase';                        // database name which contains the below listed tables

重命名config.php.sampleconfig.php

    1. 访问http://localhost:8888时出现403信息:You don't have permission to access / on this server.
      解决方法:在MAMP下进入hosts,选择Extended下勾选Indexes即可,当然你在htdocs目录下创建一个index.php也可以解决
      Snip20171128_3.png
  • 4.进入phpMyAdmin,点击 MAMP上的WebStart按钮会打开phpMyAdmin,当点击localhosts:8889时弹出:Error in Processing Request Error code: 404 Error text: Not Found
    解决方法: 参数stackoverflow中的方案:
    进入/Library/Application Support/appsolute/MAMP PRO/phpMyAdmin/目录,打开config.inc.php,找到:
    $cfg['DefaultTabServer'] = 'main.php';
    将其修改为:
    $cfg['DefaultTabServer'] = 'index.php';
    或者将其注释掉:
    #$cfg['DefaultTabServer'] = 'main.php';
    不过我最终选择了升级MAMP,使用4.1版本解决

  • 5.测试是否配置成功:
    在浏览器执行http://localhost/test_setup.php如果全部为passed则说明部署成功,否则根据哪项不是passed查找原因;
    这里最初我的Database access:并没有显示passed,查看日志得知原因:php连接数据库失败,日志PHP Fatal error: Uncaught Error: Call to undefined function mysql_connect() in /Applications/MAMP/htdocs/server/admin/test_setup.php:
    原因是我的php是7版本的,而php7不支持mysql函数,不过可以替换为mysqli的相关函数;再次测试,全部passed

    屏幕快照 2017-11-29 上午12.07.51.png
  • 对QuincyKit的server代码修改:

mysqli_select_db() 函数用于更改连接的默认数据库。
如果是php7, 请按照下面修改

mysql_select_db() 修改为mysqli_select_db() mysql_select_db()只有一个参数,是数据库的名称,mysqli_select_db()有两个参数:

<?php 
// 假定数据库用户名:root,密码:123456,数据库:RUNOOB 
$con=mysqli_connect("localhost","root","123456","RUNOOB"); 
if (mysqli_connect_errno($con)) 
{ 
    echo "连接 MySQL 失败: " . mysqli_connect_error(); 
} 
 
// ...查询 "RUNOOB" 数据库的一些 PHP 代码...
 
// 修改数据库为 "test"
mysqli_select_db($con,"test");
 
// ...查询 "test" 数据库的一些 PHP 代码...
 
mysqli_close($con);
?>
  • Waring: PHP Warning: mysqli_query() expects at least 2 parameters, 1 given in /Applications/MAMP/htdocs/server/admin/app_versions.php on line 115
    解决方法:修改mysqli_query()

  • MAMP PRO 数据库文件的本地路径:
    /Library/Application Support/appsolute/MAMP PRO/db/mysql/

  • MAMP 下连接数据库日志问题:
    `RSA private key file not found: /Library/Application Support/appsolute/MAMP PRO/db/mysql56//private_key.pem. Some authentication plugins will not work.
    RSA public key file not found: /Library/Application Support/appsolute/MAMP PRO/db/mysql56//public_key.pem. Some authentication plugins will not work.
    解决方法:RSA private key file not found的问题,sha256_password这个插件是MySQL5.6内置的,支持更为强大的用户密码加密方式。

  1. 检查是否安装openssl
    $rpm -qa openssl
    openssl-1.0.0-20.el6_2.5.x86_64

2.利用openssl生成公有和私有key
$ openssl genrsa -out mykey.pem 1024
Generating RSA private key, 1024 bit long modulus
..........++++++
.++++++
e is 65537 (0x10001)

$ openssl rsa -in mykey.pem -pubout -out mykey.pub writing RSA key
$ ll mykey*
-rw-r--r-- 1 db mysql 887 2014-10-26 12:59:05 mykey.pem
-rw-r--r-- 1 db mysql 272 2014-10-26 12:59:12 mykey.pub
3.修改key的权限
$ chmod 400 mykey.pem
$ chmod 444 mykey.pub

$ ll mykey*
-r-------- 1 db mysql 887 2014-10-26 12:59:05 mykey.pem
-r--r--r-- 1 db mysql 272 2014-10-26 12:59:12 mykey.pub

4.把公私有key的路径加入到my.cnf中
sha256_password_private_key_path=mykey.pem
sha256_password_public_key_path=mykey.pub
如果key放在datadir目录下,直接写key名即可。否则要指定key的全路径。

5.重启mysql,SHOW STATUS查看Rsa_public_key状态,如果不为空,则OK.
mysql> SHOW STATUS LIKE 'Rsa_public_key'\G
*************************** 1. row ***************************
Variable_name: Rsa_public_key
Value: -----BEGIN PUBLIC KEY-----
MIGfMA0ACSqGSIb2DQEBAQUAA4GNADCBiQKBgQDEnZaBWzo/4Ygm435LFKT8HBoX
bPkXATx9eJ4TWDtklLKidoWYj182fXdIpIA1Jt0CNm1MdLKwdcxuEOvSq/ortfmr
Y9doNlcpiLWUmDRD9LBH0AAJR1Tk7L8XLWEuq/nm3eiEnCUZE9+yF1gGxeDJQ2kG
oVHJhFxk0TST0R1nAQDDAQAB
-----END PUBLIC KEY-----
1 row in set (0.01 sec)
6.检查重启后的error log,相关的提示已经消失

  • Mac 下ll命令 command not found
    打开终端
    cd ~
    vim .bash_profile
    加入:
    alias ll='ls -alF' alias la='ls -A' alias l='ls -CF'
    保存后,执行
    source .bash_profile

  • 编辑MAMP4.1下my.cnf文件:
    打开MAMP PRO,点击主界面左侧LANGUAGES中PHP,右侧Extensions分类中点击Manually enable other extensions右侧按钮(或者打开菜单栏File->Edit Template->MySQL->(选择版本)),这时打开的文件就是my.cnf

  • mysql自动停止 Plugin 'FEDERATED' is disabled

2017-11-29 23:46:17 7272 [Note] Plugin 'FEDERATED' is disabled.
2017-11-29 23:46:17 7272 [Note] InnoDB: Using atomics to ref count buffer pool pages
2017-11-29 23:46:17 7272 [Note] InnoDB: The InnoDB memory heap is disabled
2017-11-29 23:46:17 7272 [Note] InnoDB: Mutexes and rw_locks use GCC atomic builtins
2017-11-29 23:46:17 7272 [Note] InnoDB: Memory barrier is not used
2017-11-29 23:46:17 7272 [Note] InnoDB: Compressed tables use zlib 1.2.8
2017-11-29 23:46:17 7272 [Note] InnoDB: Using CPU crc32 instructions
2017-11-29 23:46:17 7272 [Note] InnoDB: Initializing buffer pool, size = 128.0M
2017-11-29 23:46:17 7272 [Note] InnoDB: Completed initialization of buffer pool
2017-11-29 23:46:17 7272 [Note] InnoDB: Highest supported file format is Barracuda.
2017-11-29 23:46:17 7272 [Note] InnoDB: 128 rollback segment(s) are active.
2017-11-29 23:46:17 7272 [Note] InnoDB: Waiting for purge to start
2017-11-29 23:46:18 7272 [Note] InnoDB: 5.6.35 started; log sequence number 1677335
2017-11-29 23:46:18 7272 [Note] RSA private key file not found: /Library/Application Support/appsolute/MAMP PRO/db/mysql56//private_key.pem. Some authentication plugins will not work.
2017-11-29 23:46:18 7272 [Note] RSA public key file not found: /Library/Application Support/appsolute/MAMP PRO/db/mysql56//public_key.pem. Some authentication plugins will not work.
2017-11-29 23:46:18 7272 [Note] Server hostname (bind-address): '127.0.0.1'; port: 8889
2017-11-29 23:46:18 7272 [Note]   - '127.0.0.1' resolves to '127.0.0.1';
2017-11-29 23:46:18 7272 [Note] Server socket created on IP: '127.0.0.1'.
2017-11-29 23:46:18 7272 [Note] Event Scheduler: Loaded 0 events
2017-11-29 23:46:18 7272 [Note] /Applications/MAMP/Library/bin/mysqld: ready for connections.
Version: '5.6.35'  socket: '/Applications/MAMP/tmp/mysql/mysql.sock'  port: 8889  MySQL Community Server (GPL)
2017-11-29 23:48:52 7272 [Note] /Applications/MAMP/Library/bin/mysqld: Normal shutdown

解决方法:
打开my.cnf
[mysqld]下面添加

federated
skip-external-locking
skip-name-resolve

相关文章

网友评论

      本文标题:iOS QuincyKit service 配置

      本文链接:https://www.haomeiwen.com/subject/rnoebxtx.html