Linux基本命令入門以及在雲服務器上部署ThinkPHP5+MySQL

零:摘(fei)要(hua)

時光荏苒,轉眼間,四個月悄然而逝,我人生中的第一個項目也落下帷幕。而我也從一個什麼也不懂的小白,變成了一個熟練掌握HTML、PHP、微信公衆號開發以及使用Linux服務器部署代碼的大白了。
回顧之前探索的過程,算不上艱辛,也算得上有些難度。回望之前爲了弄明白一個功能而四處爬帖子的歷程,真是感慨萬千,隨着自己一點一滴的進步,查閱資料的能力逐步加強,解決問題的時間也大大縮短。
爲了讓像我一樣剛入門的小白少走彎路,我把自己之前部署ThinkPHP5.1的過程記錄下來,以供參考。

一:Linux簡單命令


連接服務器:

對於剛剛入門的同學來說,當你獲取了一臺Linux服務器時,第一時間想到的,可能是打開Windows的遠程桌面連接,然後興奮的輸入IP地址,之後,提示遠程連接失敗...

注意誒,這是Linux,不是Windows哦。如果不經過設置,Linux是不能直接遠程桌面連接的,另外...Linux一般也不會去用圖形界面操作的,而是用簡單高效的——命令行。

所以,想要登錄Linux,就需要藉助一個叫做SSH的工具。

SSH是啥:

SSH 爲 Secure Shell 的縮寫,由 IETF 的網絡小組(Network Working Group)所制定;SSH 爲建立在應用層基礎上的安全協議。SSH 是目前較可靠,專爲遠程登錄會話和其他網絡服務提供安全性的協議。利用 SSH 協議可以有效防止遠程管理過程中的信息泄露問題。
——摘自百度百科

對於Windows用戶來說,需要下載支持的SSH的工具Putty,如果你正在使用GitHub,它的Bash裏面可以直接支持SSH。

對於Mac用戶來說,終端直接支持SSH。

Linux用戶嘛...肯定不需要看這種入門文章了。。。

第一條命令,登錄:

ssh [email protected]
"root"處換成你服務器上的用戶名,如果是新安裝的系統,很大可能就是root
"xxx"處換成服務器的IP地址

輸入回車之後會提示輸入密碼,終端中輸入的密碼是不可見的,所以不用奇怪,放心的輸入好了。

圖片.png

登錄成功之後,可以看到再次出現的輸入行,用戶由本地用戶變成了服務器上面的用戶。

圖片.png

如果需要斷開SSH連接,只需要logout一下就可以了

logout

接下來是基本操作

移動到某個目錄:

cd /your/place

cd後面的第一個/是根目錄,意味着這是樹狀結構的最頂層,其他的一切目錄都在根目錄的下層。

或許初學者可能會想:"你只給我一個cd命令就讓我去找文件,這我哪找得到啊?難道我還要記住每一個文件的位置?"

NONONO,終端中有一個神器,叫做Tab:

  • 如果用戶記不住命令的全稱,按一下Tab,系統會儘可能去匹配命令:當可選命令大於一條時,命令行沒有反應,此時再按一下Tab,終端會打印所有可能實現的命令
  • 在用戶記不住當前目錄下有什麼文件時,只需要cd到某個路徑之後按兩下Tab,即可顯示此目錄下所有的文件,然後輸入你想要前往的目錄的一部分名稱,打一下Tab,如果這個前綴是當前目錄裏唯一的,就可以自動補齊。
沒有Tab的命令行沒有靈魂的

顯示目錄下的文件夾:

ls

如果需要顯示隱藏文件:

ls -a

新建文件夾:(test 文件夾名)

mkdir test

文件夾或文件改名:(原文件名 新文件名 支持Tab補齊)

mv test ThinkPhp

新建一個文件:(目錄名/文件名)

touch test/a.txt

使用Vim編輯文件:

vim a.txt

Vim簡單操作:

上下左右鍵  -光標移動
i  -插入文字
d  -刪除整行
esc  -退出當前模式(也就是進入命令模式)
:  -輸入命令
:w  -寫入文件(保存)
:q  -退出
:wq  -保存並退出

重要:修改文件夾權限(test爲文件夾名)

chmod -R 777 test
// -R表示遞歸給文件及文件夾內文件更改權限
// r(4),w(2),x(1)

重要:文件夾刪除操作(跑路必備)

rm -rf test
//如果需要root權限,改成
sudo rm -rf test
//千萬別拿重要文件亂試,後果自負

有了以上命令基本上可以流暢操作Linux命令行了。


2、服務器軟件的選擇


起初我還打算在服務器上手動安裝運行環境,直到有一天老師突然說:各大虛擬化平臺上都有直接集成運行環境的鏡像,我才恍然大悟,使用集成了環境的鏡像可以大幅度減少折騰的時間。
在下圖中可以看到,Apache、PHP、mysql、FTP都有了,只要安裝鏡像就啥也不用折騰了。

圖片.png

(如果不想用集成軟件的鏡像,也可以安裝原版的系統,自行下載運行環境)

系統裝好之後,瀏覽器輸入IP或者域名,可以看到成功跳轉到TP的首頁,就說明系統和運行環境都正常工作了。

下一步就是SSH登錄服務器了。


3、部署TP5.1


對於不同的鏡像來說,根目錄(DocumentRoot)的位置可能不同,這個路徑應該是封裝這個鏡像的時候就定義好了。如果第一次登錄時找不到TP5的根目錄,可以使用搜索大法:

find / -name thinkphp
// "/"是搜索的路徑,設置成根目錄是在所有文件中搜索
//如果搜索根目錄,時間會比較長,請耐心等待
// thinkphp是要搜索的文件名

找到文件目錄之後,cd 到那個目錄,ls 一下,可以正常顯示TP5框架的文件。

find.png

然後把原有的TP文件夾重命名,因爲我們要添加新的文件夾

(本文中把thinkphp改爲thinkphp00)
mv thinkphp/ thinkphp00/

我們可以使用GitHub來向服務器傳輸代碼,避免設置FTP的步驟。所以,在本地先把代碼提交到GitHub倉庫中,然後在GitHub的倉庫中找到clone鏈接,點一下按鈕複製。

圖片.png

在終端上找到原來ThinkPHP的上級目錄,

git clone http://your.address thinkphp
// http後面是GitHub倉庫地址
// thinkphp是克隆到服務器上的文件夾名,
// 如果不填,則使用項目默認的文件夾名

clone.png

由於鏡像中的Apache改了根目錄的位置,所以Url比較短

(爲了進一步縮減Url長度,以後可以開啓重寫功能,連index.php都不用輸入了)

//不需要輸入index.php和public:
http://your ip/public/index.php/Module/Controller/Function
//只需要輸入:
http://your.ip/index.php/Module/Controller/Function
//如果再開啓重寫之後,鏈接變成了:
http://your.ip/Module/Controller/Function

如果不出意外,此時應該能正常訪問到某個控制器下的方法

如果出現Not Found(中文提示是"找不到對象"),那說明可能鏈接輸入有誤,或者Apache中設定的位置不對,或者重寫的設置不對

圖片.png


4、部署MySQL


在經過一系列操作之後,我們的項目的網站已經可以訪問了,可是隨便點幾下就會報錯,那麼...是不是忘記了什麼事情——對,數據庫!還沒有導入數據庫。

MyS![MySQL.pngQL.png](/img/bVbzs92)

首先啓動服務,然後嘗試登錄數據庫

//啓動MySQL服務
service mysqld start
//以root用戶帶密碼登錄
mysql -u root -p

SQL訪問拒絕.png

然後突然發現我並不知道默認密碼...

SQL默認密碼.png

然後去搜索了一下,才發現這貨的密碼在一個文件裏面,於是我找到這個文件

MySQL密碼.png

果然有所收穫,

需要注意的是,這裏的密碼,只是用於查看的,如果直接更改這個文件的內容,數據庫的任何信息都不會跟着變化

有了密碼之後,成功登錄,此時發現數據庫只能本地登錄,不能遠程訪問(提示1130錯誤,權限問題)

圖片.png

所以需要開啓用戶的遠程訪問權限

//查找所有用戶的主機名、賬號、密碼
select host,user,passward from mysql.user;
//授權任意主機名使用root用戶,123456密碼遠程登錄
grant all on *.* to root@"%" indentified by '123456';
//注意:密碼僅供演示,實際生產環境中嚴禁使用root用戶遠程訪問,更不能把密碼設置成白癡一樣的123456!!!

然後,在Navicat軟件中,就可以遠程連接服務器上的數據庫了

圖片.png

然後照着本地數據庫在服務器上建立一模一樣的數據表就OK了

(我是不會告訴你們,Navicat中的數據表拖拽一下就可以直接複製的)

然後還差最後一步就大功告成了——在服務器上的Config中修改數據庫地址:

cd /your thinkphp address/thinkphp/config 
vim database.php

圖片.png

只需要把用戶名和密碼改到就可以了。然後esc :wq enter保存退出,再去登錄時就發現了這個久違的笑臉

圖片.png

到此,雲服務器部署ThinkPHP和MySQL完成!


總結:


Linux命令和項目部署可以說是程序員的基本操作,之前自己在學習這些內容時也走了很多彎路,寫博客的意義在於發現問題和分享解決問題的過程。

對於Linux命令,自己的經驗是,不用可刻意記憶代碼,功到用時自然成,隨着自己的經驗逐漸豐富,許多技能慢慢就自然會了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章