[教學]如何在VirtualBox安裝CentOS 7

前言

大多數在本機開發的狀況下,很少會用虛擬機器安裝一整台伺服器,但最近遇到有客戶需要我們直教交付整台VM (virtual machine 虛擬機器),索性就來紀錄一下要如何在自己的電腦上建立整台虛擬機器的LAMP (Linux + Apache + MariaDB + PHP7) 環境的教學吧!

第一步下載VirtualBox與CentOS

市面上有許多虛擬機器的軟體,像是VMware、VirtualBox 都是,本次我們採用 VirtualBox作為我們虛擬機器的主體,原因沒有別得,只因為他是免費的,支援的平台也很多(Windows與Mac OS都支援),而且取得也很容易,只要上VirtualBox官網下載適合你的作業系統版本就可以了。

下載VirtulBox軟體並完成安裝

由於安裝過程都還算容易所以在這裡就不詳細說明了,原則上就是一直按下一步就差不多了。

接著我們要來下載CentOS作業系統,以Linux Server來說,比較常見的會是像CentOS、Ubuntu,我們這裡採用CentOS主要原因是以安裝後的檔案大小來說CentOS會是比較小的,可以說是麻雀雖小但五臟俱全的的一個選擇,所以我通常都會選擇採用CentOS來做Server的作業系統。

跟 VirtualBox 的步驟差不多,只要前往CentOS下載作業系統的iso檔,等一下我們在建立虛擬機器的時候才會用到,本次我要安裝的是CentOS 7 的x86_64版本,只要點擊一下檔案名稱就會直接下載iso檔了,iso檔是光碟映像檔的意思,簡單來說他就說iso就是虛擬光碟,取得iso檔之後,我個人會建議把iso檔放在桌面,等等安裝時會比較好找一點。如果你想要安裝新一點的CentOS 8 也是可以的,但在作業系統安裝上可能介面上會稍微有點不同,不過大致上安裝完作業系統後的步驟也是差不多的。

下載CentOS iso檔

第二步建立虛擬機器

安裝完VirtualBox之後,打開後你會看到一個虛擬機器管理員,如果你不喜歡英文介面,VirtualBox是可以切換成中文介面的,因為我本人是用Mac OS系統,在Mac上只要到左上角,選擇喜好設定,就可以在介面裡找到語言的選項,接著在選擇正體中文,你就會發現介面親民多了。

VirtualBox 如何切換中文語系

回到虛擬機器管理員,我們按下新增按鈕,開始建立新虛擬機器。

VirtualBox 管理員介面

你可以替你的虛擬機器取一個你覺得不錯的名字,在這邊我設定為Demo,接著機器資料夾位置我通常都會選擇預設值,也就是不做任何修改,下一欄是作業系統的類型,因為我們要安裝CentOS所以選擇Linux,接著你會發現版本的欄位裡面沒有CentOS,在這裡我們直接選用Red Hat (64-bit) 即可。Red Hat 也是一款Liunx系統,是目前所有Linux作業系統中組織最大的一個團體,改天有空再來說說Red Hat的故事。選擇完成後就可以按下「繼續」這顆按鈕囉!

安裝CentOS的設定方式

接著就是設定這台虛擬機器的硬體設備部分,原則上就是記憶體與硬碟的大小,通常記憶體我都會選擇預設值不做調整,所以我會持續按下「繼續」這顆按鈕,而硬碟部分我也會選擇預設值「立即建立虛擬硬碟」,接下來如果你是個人使用,建議你選擇預設值VDI格式,會比較符合VirtualBox的使用,但如果你有要換到其他虛擬機器的軟體,例如VMware,我會建議你改選VMDK格式,在這裡我選擇VMDK格式。

預設建議採用VDI格式,若有要更換虛擬機器環境則建議採用VMDK格式

接下來我會選擇預設值「動態分配」讓系統自動分配硬碟大小,以免暫用太多我自己電腦的硬碟資源,但如果你想要運作快速一點,直接選擇固定大小會有助於提升虛擬機器的硬碟效率喔!最後硬碟大小原則上如果沒有特別需求,一樣採用預設建議大小即可,最後你就可以按下「建立」按鈕,結束新建立虛擬機器這一回合了。

安裝CentOS作業系統

連續點擊兩次剛剛建立好的新虛擬機器(我的叫Demo),雙擊後虛擬機器就開機了,因為沒有OS可以運行,所以VirtualBox會問你要不要掛載iso,這時選擇先前放在桌面的CentOS 7 的iso,選擇「啟動」,就可以開始進入CentOS的安裝環節了。

選擇CentOS的iso檔

接著選擇「Install CentOS 7」,在這樣的文字介面裡你只能用上下左右來操控選項,當前的選項會是白色的,確定選在「Install CentOS 7」之後按下enter,你就會看到畫面上正在執行安裝程序了。

安裝CentOS

接下來你會進入CentOS的圖形安裝介面,一開始可以選擇語系,一個一個找太麻煩了,所以你只要在搜尋框裡面輸入ch你就會找到中文的選項,選擇後就會出現「繁體中文(台灣)」的選項。在安裝摘要的部分,軟體選擇預設是最小安裝,在這邊我就不做修改,這樣一來就只會安裝CentOS的核心系統,缺點就是你需要什麼功能或軟體都要另外安裝。再來是安裝目的地,點選安裝目的地之後,基本上也只有一顆硬碟可以選,所以確定選取硬碟後就可以按下「完成」,接著就可以「開始安裝」。

CentOS 安裝介面
選擇硬碟之後,點選左上角的完成

點選開始安裝之後你會進入下一個畫面,在這個畫面裡最重要的是你需要設定Root的密碼,Root是Linux系統的超級管理員,所以你必須設定好Root的密碼,這樣到時候你進入系統才不會不知道密碼是什麼,至於用戶你可以先不建立,之後再用Root去建立新用戶。安裝好之後記得按下重新開機,這樣我們才能進入CentOS系統裡。

選擇ROOT密碼
設定ROOT密碼

重開機之後你就會進入終端機的世界,是的,一個完全沒有圖形介面的世界,如何登入呢?因為我們剛剛沒有建立用戶,所以帳號就直接是root了,密碼則是剛剛安裝的時候設定的那組密碼,再輸入密碼的時候畫面不會有反應,請不要擔心,就正常的輸入按下enter就好。那要怎麼關機? 其實你只要在虛擬機左上角按下X,VirtualBox就會問你是不是要關機,反正他不是真實的電腦,不用怕突然關機會整台壞掉啦!所以我們先將機器關機先,我們要先處理另外一個硬體問題。

設定網路卡

因為我們是最小安裝,所以我們的系統其實很笨,連預設的網路卡都不會啟動,所以如果你的虛擬機器是關著的,請你點兩下打開它,然後選擇第一個選項或繼續發呆10秒,你就會進入作業系統裡,接著輸入root以及你剛剛設定的密碼,到這裡我們就登入系統裡了。

你可以嘗試輸入

ping 8.8.8.8

你會發現畫面上顯示「Network is unreachable」,意思就是連不到網路,所以接下來我們要設定預設網路卡讓我們的網路可以正常連線。你只要自畫面上輸入

nmtui

並按下enter,你就會進入一個很精簡的藍色介面,所謂的nmtui是指NetManager – TextUI,也就是說這是管理網路的文字介面,接下來我們要選擇第一個選項「Edit a connection」,來設定我們的網路卡。

NMTUI介面,選擇第一個Edit a connection

接下來你會到左右分割畫面,紅色底的意思代表被你選取了,左邊這欄是你目前全部的網路卡,你有幾張你就要設定幾次,所以右邊請選edit進入設定。

在NMTUI裡面設定網路卡

確定你的IPV4與IPV6都是Automatic,之後透過上下鍵移到Automatically connect 並按下空白鍵來啟動自動連線網路,接著移到OK按下enter,然後選擇右側的Back,接著移到最下面的Quit再按右鍵會到ok,按下enter之後,你再從重新輸入ping 8.8.8.8就會發現可以連到外部網路了,如果你想停下測試只要按下control+c就會停止了。

一般來說來說這邊我們只要輸入ipconfig指令就可以查到我們虛擬機器的本機ip,但由於我們是最小安裝,所以裡面連ipconfig都沒有呢!這下子怎麼辦才好呢?別擔心,本篇教學真的佛心超仔細,所以接下來我們要進入軟體安裝環節了,接下來我們會採用yum來安裝軟體,所以我們先更新yum,由於我們是用root,所以指令前面的sudo其實可以省略,但如果你是用其他帳號,建議還是要加上sudo會比較好一點。在終端機內輸入以下指令:

sudo yum update

中間會詢問你需要OOOM空間可不可以等等的訊息,請都直接輸入Y,更新完成後,接著我們來安裝網路工具

sudo yum install net-tools

安裝的過程中還是會詢問你需要這些硬碟空間可以嗎?一樣還是輸入Y,安裝完全程後,輸入以下指令你就可以取得你的虛擬機器ip配置了。

ifconfig
輸入ifconfig查看本機ip

當你看到你的ip是10.0.2.X的時候,就代表你的虛擬機器使用的網卡是虛擬的(廢話),我們的目標是讓虛擬機器取得192.168.x.x的這種ip,這樣我們才可以連進去Server裡,所以讓我們關閉虛擬機器,回到虛擬機器管理員,在虛擬機器上按右鍵,將網路卡改為橋接介面卡,因為我的電腦(真的Mac電腦)是採用wifi網卡,所以在這裡我也選擇wifi的選項。

改用橋接介面卡,讓虛擬機器取得實際內網ip

再次啟動機器輸入root與密碼,接著再輸入ifconfig,你會發現你的虛擬機器已經可以取得192.168.x.x的內網ip了!接下來我們就要進入Apache 、MariaDB 、 PHP7的安裝環節了!

安裝Apache

請確定你的虛擬機器現在是開啟的,你也有輸入過帳號root與密碼,現在也正在東端機的畫面上,確定無誤之後請輸入以下指令:

sudo yum install httpd

過程中一樣會問你安裝將會使用到多少檔案空間大小等等的問題,請一律按Y一直到出現Complete!字樣為止。

接下來我們先啟動Apache:

sudo systemctl start httpd

接著我們設定當CentOS作業系統啟動時,Apache也會跟著自動啟動:

sudo systemctl enable httpd

到這裡我們就設定完Apache了,撇開指令不談是不是其實還蠻簡單的(笑),所謂的systemctl 就是系統控制system control的縮寫,而httpd則是http daemon的縮寫,簡單來說就是執行http傳輸的軟體,看到這裡有沒有覺得這些指令其實還蠻白話文的,沒這麼嚇人了?

如果你想知道你現在Apache運行的狀態只要輸入以下指令:

systemctl status httpd

當你看到畫面上有一個綠色的active(running) 就代表Apach運作正常囉!

Apach Active (running)示意圖

啊如果不是綠色的active怎麼辦?聽說重開機治百病,所以重啟的指令如下:

systemctl restart httpd

安裝MariaDB

安裝MariaDB資料庫也很簡單,只是中間步驟有點繁瑣,沒關係我們初學者,我們一步一步慢慢來,首先先輸入安裝MariaDB指令:

sudo yum install mariadb-server mariadb

中間一樣會問你需要多少硬碟容易可不可以,一樣輸入Y按下enter,完成後一樣會看到Complete!字樣。接下來啟動MariaDB:

sudo systemctl start mariadb

然後開始我們有點繁瑣的資料庫初始化流程,請輸入初始化指令:

sudo mysql_secure_installation

第一個問題是問你有沒有設定root密碼,這裡的root是資料庫的root密碼,因為我們還沒設定所以直接按下enter即可。

第二個問題是在告入你設定root密碼比較好所以請輸入Y,然後設定你的資料庫root密碼,輸入密碼時畫面不會有任何改變,請正常輸入再按下enter,然後再次輸入一次密碼再按下enter,並請妥善記得這個密碼。

後續問題如果你不想詳細了解,那你就一路輸入Y輸入到安裝完成,然後直接跳到下一個指令,如果你想了解就繼續看下去。

第三個問題是問你是否要刪除匿名使用者,一般來說資料庫都不會開放給外部人員,所以請輸入Y。

第四個問題是詢問你是否在本地才能登入root管理員,通常為了安全性我們不太會開放遠端,所以也請輸入Y。

第五個問題是詢問你要不要刪除測試資料庫,基本上測試資料庫對我來說一點用處都沒有,還很佔空間,所以我也會繼續輸入Y。

第六題他是詢問要不要現在重新讀取權限表,因為剛剛有設定root密碼,所以我還是會繼續輸入Y。

以上你就完成了繁瑣的MariaDB初始化,接著我們來設定當CentOS啟動時,MariaDB也會跟著啟動:

sudo systemctl enable mariadb

到這邊你就完成了MariaDB的安裝了。

如果你檢查MariaDB目前的狀態:

systemctl status mariadb

一樣你會看到綠色的active (runing),萬一不是這個狀態怎麼辦?通常重新啟動也可以治百病:

systemctl restart mariadb

安裝PHP7

在安裝PHP7之前我們需要做一些準備工作,原因是CentOS內建的yum套件軟體只有到php5.4啊!所以我們需要先安裝一下軟體補充包,我們才可以安裝php7,請在終端機輸入:

yum install epel-release

EPEL (Extra Packages for Enterprise Linux) ,基本上就是一個額外的Linux軟體包,接著我們要安裝Remi的軟體包,這樣才可以把PHP7抓回來安裝:

yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm

接著因為CentOS預設是安裝php5.4,所以我得先把預設的部分關掉,為了關掉我們還需要安裝一個管理包:

yum install yum-utils

然後關閉php5.4:

yum-config-manager --disable remi-php54

然後開啟你需要php7 版本:

yum-config-manager --enable remi-php74

在上述指令中的php74是指php 7.4,所以如果你要7.3版本就改成73就可以了,其他7的版本也是同樣道理。接著終於可以安裝php了:

yum install php

中間一樣會問你安裝需要這些檔案大小等等的問題,請一率輸入Y,一直到看到Complete!字樣為止。如果你想知道你的php安裝有沒有成功,你可以透過查詢php版本指令來檢查:

php -v
上圖為安裝php7.2之後輸入php -v 出現的版本號

接著php本身我們就有一些常用的套件要安裝一下,例如像是GD函式庫等等,以下就是常用套件的安裝指令:

sudo yum install php74-php-fpm php74-php-gd php74-php-json php74-php-mbstring php74-php-mysql
sudo yum install php74-php-mysqli php74-php-mysqlnd php74-php-xml php74-php-xmlrpc php74-php-opcache
sudo yum install php74-php-cli php74-php-common php74-php-pecl-zip

上述指令一樣php74改成你要的版本,因為我安裝的是php7.2所以我都是「php72」-開頭,如何知道你現在安裝的套件有哪些?只要輸入以下指令查詢即可:

php74 --modules

如果上述指令沒有接上版本就會列出全部版本的php套件。

接著我們要啟動php服務

sudo systemctl start php74-php-fpm

與上面相同,我們一樣設定開機時php會自動啟動:

sudo systemctl enable php74-php-fpm

到這邊基本上能裝的我們都裝好了,但很可惜的是你用本機(就是我的mac你拿來上網google的那個)瀏覽器,輸入192.168.x.x,你會發現你還是看不到網站,一般來說Apach裝好都會有一頁testing123的預設畫面,那為什麼你還是看不到呢?那是因為你被防火牆擋住了!

解開防火牆

要連到網站我們需要開通http服務,如果你有要用ssl就還要開通https服務,所以請輸入以下兩個指令:

sudo firewall-cmd --add-service=http --permanent
sudo firewall-cmd --add-service=https --permanent

輸入完後如何確定你的指令有成功?我們可以透過查詢來成功:

firewall-cmd --list-all --permanent

沒有意外你會看到開通的服務有 http 、 https 、 ssh 等,以上指令後面接上「–permanent」是代表永久有效的意思。

防火牆有開啟的服務列表

最後記得要重開防火牆:

 service firewalld restart

然後你就可以用你電腦的瀏覽器開啟192.168.x.x看到tesing123的預設畫面了!

使用FileZilla傳輸檔案

由於防火牆已經有開啟ssh,所以我們可以用sFTP模式來傳輸檔案,主機位置就是你的虛擬機器ip 192.168.x.x,然後帳號基本是root 如果有你開其他帳號的話請改用其他帳號,再來密碼就是你登入CentOS的密碼,連接埠號請記得設定22,如果是用站台管理員,協定且記得選擇sFTP模式。

採用方法一的快速連線或是站台管理員模式都可以

連線的過程會詢問是否信任主機,因為是自己的主機而且還在內網裡,所以就大膽的信任下去吧!接著網站預設的根目錄位置是在:/var/www/html/,只要切換到這裡就可以把檔案放上去囉!

取代PHPMyAdmin的Adminer.php

習慣用mysql的工程師肯定都用過phpmyadmin這個資料庫操作介面,但因為他實在太肥大了,運作效能也沒有說非常好,所以從十年前我就不再使用phpmyadmin,而是改用adminer.php,他非常的輕薄短小,卻支援多款資料庫,也有多國語言設計,重點是他只是一隻php檔案,只要丟上server你就有跟phpmyadmin一樣的功能,剛安裝上去的adminer.php介面非常陽春,但如果你想要前衛一點的介面,adminer.php官網也有一些已經設計好的css,只要下載下來與adminer.php放一起就會從很陽春的介面變成很前衛的介面了!最重要的事……你跟終端機介面相處的時間就變短了很多呢!

按此前往Adminer.php官方網站

最後測試

由於先前我們已經設定好只要虛擬機器重新開機,Apach、MariaDB與PHP都會自動執行,所以讓我們來做最後的測試,看看重開機之後系統會不會自動執行,讓我們用瀏覽器就可以直接瀏覽adminer.php,在終端機下CentOS的重開機指令:

reboot

當系統重新開機,一樣會到帳號登入畫面,你不需要登入root帳號,請直接用瀏覽器打開虛擬機器的IP 192.168.x.x,由於我們只有放adminer.php在網站根目錄裡,所以請在後頭加上/adminer.php,即完整網址為http://192.168.x.x/adminer.php,你應該就會看到以下畫面,到這裡你就可以把你的網站放到測試機上了!

adminer.php 介面

如果你打開很不幸的看到的是php程式碼,請不用擔心,主要的原因是你的Apache不知道.php結尾的檔案要用php來執行,所以你需要在httpd.conf文件新增幾行設定就好。請先輸入以下指令來開啟httpd.conf檔:

vi /etc/httpd/conf/httpd.conf

然後找個你順眼的地方,比方說最上方或有個地方是寫file的地方,找到之後按下i啟動編輯模式,輸入以下內容:

<FilesMatch \.php$>
    SetHandler application/x-httpd-php
</FilesMatch>

輸入完成後按下esc鍵,然後輸入:接著打「wq!」就可以儲存並離開了。

由於我們改了Apache的設定,所以不要忘了要重啟Apache服務:

systemctl restart httpd

然後你就可以重新整理你的瀏覽器,你會發現原本出現php程式碼的問題已經解決了,現在可以正常執行php程式了。

多站台如何處理?

現在我們一台虛擬機器了,也就說我們可以把虛擬機器變成虛擬主機放很多個網站在裡面,通常只需要放一個網站的話是不太會接觸到接下來的設定,但如果是多站台或有SSL需求的話就會需要多站台設定了這個部分了,那一台虛擬機器怎麼變成多站台呢?這部分我們就要不同的連接埠來處理了,預設http走的是80port,所以如果要放其他站台,我們可以改用81port、82port,你高興的話101port也可以,只要其他軟體沒有佔用你都可以使用。

要做到採用其他port這件事我們需要去改Apache的設定,在終端機裡我們通常都用vi編輯器做來修改文字的工具,所以請在終端機內輸入:

vi /etc/httpd/conf/httpd.conf

然後用上下箭頭切換到Listen 80,這裡是設定連線的連接埠,通常http是走80 port,如果你想要新增其他連接埠,請在Listen的下一行按 i 進行編輯,你可以在Listen 80下方多一行Listen 81,但你也可以選擇全部使用80 port,之後再用server name做為區別。

新增監聽的連接埠 port

接著往下一直到這份文件的最底部,新增以下內容:

<VirtualHost *:80> //這裡是設定連接埠
    ServerName demo2 //這裡是網站的網址,所以也可以是www.a.com
    DocumentRoot /var/www/html/demo2 //是網站根目錄
</VirtualHost>

最後按下esc鍵,輸入:接著打wq!儲存並離開httpd.conf檔。

由於我們修改的Apache的設定,所以請重新啟動Apache讓設定生效:

systemctl restart httpd

當然如果你有用到其他連接埠,例如上面說的81 port,也要記得在防火牆打開81 port,並且重啟防火牆:

sudo firewall-cmd --add-port=81/tcp --permanent 
service firewalld restart

如果你的port不是81,請修改上述第一行指令的「port=81」這裡的數字。

補充:常用系統指令

  1. 開機:點兩下虛擬機或打開開關
  2. 關機:halt 或 poweroff 或 shutdown -h now (最後這要root才能用)
  3. 重開機:reboot
  4. 切換資料夾:cd 路徑,範例:cd /var/www/html
  5. 上一層資料夾:cd ..
  6. 列出當前資料夾檔案:ls 或 ls -all (詳細列出全部資料)
  7. vi編輯器:輸入vi 檔案名稱,在vi 中 a或i為修改該行,esc為跳出編輯模式,輸入:才可以打其他指令,以下為其他指令:wq!為儲存離開,單純儲存是w,單純離開請輸入q,強制離開為q!
  8. 硬碟使用量查詢:df -h
  9. 查詢前幾名使用資源最多的程式:top
  10. 查詢記憶體用量:free
  11. 目前正在執行中的程式:ps 或 ps -aux
  12. 強制停止程式:kill PID名稱,例如:kill 101,PID值可以用ps去查
  13. 啟動服務:sudo systemctl start 服務名稱
  14. 停止服務:sudo systemctl stop 服務名稱
  15. 重新啟動服務: sudo systemctl restart 服務名稱
  16. 查詢服務狀態:sudo systemctl status 服務名稱
  17. 常用服務名稱:httpd.service 或 mariadb 或 php74-php-fpm.service

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

返回頂端