內(nèi)容概要
- 利用ssh遠(yuǎn)程連接服務(wù)器
- 利用lnmp的vhost功能建立網(wǎng)站
- Unity結(jié)合PHP操作數(shù)據(jù)庫
1 利用SSH連接centos(更科學(xué))
實(shí)際生產(chǎn)環(huán)境下,我們不太可能直接接觸服務(wù)器進(jìn)行操作,都是需要遠(yuǎn)程連接服務(wù)器。以下介紹一種通過ssh連接服務(wù)器的方式。
- 在宿主機(jī)打開命令行窗口,如
cmd、PowerShell、terminal等。 - 輸入并執(zhí)行命令
ssh root@192.168.56.101,出現(xiàn)提示輸入yes即可。 - 然后就跟直接操作虛擬機(jī)一樣了。
問題小結(jié)
- 如果系統(tǒng)提示
ssh不是一個命令,則可以通過安裝git來間接安裝ssh,或搜索相關(guān)資料先安裝好ssh。- 利用ssh操作虛擬機(jī)時(shí),只需要開啟虛擬機(jī),不用登陸。登陸僅發(fā)生在宿主機(jī)命令窗口這里。
2 創(chuàng)建web服務(wù)器(網(wǎng)站)
之前,我們利用lnmp默認(rèn)的web服務(wù)器簡單試用了下php?,F(xiàn)在我們要創(chuàng)建一個新的web服務(wù)器專門用于后面的學(xué)習(xí)。
- 輸入命令
lnmp vhost add,隨后步驟如下:
1 設(shè)定新網(wǎng)站的域名。隨意,但最好是簡單好記的。網(wǎng)站不上線的話用不著。
Please enter domain(example: www.lnmp.org): lab.traceq.com
Your domain: lab.traceq.com
2 設(shè)置網(wǎng)站更多域名。留空即可。
Enter more domain name(example: lnmp.org *.lnmp.org):
Please enter the directory for the domain: lab.traceq.com
3 設(shè)置存放網(wǎng)站內(nèi)容的目錄??梢宰约褐付ǎ疫@里選擇留空,則會使用自動生成的默認(rèn)目錄。
Default directory: /home/wwwroot/lab.traceq.com:
Virtual Host Directory: /home/wwwroot/lab.traceq.com
4 是否啟用URL重寫規(guī)則,不需要。
Allow Rewrite rule? (y/n) n
You choose rewrite: none
5 是否啟用PHP路徑信息,需要。
Enable PHP Pathinfo? (y/n) y
Enable pathinfo.
6 是否啟用訪問日志,不需要。
Allow access log? (y/n) n
Disable access log.
7 是否為數(shù)據(jù)庫名和MySQL用戶名創(chuàng)建相同名稱,是,這樣比較簡單明了。
Create database and MySQL user with same name (y/n) y
8 輸入之前l(fā)nmp安裝數(shù)據(jù)庫時(shí)創(chuàng)建的管理員密碼,應(yīng)該是111111,輸入時(shí)這里不會顯示,別輸入錯了。
Enter current root password of Database (Password will not shown):
OK, MySQL root password correct.
9 輸入新網(wǎng)站對應(yīng)的數(shù)據(jù)庫的名稱,簡單起見,我用lab,跟之前域名lab.traceq.com呼應(yīng)。
Enter database name: lab
這樣數(shù)據(jù)庫和該數(shù)據(jù)庫的用戶名就都是lab了。
Your will create a database and MySQL user with same name: lab
10 設(shè)置該數(shù)據(jù)庫用戶的密碼,111111,簡單。
Please enter password for mysql user lab: 111111
Your password: 111111
11 是否創(chuàng)建ftp,當(dāng)然,否則怎么上傳代碼。
Create ftp account (y/n) y
12 給個ftp用戶名,還是lab,呼應(yīng),好記。
Enter ftp account name: lab
13 給這個ftp用戶設(shè)置密碼,111111。
Enter password for ftp account lab: 111111
14 需要啟用https嗎,不需要。
Add SSL Certificate (y/n) n
- 整個過程再完整列一下:
Please enter domain(example: www.lnmp.org): lab.traceq.com
Your domain: lab.traceq.com
Enter more domain name(example: lnmp.org *.lnmp.org):
Please enter the directory for the domain: lab.traceq.com
Default directory: /home/wwwroot/lab.traceq.com:
Virtual Host Directory: /home/wwwroot/lab.traceq.com
Allow Rewrite rule? (y/n) n
You choose rewrite: none
Enable PHP Pathinfo? (y/n) y
Enable pathinfo.
Allow access log? (y/n) n
Disable access log.
Create database and MySQL user with same name (y/n) y
Enter current root password of Database (Password will not shown):
OK, MySQL root password correct.
Enter database name: lab
Your will create a database and MySQL user with same name: lab
Please enter password for mysql user lab: 111111
Your password: 111111
Create ftp account (y/n) y
Enter ftp account name: lab
Enter password for ftp account lab: 111111
Add SSL Certificate (y/n) n
Press any key to start create virtul host...
- 成功后會顯示簡報(bào),怕忘記關(guān)鍵信息,最好把簡報(bào)截圖或保存下:
================================================
Virtualhost infomation:
Your domain: lab.traceq.com
Home Directory: /home/wwwroot/lab.traceq.com
Rewrite: none
Enable log: no
Database username: lab
Database userpassword: 111111
Database Name: lab
FTP account name: lab
FTP account password: 111111
================================================
- 檢查創(chuàng)建結(jié)果。輸入
ls /home/wwwroot/lab.traceq.com/,若系統(tǒng)提示無此文件夾,那就完蛋了。
3 測試新網(wǎng)站及相關(guān)功能
3.1 訪問新網(wǎng)站
由于centos上已經(jīng)運(yùn)行l(wèi)nmp的默認(rèn)網(wǎng)站,所以我們需要給新創(chuàng)建的網(wǎng)站一個不同的端口,才能訪問這個網(wǎng)站。lnmp基于nginx管理同一臺機(jī)器上的多個網(wǎng)站,這些網(wǎng)站通過vhost腳本來配置。方法如下:
1 輸入vi /usr/local/nginx/conf/vhost/lab.traceq.com.conf來配置新創(chuàng)建的網(wǎng)站。
2 只需要將開頭的listen 80;中的80改成其它數(shù)字,比如27000。記得保存。
3 重啟lnmp。lnmp restart
4 宿主機(jī)上用瀏覽器訪問192.168.56.101:27000,出現(xiàn)403 Forbidden頁面,就對了。
3.2 檢查ftp
- 宿主機(jī)上用ftp工具訪問新網(wǎng)站的ftp,看是否報(bào)錯。注意ftp端口號不用管,仍然是默認(rèn)的21,不用改成27000。別忘了,用戶名是
lab。 - 用vscode也試試看能否連接新網(wǎng)站的ftp。連接成功的話,傳個php文件上去,然后用瀏覽器訪問試試。
3.3 檢查數(shù)據(jù)庫
- 宿主機(jī)上用瀏覽器訪問
10.187.56.101 - 然后點(diǎn)
phpMyAdmin鏈接 - 然后輸入用戶名
lab,密碼111111 - 順利進(jìn)入并在左側(cè)看到
lab數(shù)據(jù)庫就ok了。
4 使用Unity獲取PHP提供的數(shù)據(jù)
4.1 準(zhǔn)備PHP代碼
- 創(chuàng)建test.php,內(nèi)如如下:
<?php
$ip = $_SERVER['REMOTE_ADDR'];
echo 'ip: ' . $ip;
?>
注意,這個文件應(yīng)該位于宿主機(jī)上對應(yīng)于網(wǎng)站開發(fā)的那個目錄下。
- 正常情況下,這個文件會被開發(fā)環(huán)境中的sftp自動上傳到虛擬機(jī)上的網(wǎng)站目錄中。
- 宿主機(jī)瀏覽器訪問
192.168.56.101:27000/test.php,應(yīng)獲得如下信息:
ip: 192.168.56.1
4.2 Unity請求&獲取數(shù)據(jù)
- 新建或打開現(xiàn)有的Unity項(xiàng)目。
- 創(chuàng)建腳本
WebRequestLab.cs,輸入如下內(nèi)容:
using UnityEngine;
using System.Collections;
using UnityEngine.Networking;
public class WebRequestLab : MonoBehaviour {
public string url = "http://192.168.56.101:27000/test.php";
void Start() {
StartCoroutine(GetText());
}
IEnumerator GetText() {
UnityWebRequest wr = UnityWebRequest.Get(url);
yield return wr.SendWebRequest();
if(wr.isNetworkError || wr.isHttpError) {
Debug.Log(wr.error);
}
else {
// Show results as text
Debug.Log(wr.downloadHandler.text);
}
}
}
- 將
WebRequestLab掛載到場景中運(yùn)行,會在控制臺看到如下信息:
ip: 192.168.56.1
UnityEngine.Debug:Log(Object)
4.3 使用PHP返回Json格式數(shù)據(jù)
- 將test.php內(nèi)容修改如下:
<?php
$raw_ret['ip'] = $_SERVER['REMOTE_ADDR'];
$raw_ret['player']['name'] = 'my player name';
$raw_ret['player']['score'] = '1340';
$json_ret = json_encode($raw_ret);
echo $json_ret;
?>
宿主機(jī)訪問test.php,看到如下內(nèi)容:
{"ip":"192.168.56.1","player":{"name":"my player name","score":"1340"}}以上內(nèi)容并不適合閱讀,可以安裝
Postman,更好的觀察返回?cái)?shù)據(jù)。下載&安裝Postman
-
啟動Postman,點(diǎn)?,
?
創(chuàng)建一個GET請求,輸入要請求的網(wǎng)址(比如http://192.168.56.101:27000/test.php),然后發(fā)送。
發(fā)送GET請求 -
獲取數(shù)據(jù)后,選擇JSON模式來觀察數(shù)據(jù)。
以JSON格式觀察數(shù)據(jù)
4.4 使用Unity接受Json數(shù)據(jù)
在Unity中有很多操作Json的方式,這里選用Unity自帶的JsonUtility,相關(guān)資料可以查閱官方幫助。
- 修改
WebRequestLab.cs為如下內(nèi)容:
using UnityEngine;
using System.Collections;
using UnityEngine.Networking;
using System;
[Serializable]
public class PlayerInfo{
public string name;
public int score;
}
[Serializable]
public class RetInfo{
public string ip;
public PlayerInfo player;
}
public class WebRequestLab : MonoBehaviour {
public string url = "http://192.168.56.101:27000/test.php";
void Start() {
StartCoroutine(GetText());
}
IEnumerator GetText() {
UnityWebRequest wr = UnityWebRequest.Get(url);
yield return wr.SendWebRequest();
if(wr.isNetworkError || wr.isHttpError) {
Debug.Log(wr.error);
}
else {
// Show results as text
string ret = wr.downloadHandler.text;
Debug.Log(ret);
//
RetInfo retInfo = JsonUtility.FromJson<RetInfo>(ret);
Debug.Log(retInfo);
}
}
}
- 在最后一行
Debug.Log(retInfo);處添加斷點(diǎn) - 啟動debug
- 運(yùn)行unity場景
-
查看斷點(diǎn)信息
查看unity獲取的json數(shù)據(jù)
4.5 PHP訪問數(shù)據(jù)庫數(shù)據(jù)
4.5.1 創(chuàng)建數(shù)據(jù)表及插入數(shù)據(jù)
宿主訪問
192.168.56.101,然后進(jìn)入phpMyAdmin,登錄成功后就進(jìn)入數(shù)據(jù)庫管理頁面-
創(chuàng)建
t_user_info表,字段如下,別忘了點(diǎn)保存:
創(chuàng)建t_user_info表 -
插入數(shù)據(jù)
插入數(shù)據(jù)局 瀏覽數(shù)據(jù),就可以看到剛才插入的數(shù)據(jù)了。
4.5.2 通過php代碼訪問數(shù)據(jù)庫
- 將
test.php內(nèi)容修改如下:
<?php
$db = new mysqli('localhost', 'lab', '111111', 'lab');
$sql = 'SELECT * FROM `t_user_info`';
$result = $db->query($sql);
$info = $result->fetch_assoc();
$raw_ret['ip'] = $_SERVER['REMOTE_ADDR'];
$raw_ret['player']['name'] = $info['name'];
$raw_ret['player']['score'] = $info['score'];
$json_ret = json_encode($raw_ret);
echo $json_ret;
$db->close();
?>
- 通過Postman再次訪問test.php,查看數(shù)據(jù),應(yīng)該跟以前沒變化,但注意,
name和score數(shù)據(jù)已經(jīng)是來自數(shù)據(jù)庫中了。 - 通過Unity查看數(shù)據(jù),同樣沒變化。
至此,用unity連接web服務(wù)獲取數(shù)據(jù)的脈絡(luò)已經(jīng)打通了,以后就是根據(jù)需要,在這些脈絡(luò)上開發(fā)詳細(xì)的功能了。
附錄中會給出一些建議的閱讀材料。
附錄
附錄A 關(guān)于Unity的web數(shù)據(jù)獲取
- 在Unity自帶文檔(官方文檔)的Manual中搜索
WebRequest
在unity官方幫助中搜索WebRequest相關(guān)信息
附錄B 關(guān)于PHP訪問數(shù)據(jù)庫
- 有許多專用的數(shù)據(jù)庫操作php代碼,大家可以自己搜索來試一試。
- php官網(wǎng),這里有關(guān)于php的一切。https://php.net
廢棄內(nèi)容
問題小結(jié)(以下內(nèi)容廢除,但可作為修正意外的過程演練一下)
- 在后面的過程中,xdebug調(diào)試功能有可能失效。懷疑是
/home/wwwroot/lab.traceq.com/這種帶有.的目錄名xdebug不兼容。可以通過下面方式修改:
1 修改文件夾名稱為不帶點(diǎn)的,比如
mv /home/wwwroot/lab.traceq.com /home/wwwroot/lab
2 目錄改了,那么vhost配置中(vi /usr/local/nginx/conf/vhost/lab.tryceq.com.conf)相應(yīng)的
root /home/wwwroot/lab.traceq.com;
也得做相應(yīng)修改為
root /home/wwwroot/lab;。
3 ftp也得做相應(yīng)修改,用lnmp ftp del把之前創(chuàng)建的lab賬號刪掉,然后使用lnmp ftp add重新創(chuàng)建lab賬號,制定目錄時(shí)要指定/home/wwwroot/lab。
4 vscode這邊,xdebug的配置中(即launch.json),要把pathMappings中對應(yīng)的
/home/wwwroot/lab.traceq.com/
修改為
/home/wwwroot/lab/






