19暑期學(xué)習(xí)-Day4

內(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、PowerShellterminal等。
  • 輸入并執(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)該跟以前沒變化,但注意,namescore數(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/
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容