一、說明
安裝網頁執行平台,以供開發作業
很多人都知道,windows有不少PHP開發環境的安裝包,如xampp, appserv, wamp,但一個成熟的開發者,是不會用和線上不一樣的環境開發的,這會導至開發出來的程式有無法預期的錯誤,所以學習安裝一個LNMP環境是有必要的。
二、環境
- windows
- virtualbox
- Ubuntu 16.04
- Nignx 1.10
- PHP 7
- MySQL 5.7
三、安裝 虛擬機器
3.1 下載 VirtualBox
前往 VirtualBox 官方網站下載安裝軟體
3.2 安裝 VirtualBox
執行安裝,一直「下一步」到底即可
3.3 建立新虛擬機器
啟動VirtualBox
點選「新增」鍵
設定記憶體
建立硬碟
選擇硬碟類型
選擇硬碟使用方式
選擇硬碟位置和大小
建立完成,並設定光碟機
- 請先下載 Ubuntu 伺服器版 16.04 ISO檔
- 下拉scrollbar,並點選 存放位置 光碟機
- 選擇磁碟映像,指定之前下載的ISO檔
設定網路
增加NAT網路
點擊左上角 檔案 => 喜好設定 => 網路虛擬機器可連線internet,且虛擬機器之間可互連
選擇「NAT」時,無法和其他機器互連,但選擇「NAT網路」的機器之間是可以互連的
讓主機端可連線虛擬機器
主機端無法透過「NAT」、「NAT網路」連線到虛擬機器,因此要增加介面卡「僅限主機介面卡」
啟動虛擬機器
四、安裝 Linux
4.1 下載 Ubuntu ISO檔
前往 Ubuntu 正體中文站 下載 Ubuntu 16.04
4.2 安裝 Ubuntu
Tips: 除了選擇軟體步驗外,基本上不是「continue」就是「yes」
選擇語系 English
不知為何,筆者用中文語系裝不起來
安裝畫面 Install Ubuntu Server
系統語系 建議 English
地區 other
為了選Taiwan
地區 Asia
為了選Taiwan
地區 Taiwan
系統語系相關 建議選United States
鍵盤類型 不偵測
鍵盤 English(US)
台灣標準鍵盤基本上就選這個
鍵盤 English(US)
安裝部份元件
設定主機名稱
可自行設定,不影響使用
建立使用者
輸入自己的名子
輸入帳號名稱
- 輸入自己的帳號
- 安裝時建立的帳號可當成除root外最高權限帳號,建議平時使用別的帳號
輸入密碼
加密帳號的家目錄[建議No]
系統時區設定 Asia/Taipei
格式化硬碟(LVM系統)
不會設定的話,就預設吧
設定LVM目標
不會設定的話,就預設吧
將LVM設定寫入碟碟
Yes就對了
設定LVM磁區大小
全給了
LVM的建議磁碟分割
Yes就對了,反正也玩不出花來
proxy,空白即可
不自動更新
更新還是手動來比較好,起碼知道更新了什麼
安裝套件-建議如圖選項
需要的套件,建議之後再裝,在此只要裝基本套件和SSH服務即可
套件安裝中
安裝開機引導程式[建議Yes]
安裝完成
重開機中
開機完成
關機步驟:
- 登入 (用安裝時建立的帳號)
- 關機指令: sudo shutdown -h -t now
使用sudo執行命令時,需再輸入一次當前帳號的密碼
關機,製作快照
建立快照(Snapshot)還原點
4.3 登入 Ubuntu Server
下載 Putty SSH連線程式 (windows用的)
或使用其他SSH連線程式
開機並登入系統查IP
輸入安裝系統時建立的帳號密碼
- 先使用VirtualBox介面登入系統中找IP (預設使用DHCP抓取浮動IP)
- 請輸入安裝時設定的帳號密碼
- 打密碼時,密碼欄不會有東西出現是正常的
- 查IP的指令:ifconfig -a
發現有張網卡沒有啟動
編輯網路設定檔
指令: sudo vi /etc/network/interfaces
小貼士:打指令打個開頭後按tab鍵,會自動指令補完,如果連按二下tab會顯示所有可能的選擇
- 增加第二張網卡「enp0s8」設定
- vi/vim 快速入門
- 在命令模式中按「a」鍵可進入編輯模式,再按「Esc」鍵可回到命令模式
- 在命令模式中按「:wq」可儲存離開
- 在命令模式中按「:q!」可強制離開
- 在命令模式中按「u」鍵可還原編輯內容;按「y」可重做編輯內容
- 在命令模式中按「yy」為複制一行;「dd」為刪除一行;「p」為貼上複制內容;「2yy」為複制二行;「3dd」為刪除3行
- 在命令模式中按「gg」為跳到第一行;「G」為跳到最後一行;「:12」為跳到第12行
- 在命令模式中按「/」+字串為尋找字串;尋找模式中再按n為尋找下一個;再按N為尋找上一個
重新啟動網路,查IP
指令: ifconfig -a
指令: sudo service networking restart
使用SSH連線程式登入
- 從VirtualBox介面登入就像是在伺服器前用KVM登入使用一樣,從SSH登入使用才是遠端使用
- 建立帳號 dev
Ubuntu安裝時設定的帳號是系統的第一個帳號,在部份設定中有特殊意思,建議平時使用時重新重新建立一個帳號
1 | 建立帳號dev |
五、安裝 LNMP Server
5.1 更新套件
- 更新apt資料庫
1 | sudo apt-get update |
- 更新套件
1 | sudo apt-get upgrade |
- 新系統使用前,建議全面更新
- 舊系統更新前,請先備份config檔
5.2 安裝管理套件
- 時間同步&vim編輯器
1 | sudo apt-get install ntp ntpdate vim |
5.3 安裝Nginx,PHP套件
1 | sudo apt-get install nginx php php-fpm php-mysql php-cli php-mcrypt php-curl php-mbstring php-imagick php-gd php-xml php-bcmath php-zip php-opcache php-common |
5.4 安裝MySQL,phpMyAdmin套件
1 | sudo apt-get install mysql-server mysql-client phpmyadmin |
設定MySQL root密碼
略過phpMyAdmin web server安裝
已經裝了Nginx,不需要再裝二上面個web server
設定phpMyAdmin參數,預設即可
設定帳號phpmyadmin的密碼
此帳號密碼是phpMyAdmin建立的MySQL帳號
1 | 連結phpMyAdmin到網頁根目錄 |
5.5 設定Nginx
5.5.1 nginx.conf設定檔
1 | sudo vi /etc/nginx/nginx.conf |
基本上不用改
1 | Nginx Server 啟動所使用的使用者 |
5.5.2 HTTP轉HTTPS設定
HTTP連線未加密,不安全
如果要做自己的開發機,可跳過HTTPS設定
1 | sudo vi /etc/nginx/sites-available/default |
只留本設定即可
1 | server { |
5.5.3 HTTPS SSL証書
申請免費通配符SSL證書
測試用
如果是自己做測試,那麼證書的申請機構和頒發機構都是自己。就可以用下面這個命令來生成證書:
- 創建根憑証
1 | sudo mkdir -p /etc/nginx/ssl/ |
- 創建域名証書
1 | 創建密鑰 |
迪菲-赫爾曼密鑰
1 | cd /etc/nginx/ssl |
5.5.4 共用設定檔
- 加密設定 ssl.conf
1 | sudo mkdir -p /etc/nginx/common.conf.d |
設定檔內容
1 | 証書文件 - 如有憑証鏈,需整合,服務器證書必須出現在組合文件中的鏈接證書之前: |
- 共用設定 common.conf
1 | sudo mkdir -p /etc/nginx/common.conf.d |
設定檔內容
1 | location / { |
5.5.5 網站設定檔
1 | sudo vi /etc/nginx/sites-available/dev-web.conf |
1 | # |
1 | 連結到啟動設定區 |
5.5.6 啟動 Nginx
1 | sudo systemctl enable nginx.service |
5.5.7 查看成果
- PHP還未設定完成,無法查看 https://sql.dev.idv/
- 如果你的域名不是DNS可查到的,請在作業系統的hosts中增加解譯規則
- 使用記事本打開 C:\Windows\System32\drivers\etc\hosts (需用管理者權限打開)
- 在檔案最下方增加二行設定
- 192.168.56.102 sql.dev.idv
- 192.168.56.102 site2.dev.idv
上述設定的IP: 192.168.56.102 是 單元登入 Ubuntu Server中查到的IP中用來連線SSH的IP
5.5.8 自簽憑証問題
- 憑証不安全提示
選擇進階 => 繼續前往 XXXX 網站(不安全) 可略過警告
5.6 設定 PHP-FPM
5.6.1 PHP調校
1 | sudo vi /etc/php/7.0/fpm/php.ini |
調整設定內容
1 | ; ========= 除錯 ========= |
- 必須是 memory_limit >= post_max_size >= upload_max_filesize
- 在清單上Changeable項目被標示為 PHP_INI_ALL或是 PHP_INI_USER的選項才能被ini_set修改
- php.ini清單請參照: http://tw.php.net/manual/en/ini.list.php
5.6.2 啟動PHP-FPM
1 | sudo systemctl restart php7.0-fpm.service |
5.7 設定MySQL
預設即可
5.7.1 啟動MySQL
1 | sudo service mysql restart |
5.8 設定phpMyAdmin
預設即可
5.8.1 查看成果
- 如果你的域名不是DNS可查到的,請在作業系統的hosts中增加解譯規則
- 使用記事本打開 C:\Windows\System32\drivers\etc\hosts (需用管理者權限打開)
- 在檔案最下方增加二行設定
- 192.168.56.102 sql.dev.idv
- 192.168.56.102 site2.dev.idv
上述設定的IP: 192.168.56.102 是 單元登入 Ubuntu Server中查到的IP中用來連線SSH的IP
六、Linux常用指令
- sudo 其他指令: 變換(root)權限執行指令
- ssh: ssh連線
- showdown -h now: 關機
- reboot: 重開機
- logout: 登出 (或ctrl+D)
- cd 目錄名稱: 前往目錄
- ls: 顯示目前目錄內容
- pwd: 顯示目前目錄路徑
- ifconfig: 查看網路介面
- netstat -tln: 查看服務監聽狀況
- 指令補完: tab鍵
- vi/vim 檔案路徑: 使用linux文字編輯器編輯檔案
- vi/vim 快速入門
- 在命令模式中按「a」鍵可進入編輯模式,再按「Esc」鍵可回到命令模式
- 在命令模式中按「:wq」可儲存離開
- 在命令模式中按「:q!」可強制離開
- 在命令模式中按「u」鍵可還原編輯內容;按「y」可重做編輯內容
- 在命令模式中按「yy」為複制一行;「dd」為刪除一行;「p」為貼上複制內容;「2yy」為複制二行;「3dd」為刪除3行
- 在命令模式中按「gg」為跳到第一行;「G」為跳到最後一行;「:12」為跳到第12行
- 在命令模式中按「/」+字串為尋找字串;尋找模式中再按n為尋找下一個;再按N為尋找上一個
七、參考:
八、名詞解釋
- 虛擬機器 : 在電腦平台中安裝虛擬系統,在虛擬系統中安裝其他執行環境,虛擬機器會共用電腦平台的資源
- Host(主機端) : 你目前使用的作業系統
- Guest(客戶端) : 你於 VirtualBox 上安裝的作業系統
- KVM : 即鍵盤、顯示器、滑鼠的英文首字母縮寫(Keyboard、Video、Mouse)