最終實(shí)現(xiàn): 搭建一個(gè)本地Crash收集系統(tǒng)
準(zhǔn)備工作:
服務(wù)器端使用開源項(xiàng)目QuincyKit,我們先clone或下載下來鹃觉;
由于QuincyKit的服務(wù)器端是PHP寫的袜爪,所以我還需要部署PHP,這里我使用的是MAMP PRO,按照里面方法下載安裝即可雅任。
部署QuincyKit service 到 服務(wù)器
下面是QuincyKit的目錄結(jié)構(gòu)
- 將QuincyKit中的sever文件夾拷貝到
/Applications/MAMP/htdocs
,這個(gè)目錄是MAMP默認(rèn)的服務(wù)器文件目錄咨跌,當(dāng)然這個(gè)目錄你可以在MAMP的hosts下自定義
- 將QuincyKit中的sever文件夾拷貝到
- 編輯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.sample
為config.php
- 訪問http://localhost:8888時(shí)出現(xiàn)403信息:
You don't have permission to access / on this server.
解決方法:在MAMP下進(jìn)入hosts,選擇Extended下勾選Indexes即可锌半,當(dāng)然你在htdocs目錄下創(chuàng)建一個(gè)index.php也可以解決
Snip20171128_3.png
- 訪問http://localhost:8888時(shí)出現(xiàn)403信息:
4.進(jìn)入phpMyAdmin禽车,點(diǎn)擊 MAMP上的WebStart按鈕會(huì)打開phpMyAdmin,當(dāng)點(diǎn)擊localhosts:8889時(shí)彈出:
Error in Processing Request Error code: 404 Error text: Not Found
解決方法: 參數(shù)stackoverflow中的方案:
進(jìn)入/Library/Application Support/appsolute/MAMP PRO/phpMyAdmin/
目錄刊殉,打開config.inc.php
殉摔,找到:
$cfg['DefaultTabServer'] = 'main.php';
將其修改為:
$cfg['DefaultTabServer'] = 'index.php';
或者將其注釋掉:
#$cfg['DefaultTabServer'] = 'main.php';
不過我最終選擇了升級(jí)MAMP,使用4.1版本解決-
5.測(cè)試是否配置成功:
在瀏覽器執(zhí)行http://localhost/test_setup.php
如果全部為passed
則說明部署成功记焊,否則根據(jù)哪項(xiàng)不是passed
查找原因;
這里最初我的Database access:
并沒有顯示passed逸月,查看日志得知原因:php連接數(shù)據(jù)庫(kù)失敗,日志PHP Fatal error: Uncaught Error: Call to undefined function mysql_connect() in /Applications/MAMP/htdocs/server/admin/test_setup.php:
遍膜;
原因是我的php是7版本的碗硬,而php7不支持mysql函數(shù),不過可以替換為mysqli的相關(guān)函數(shù)瓢颅;再次測(cè)試恩尾,全部passed
屏幕快照 2017-11-29 上午12.07.51.png 對(duì)QuincyKit的server代碼修改:
mysqli_select_db() 函數(shù)用于更改連接的默認(rèn)數(shù)據(jù)庫(kù)。
如果是php7, 請(qǐng)按照下面修改
mysql_select_db() 修改為mysqli_select_db() mysql_select_db()只有一個(gè)參數(shù)挽懦,是數(shù)據(jù)庫(kù)的名稱翰意,mysqli_select_db()有兩個(gè)參數(shù):
<?php
// 假定數(shù)據(jù)庫(kù)用戶名:root,密碼:123456,數(shù)據(jù)庫(kù):RUNOOB
$con=mysqli_connect("localhost","root","123456","RUNOOB");
if (mysqli_connect_errno($con))
{
echo "連接 MySQL 失敗: " . mysqli_connect_error();
}
// ...查詢 "RUNOOB" 數(shù)據(jù)庫(kù)的一些 PHP 代碼...
// 修改數(shù)據(jù)庫(kù)為 "test"
mysqli_select_db($con,"test");
// ...查詢 "test" 數(shù)據(jù)庫(kù)的一些 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 數(shù)據(jù)庫(kù)文件的本地路徑:
/Library/Application Support/appsolute/MAMP PRO/db/mysql/
MAMP 下連接數(shù)據(jù)庫(kù)日志問題:
`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這個(gè)插件是MySQL5.6內(nèi)置的虎囚,支持更為強(qiáng)大的用戶密碼加密方式。
- 檢查是否安裝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的權(quán)限
$ 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狀態(tài),如果不為空窒朋,則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搀罢,相關(guān)的提示已經(jīng)消失
Mac 下ll命令 command not found
打開終端
cd ~
vim .bash_profile
加入:
alias ll='ls -alF' alias la='ls -A' alias l='ls -CF'
保存后,執(zhí)行
source .bash_profile
編輯MAMP4.1下my.cnf文件:
打開MAMP PRO侥猩,點(diǎn)擊主界面左側(cè)LANGUAGES中PHP榔至,右側(cè)Extensions分類中點(diǎn)擊Manually enable other extensions右側(cè)按鈕(或者打開菜單欄File->Edit Template->MySQL->(選擇版本)),這時(shí)打開的文件就是my.cnfmysql自動(dòng)停止 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