零:摘(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地址
輸入回車之後會提示輸入密碼,終端中輸入的密碼是不可見的,所以不用奇怪,放心的輸入好了。
登錄成功之後,可以看到再次出現的輸入行,用戶由本地用戶變成了服務器上面的用戶。
如果需要斷開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都有了,只要安裝鏡像就啥也不用折騰了。
(如果不想用集成軟件的鏡像,也可以安裝原版的系統,自行下載運行環境)
系統裝好之後,瀏覽器輸入IP或者域名,可以看到成功跳轉到TP的首頁,就說明系統和運行環境都正常工作了。
下一步就是SSH登錄服務器了。
3、部署TP5.1
對於不同的鏡像來說,根目錄(DocumentRoot)的位置可能不同,這個路徑應該是封裝這個鏡像的時候就定義好了。如果第一次登錄時找不到TP5的根目錄,可以使用搜索大法:
find / -name thinkphp
// "/"是搜索的路徑,設置成根目錄是在所有文件中搜索
//如果搜索根目錄,時間會比較長,請耐心等待
// thinkphp是要搜索的文件名
找到文件目錄之後,cd 到那個目錄,ls 一下,可以正常顯示TP5框架的文件。
然後把原有的TP文件夾重命名,因爲我們要添加新的文件夾
(本文中把thinkphp改爲thinkphp00)
mv thinkphp/ thinkphp00/
我們可以使用GitHub來向服務器傳輸代碼,避免設置FTP的步驟。所以,在本地先把代碼提交到GitHub倉庫中,然後在GitHub的倉庫中找到clone鏈接,點一下按鈕複製。
在終端上找到原來ThinkPHP的上級目錄,
git clone http://your.address thinkphp
// http後面是GitHub倉庫地址
// thinkphp是克隆到服務器上的文件夾名,
// 如果不填,則使用項目默認的文件夾名
由於鏡像中的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中設定的位置不對,或者重寫的設置不對
4、部署MySQL
在經過一系列操作之後,我們的項目的網站已經可以訪問了,可是隨便點幾下就會報錯,那麼...是不是忘記了什麼事情——對,數據庫!還沒有導入數據庫。
QL.png](/img/bVbzs92)
首先啓動服務,然後嘗試登錄數據庫
//啓動MySQL服務
service mysqld start
//以root用戶帶密碼登錄
mysql -u root -p
然後突然發現我並不知道默認密碼...
然後去搜索了一下,才發現這貨的密碼在一個文件裏面,於是我找到這個文件
果然有所收穫,
需要注意的是,這裏的密碼,只是用於查看的,如果直接更改這個文件的內容,數據庫的任何信息都不會跟着變化
有了密碼之後,成功登錄,此時發現數據庫只能本地登錄,不能遠程訪問(提示1130錯誤,權限問題)
所以需要開啓用戶的遠程訪問權限
//查找所有用戶的主機名、賬號、密碼
select host,user,passward from mysql.user;
//授權任意主機名使用root用戶,123456密碼遠程登錄
grant all on *.* to root@"%" indentified by '123456';
//注意:密碼僅供演示,實際生產環境中嚴禁使用root用戶遠程訪問,更不能把密碼設置成白癡一樣的123456!!!
然後,在Navicat軟件中,就可以遠程連接服務器上的數據庫了
然後照着本地數據庫在服務器上建立一模一樣的數據表就OK了
(我是不會告訴你們,Navicat中的數據表拖拽一下就可以直接複製的)
然後還差最後一步就大功告成了——在服務器上的Config中修改數據庫地址:
cd /your thinkphp address/thinkphp/config
vim database.php
只需要把用戶名和密碼改到就可以了。然後esc :wq enter保存退出,再去登錄時就發現了這個久違的笑臉