前兩天,我們建置了一個CentOS 7虛擬機器,並想辦法用遠端桌面連線的方式開啟這個虛擬機器,但效果並不好。
有可能是因為gnome桌面管理系統實在太耗用系統資源,也有可能是xrdp遠端桌面代理程式的效能不如預期,總之,想要以遠端桌面連線方式連接CentOS 7虛擬機器的代價相當高。
也因此,今天我們要討論如何在Microsoft Azure下以CentOS 7虛擬機器建置架設網站常用的LAMP Server,首先就是要在Microsoft Azure裏重新建一個CentOS 7虛擬機器,在這個新的CentOS 7虛擬機器建置LAMP Server。
少了遠端桌面連線,但我們可以換回被gnome和xrdp佔用的系統資源,而用SSH終端機連線,也是可以進行LAMP Server的安裝與建置。
讓我們由新增一個CentOS 7虛擬機器開始,請見下圖:
我們選用基本層次A1大小的虛擬機,影像選用OpenLogic 7.0,也就是CentOS 7,然後點上圖右下角的[建立虛擬機器]。
回到Microsoft Azure的入口網站主控台,過一段時間就可以看到新增加的虛擬機器的狀態變成正在執行。
我們用PuTTY以SSH連線這個新建的CentOS 7虛擬機器。
因為是第一次連線,PuTTY會跳出個是否驗證的對話窗。
點選上圖的[是],進入到PuTTY的終端機視窗。
登入預設的azureuser帳號。
因為我們接下來要安裝LAMP Server,需要超級使用者的權限比較方便進行安裝與建置,使用sudo su指令切換到超級使用者權限,如上圖。
在進行LAMP Server安裝前,我要說明一下午麼是LAMP Server。
LAMP是Linux、Apache、MySQL及PHP四個套件的簡稱,依序為Linux作業系統,Apache網站服務,MySQL資料庫服務及PHP網頁服務。
以Linux平台來建置網站,多半會用到LAMP。
在這裏,我們以CentOS 7為L。
雖然現在有很多代替Apache的網站服務套件,說Apache太肥大、效能不佳什麼的,但我在這裏仍然使用Apache為A。
雖然通常使用MySQL為資料庫,但自從MySQL被Sun MicroSystems公司買下,而Sun MicroSystem公司又被Oracle買下,現在,MySQL是Oracle旗下的產品系列之一。
原來MySQL的創始人,另外聚集一個社群搞了MariaDB,號稱百分之百與MySQL相容,又不會受到Oracle的牽制,所以,在這裏我用MariaDB取代MySQL,為LAMP的M。
PHP,這沒什麼好講,就是那個P。
我們已經裝好CentOS 7,也以SSH終端機登入完成,就由MySQL...喔~~不...MariaDB的安裝開始。
請輸入下列指令進行MariaDB的安裝。
yum -y install mariadb-server mariadb
安裝完成如下圖所示:
接下來我們啟用MariaDB資料庫服務。請執行下列兩個指令:
systemctl start mariadb.service
systemctl enable mariadb.service
然後,執行MariaDB的設置程序:
mysql_secure_installation
這個設置程序的整個過程如下:
/bin/mysql_secure_installation: line 379: find_mysql_client: command not found
NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY!
In order to log into MariaDB to secure it, we'll need the current
password for the root user. If you've just installed MariaDB, and
you haven't set the root password yet, the password will be blank,
so you should just press enter here.
Enter current password for root (enter for none): <<直接按[Enter]鍵
OK, successfully used password, moving on...
Setting the root password ensures that nobody can log into the MariaDB
root user without the proper authorisation.
Set root password? [Y/n] <<直接按[Enter]鍵
New password: <<輸入root帳號的密碼
Re-enter new password: <<再次輸入root帳號的密碼
Password updated successfully!
Reloading privilege tables..
... Success!
By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them. This is intended only for testing, and to make the installation
go a bit smoother. You should remove them before moving into a
production environment.
Remove anonymous users? [Y/n] <<直接按[Enter]鍵
... Success!
Normally, root should only be allowed to connect from 'localhost'. This
ensures that someone cannot guess at the root password from the network.
Disallow root login remotely? [Y/n] <<直接按[Enter]鍵
... Success!
By default, MariaDB comes with a database named 'test' that anyone can
access. This is also intended only for testing, and should be removed
before moving into a production environment.
Remove test database and access to it? [Y/n] <<直接按[Enter]鍵
Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.
Reload privilege tables now? [Y/n] <<直接按[Enter]鍵
... Success!
Cleaning up...
All done! If you've completed all of the above steps, your MariaDB
installation should now be secure.
Thanks for using MariaDB! <<看到這行就行了。
以上,我用紅字說明我的動作,這不是MySQL,是MariaDB。
接下來安裝Apache網站服務。
yum -y install httpd
安裝過程如下圖:
接下來我們啟動Apache網站服務,請依序執行下列指令:
systemctl start httpd.service
systemctl enable httpd.service
以上是啟動Apache的指令,因為網站服務還要開啟防火牆,讓我們執行下列指令來関啟防火牆的80及443埠。
firewall-cmd --permanent --zone=public --add-service=http
firewall-cmd --permanent --zone=public --add-service=https
firewall-cmd --reload
以上指令執行情況如下圖:
然後,我們來試試看能不能用瀏覽器連線到這個CentOS 7虛擬機器的網站服務。
且慢,Microsoft Azure現在只對這個CentOS 7開放SSH服務,如下圖(在儀表板那邊的端點頁面):
要開放HTTP及HTTPS服務,還需要再設定。請按上圖下方的[加入]:
選[加入獨立端點],目前先不管平衡負載相關的設置。
按上圖右下方的右向箭號。
由[名稱]下拉選單選擇HTTP,按右下方的打勾符號,完成HTTP設置。
請再完成HTTPS的設置,此時,端點頁面顯示如下圖:
我們試著以Chrome連到這個CentOS 7虛擬機器的Apache網站服務,確認Apache網站服務有正常運作。
接下來,我們把PHP網頁解譯器安裝起來。
請在SSH終端機中執行下列指令:
yum -y install php
安裝PHP的過程與結果如下圖:
然後執行下列指令重新啟動Apache,讓Apache接受新的PHP模組。
systemctl restart httpd.service
為了測試PHP的安裝,我們以傳統的phpinfo()來做個簡單PHP網頁:
vi /var/www/html/info.php <<用vi編輯器創建一個簡單網頁,輸入以下PHP編碼>>
<?php
phpinfo();
?>
Info.php網頁編輯完成存檔後,我們可以用http://simonlamp.cloudapp.net/來連線測試,如下圖:
我們可以看到安裝的PHP版本是5.4.16,可以向下捲動網頁,看看還有那些套件被安裝。
PHP經過PHP社群http://php.net/的長期努力經營,已經成為現今網頁開發技術的主流之一,以其容易上手、開發簡易和眾多Frameworks的加持,有很多網站開發新生代都用PHP為主要網站開發語言。
也因為PHP社群有很多強人在支持,除了核心模組外,還開發了不少附加套件來支援網站開發。
我們可以用下列指令來看看有那些PHP下的附加套件。
yum search php
經過搜尋,可以看到PHP還有以下附加套件可安裝:
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
=============================== N/S matched: php ===============================
graphviz-php.x86_64 : PHP extension for graphviz
php.x86_64 : PHP scripting language for creating dynamic web sites
php-bcmath.x86_64 : A module for PHP applications for using the bcmath library
php-cli.x86_64 : Command-line interface for PHP
php-common.x86_64 : Common files for PHP
php-dba.x86_64 : A database abstraction layer module for PHP applications
php-devel.x86_64 : Files needed for building PHP extensions
php-embedded.x86_64 : PHP library for embedding in applications
php-enchant.x86_64 : Enchant spelling extension for PHP applications
php-fpm.x86_64 : PHP FastCGI Process Manager
php-gd.x86_64 : A module for PHP applications for using the gd graphics library
php-intl.x86_64 : Internationalization extension for PHP applications
php-ldap.x86_64 : A module for PHP applications that use LDAP
php-mbstring.x86_64 : A module for PHP applications which need multi-byte string
: handling
php-mysql.x86_64 : A module for PHP applications that use MySQL databases
php-mysqlnd.x86_64 : A module for PHP applications that use MySQL databases
php-odbc.x86_64 : A module for PHP applications that use ODBC databases
php-pdo.x86_64 : A database access abstraction module for PHP applications
php-pear.noarch : PHP Extension and Application Repository framework
php-pgsql.x86_64 : A PostgreSQL database module for PHP
php-process.x86_64 : Modules for PHP script using system process interfaces
php-pspell.x86_64 : A module for PHP applications for using pspell interfaces
php-recode.x86_64 : A module for PHP applications for using the recode library
php-snmp.x86_64 : A module for PHP applications that query SNMP-managed devices
php-soap.x86_64 : A module for PHP applications that use the SOAP protocol
php-xml.x86_64 : A module for PHP applications which use XML
php-xmlrpc.x86_64 : A module for PHP applications which use the XML-RPC protocol
rrdtool-php.x86_64 : PHP RRDtool bindings
uuid-php.x86_64 : PHP support for Universally Unique Identifier library
php-pecl-memcache.x86_64 : Extension to work with the Memcached caching daemon
Name and summary matches only, use "search all" for everything.
因為我們還需要和MySQL(MariaDB)整合,所以,PHP與MySQL相關的套件,最好也安裝起來,請執行下列指令:
yum -y install php-mysql
yum -y install php-gd php-ldap php-odbc php-pear php-xml php-xmlrpc php-mbstring php-snmp php-soap curl curl-devel
安裝套件的結果如下圖:
安裝完成後,我們重新啟動Apache網站服務。
systemctl restart httpd.service
然後再以剛才寫的info.php網頁檢查安裝完成的套件,如下圖,我們可以看到curl套件已完成安裝,其他套件的安裝,可以在下圖網頁中尋找,就不再貼了。
完成PHP的安裝後,我們以安裝phpMyAdmin這個網頁版MySQL的系統管理工具作為結束。請執行下列指令來進行phpMyAdmin:
yum install phpMyAdmin
但,有錯誤訊息,如下圖黃色框標示:
這是因為目前yum的套件資料庫中沒有phpMyAdmin的安裝資訊存在,我們要更新yum套件資料庫。請執行以下指令來更新yum套件資料庫:
rpm -ivh http://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-2.noarch.rpm
更新過程如下圖:
把yum套件資料庫更新後,重新執行phpMyAdmin的安裝指令:
yum install phpMyAdmin
這回安裝程序順利啟動,安裝的過程與結果,如下圖:
但,在開始執行phpMyAdmin的網頁前,我們先做點小小的修改。執行下列vi指令編輯config.inc.php檔案:
vi /etc/phpMyAdmin/config.inc.php
把下圖中,黃色線標示的那一行中的 ‘cookie’改成 ‘http’。
上圖黃色線的cookie改成http,如下圖:
我們開始執行phpMyAdmin網頁http://simonlamp.cloudapp.net/phpmyadmin,但,跳出下圖所示的錯誤:
這是因為Apache的保護,我們要修改phpMyAdmin網頁的設定,請執行下列vi指令:
vi /etc/httpd/conf.d/phpMyAdmin.conf
然後,把phpMyAdmin.conf的配置修改如下:
[......]
Alias /phpMyAdmin /usr/share/phpMyAdmin
Alias /phpmyadmin /usr/share/phpMyAdmin
#<Directory /usr/share/phpMyAdmin/>
# AddDefaultCharset UTF-8
#
# <IfModule mod_authz_core.c>
# # Apache 2.4
# <RequireAny>
# Require ip 127.0.0.1
# Require ip ::1
# </RequireAny>
# </IfModule>
# <IfModule !mod_authz_core.c>
# # Apache 2.2
# Order Deny,Allow
# Deny from All
# Allow from 127.0.0.1
# Allow from ::1
# </IfModule>
#</Directory>
<Directory /usr/share/phpMyAdmin/>
Options none
AllowOverride Limit
Require all granted
</Directory>
[......]
尋找conf內容,照上述方式加‘#’號予以註解,不執行。
再增加下列敍述:
<Directory /usr/share/phpMyAdmin/>
Options none
AllowOverride Limit
Require all granted
</Directory>
[......]代表還有其他設定,但不用管它們。
編輯好後存檔,再執行http://simonlamp.cloudapp.net/phpmyadmin,這回出現如下圖示:
網頁背後是Apache官方的網頁,不要管它,因為我是先進入http://simonlamp.cloudapp.net/
再進入http://simonlamp.cloudapp.net/phpmyadmin,所以會留下Apache官方網頁。
但,重點在跳出個需要登入的對話窗。
請用MySQL(MariaDB)的登入帳號與密碼來登入,我是用root帳號及之前設定的密碼來進行登入。
輸入的登入訊息正確,就會出現phpMyAdmin的網頁了,如下圖:
在這個網頁,我們可以進行MySQL(MariaDB)資料庫的各種管理工作。
請記得,我是用MariaDB,不是MySQL。
最後,讓我們到Microsoft Azure入口網站的監視頁面去看看這個CentOS 7虛擬機器效能表現。
CPU大約佔用2.5%左右,遠比前兩天試用gnome和xrdp套件時的資源耗用低很多。
把LAMP Server建置完成後,就可以把開發的網站放上去架設網站。
但,怎麼放?怎麼把寫好的PHP檔案上傳?這要啟用FTP服務,這部份,我們明天再討論。
今天就先談到這裏,我們明天見。