contributed by<任品謙
、李承儒
>
以下在需要代換的部份會用 [代換部份] 來表示,記得整個代換掉不要留下 [ ] <-方括號的部份
建立虛擬機可以參考這篇【教學】Google Cloud Platform 申請試用,並建立免費專案!,裡面有很詳細步驟說明,按照步驟就可以建好虛擬機。
所謂的LAMP分別是四個東西的組合
L = linux
A = apache
M = mySQL
P = php
參考這篇【教學】Google Cloud Platform 下,部署VM環境 Ubuntu16.04 + LAMP
,這裡面詳細的介紹如何在Google Cloud Platform下完成LAMP的建置
記得連線時用 http 不要加 s,沒有 ssl 驗證會連不上
接著我們要安裝phpmyadmin,安裝指令
sudo apt-get install phpmyadmin
如果phpmyadmin 一開始裝錯地方要自己做連結
在Terminal中輸入
sudo ln -s /usr/share/phpmyadmin /var/www/html/phpmyadmin
就會在你的 /var/www/html/
裡面新增一個跳轉捷徑
然後就可以開啟瀏覽器在網址列打上
http://[Your IP]/phpmyadmin/index.php
測試看看有沒有沒有辦法連上php
現在要讓我們可以用 ftp 來連 server 傳檔案
可以參考【教學】Google Cloud Platform 下,使用 FileZilla 進行 SSH 連線,裡面詳細的教你如何與伺服器建立 ftp 連線
如果看不懂沒關係我幫你列在下面
任品謙
以下指令都是以 root 權限執行!!!
以下指令都是以 root 權限執行!!!
以下指令都是以 root 權限執行!!!
首先要在你的 server 上下載 google sdk
curl https://sdk.cloud.google.com | bash
執行 google sdk
exec -l $SHELL
然後重開 apache
sudo service apache2 restart
初始化 google sdk
gcloud init
接著就會跑出以下訊息
輸入2
之後會出現
接著輸入Y
,就會跑出一串像下面這樣的訊息
把中間那串網址複製出來(選取之後就會自動複製),然後會要你登入你建立這個 Google cloud 用的帳號密碼,登入完會跳出一串授權碼,複製貼回來然後 enter
接著就會要你選擇區域
輸入對應代號,這樣就初始化完畢了,接著要用 ssh 在 root 權限下自己連線自己來自動生成連線用的private 和 public key
gcloud compute ssh root@[lamp-tutorial]
[lamp-tutorial] 請自行代換為你的 instance 名稱
如果不確定自己的 instance 的名稱可以輸入下面的指令,就會列出你的 instance 名稱
gcloud compute instances list
如果順利的完成上述步驟了他就會開始自己連線自己
中間會出現要不要輸入亂數種子之類的問題,可以不用管他直接用預設值就行,看到 WARNING 也是正常的,這樣他才會生出 key 來,看到最下面有
`Welcome to Ubuntu 16.04.4 LTS (GNU/Linux 4.13.0-1019-gcp x86_64)
就是成功自己連線自己了,這個時候輸入
cat ~/.ssh/google_compute_engine
就可以看到連線用的 private key ,把它整個複製下來,格式應該會類似下面這樣
其中 private key 也包含
-----BEGIN RSA PRIVATE KEY-----
這個部分不要忘記了
最後我們另外開一個空白檔案把 priviate Key 貼過去,並且儲存成 rootKey.ppk ,完成後就可以用來連線
首先要去Filezilla中下載並安裝 FileZilla
完成安裝後,打開 FileZilla並點選建立新連線 → 輸入外部IP → 選擇SFTP模式 → Key file
在使用者
欄位輸入 root ,並在 key file
欄位選擇對應的檔案就是剛剛的 rootKey.ppk,如下圖所示
這樣就可以從我們的電腦透過 ftp 連線到 google cloud 了。
首先從下載點匯入建好的 SQL 資料表 news (1).sql
,下載完成後打開
http://[Your IP]/phpmyadmin/index.php
建立一個叫 news
的資料庫,編碼用 utf8_unicode_ci
然後匯入剛剛下載的 news(1).sql
,就會看到直接被建好並含有定位資料的表格,其中定位會用到的表格是 wifilist
從RESTful api server 下載點中,把 api.zip
載下來,下載完成之後解壓縮並用 ftp 連線把它放到 Google cloud 上的
/var/www/html/
然後到
/var/www/html/api/application/config/database.php
修改連線到 mySQL 的對應資料,就可以連線了
如下的password
部份
當完成上述設定後你剛剛丟上 google cloud 的 API server 就建置完成了,這時可以測試看看能不能取得API.php
裡面函式設定的回傳值,其中API.php
的位址在
/var/www/html/api/application/controller/API.php
最後只要在網址列輸入
http://[Your IP]/api/index.php/API/product
可以取得function product_get()
的回傳資料
應該會是 {"status":"success","contain":"null"}
http://[Your IP]/api/index.php/API/wifilist
可以取得function wifilist_get()
的回傳資料
應該會是 {"max_SearchTime":"206"}
[Your IP] 請自己代換成你的 ip
python 在 ubuntu 中有內建了,輸入
python
就會啟動你目前安裝的 python 編程環境,接著輸入
exit()
來離開 python 的編程環境
這次我們要安裝的是 pip ,它是python 的套件管理工具,首先輸入
sudo apt-get install python-pip
接著安裝定位用到的套件
pip install numpy
pip install IPython
pip install pandas
pip install scipy
pip install -U scikit-learn
注意!!!
pip 安裝完東西的時候會有提示要你更新
千萬別更新!!!
千萬別更新!!!
千萬別更新!!!
pip10 目前有 bug 無法修復,如果不小心更新的話之後的指令請改用備份的
python -m pip install IPython
安裝完成後到定位模組下載點下載 python 的定位模組並把載下來的 python.zip 跟定位資料檔都丟進
/home
補充一下
手機那邊收到的 wifi 資料會存到資料庫的 wifilist 表格中,透過
http://[Your IP]/api/index.php/API/wificsv/format/csv
會下載到一個整理好的 csv 檔,再把該 csv 檔放置到test3.py
指定的位置讀取
接著輸入
python /home/test3.py
看看會不會丟出 ERRORrrr 就知道環境是否建置完成
如果你套件沒有安裝完全的話,是不會丟出 ERRORrrr
若是要看能不能正常運行可輸入
看到回應是
{"status": "Yes!", "location": 2, "accuracy": 0.8548387096774194}
就表示可以正常運作。
將裡面的 pythoncall_post 跟 pythoncall_get 部分內容修改如下
$result = shell_exec('python "/home/test3.py" ' . escapeshellarg(json_encode($finalArray)));
pythoncall_get
中的
$data = [1,2,3,4,5,6];
改成
$data = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36];
還有
/home/test3.py
請修改成自己放 test3.py 的位置,修改好後可以輸入以下網址測試
http://[Your IP]/api/index.php/API/pythoncall
[Your IP] 請自己代換成你的 IP
後面的 API 記得要大寫,大小寫是有分的!!!
當看到
{"status":"success","contain":"{\"status\": \"Yes!\", \"location\": 1, \"accuracy\": 0.8225806451612904}\n"}
就代表全部修改完成了!
恭喜你的 API server 可以正常運作了!
請記得把 apk 內呼叫的位置改為對應的 IP 喔~
有問題可以聯繫 BodomMoon@gmail.com 任品謙
教學