iT邦幫忙

DAY 4
0

Open Source與Windows Azure共舞系列 第 4

連線Microsoft Azure的CentOS 7虛擬機器

雖然,Microsoft Azure提供的Linux平台相當完整,但基本上,在Azure上的Linux平台在設置啟動後,還是只有SSH終端機可以用來連線Azure的Linux平台。

昨天我們在設置Linux平台時,在端點設定選擇了SSH、遠端桌面、HTTP和MySQL四個服務,如下圖所示,這是說Microsoft Azure在啟動Linux平台時會自動設置好這四個網路服務的TCP/IP服務埠,不用再另外設定。

亦即,Microsoft Azure會自動配置,把防火牆中相關服務埠予以開放。

但,這不代表Microsoft Azure會在Linux平台中把相關服務所需要的軟體也安裝設定好。

只有SSH這項服務,是Microsoft Azure會自動建置的網路服務,其他遠端桌面及MySQL和提供HTTP服務的Apache或其他Web Service Engine,都要自行安裝處理。

我們可以先測試看看,在Microsoft Azure入口網站主控台上,找到昨天啟用的Linux平台並點選它,如下圖。

然後在上圖下方左邊有個[連接],點一下[連接],這時Azure會要你先下載一個OpenAzure.rdp檔案,要不要下載隨你意思,因為這就是我們常見的遠端桌面程式。

只是OpenAzure.rdp已經把連線資訊都建好,不用再輸入主機名稱什麼的,所以就下載到本機來執行。但,如果要做更多設定,還是使用Windows 7/8的遠端桌面連線程式來執行。

如果不下載OpenAzure.rdp,也可以用Windows 7/8的遠端桌面連線程式。

請不要再問Windows XP的遠端桌面連線程式能不能用了,那是早已被停用的版本囉!

下載完成後,執行OpenAzure.rdp。

出現熟悉的遠端桌面連線程式的驗證問題,就按[是]繼續下去。

好吧!只是驗證了我早先的說明,Microsoft Azure的CentOS只是提供了最基本的安裝映像,這也代表這個Linux平台要能真正派上用場,還有很多路要走。

現在,我們也只能先用SSH終端機來連線Linux平台,最常見的SSH終端機是putty,我們可以到http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html下載。

下載完成,直接執行putty.exe

在[Host Name]輸入Microsoft Azure給你的Linux平台的DNS:OpenAzure.cloudapp.net,然後按[Open]

因為這是新的Linux平台,還沒有驗證資料,所以跳出上圖對話窗,問你要不要接受。按[是]接受且更新驗證碼,或按[否]接受連線但不更新驗證碼,或者[取消]不連線。

我按[是],然後出現了終端機視窗,過幾秒鐘就跳出Linux系統的登入提示,輸入預設的使用者帳號azureuser和密碼,就完成登入了。

Microsoft Azure對Linux平台提供的是相當基本的設置,也就是,要讓這個CentOS 7平台能夠真正拿來使用,還需要對Linux操作與系統管理有足夠的認識。

在Linux平台上有一套很常用來配合遠端桌面連線程式的軟體叫xrdp,在Linux啟用xrdp,就可以用我們熟悉的遠端桌面連線方式連到Linux平台,就如同在Windows環境下有個Linux平台可用一般。

因此,為了要能夠在Microsoft Azure下用遠端桌面連線方式連線Linux平台,我們試看看xrdp的功能如何。

要能夠讓遠端桌面連線程式連到Linux,在Linux平台至少有下列需求:

  • 桌面管理系統,就Linux來說,就是gnome或KDE,我們採用gnome。
  • Vnc服務
  • Xrdp安裝

以及相關的各項設定。

因為Microsoft Azure提供的CentOS 7環境是基礎環境,我們一步一步來進行各各套件安裝。

首先,我們安裝gnome桌面管理系統,在剛才開啟的SSH終端機中,輸入下列指令,請注意,這是給CentOS 7用的指令,其他版本可能不適用:

sudo rpm -Uvh https://dl.fedoraproject.org/pub/epel/7/x86\_64/e/epel-release-7-2.noarch.rpm

sudo rpm -Uvh http://li.nux.ro/download/nux/dextop/el7/x86\_64/nux-dextop-release-0-1.el7.nux.noarch.rpm

sudo vi /etc/yum.repos.d/xrdp.repo

在vi編輯中輸入下列設定值:

[xrdp]

name=xrdp

baseurl=http://li.nux.ro/download/nux/dextop/el7/x86\_64/

enabled=1

gpgcheck=0

然後,存檔。

接下來,再輸入下列指令:

sudo yum clean all

sudo yum groupinstall basic-desktop desktop-platform x11 fonts

sudo yum groupinstall "GNOME Desktop" "Graphical Administration Tools"

sudo ln -sf /lib/systemd/system/runlevel5.target /etc/systemd/system/default.target

到這裏,gnome已經安裝好。

接下來安裝與設定vnc server及xrdp:

sudo yum install xrdp tigervnc-server

然後,我們先設置xrdp。

sudo systemctl start xrdp.service

sudo netstat -antup | grep xrdp

sudo systemctl enable xrdp.service

sudo firewall-cmd --permanent --zone=public --add-port=3389/tcp

sudo firewall-cmd –reload

以上指令執行結果,請參見下圖。

接下來,我們設定vnc server。

sudo cp /lib/systemd/system/vncserver@.service /etc/systemd/system/vncserver@:1.service

sudo vi /etc/systemd/system/vncserver@:1.service

在vi編輯中找到如下所示片段:

[Service]

Type=forking

Clean any existing files in /tmp/.X11-unix environment

ExecStartPre=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'

ExecStart=/sbin/runuser -l <USER> -c "/usr/bin/vncserver %i"

PIDFile=/home/<USER>/.vnc/%H%i.pid

ExecStop=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'

修改成如下片段:

[Service]

Type=forking

Clean any existing files in /tmp/.X11-unix environment

ExecStartPre=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'

ExecStart=/sbin/runuser -l azureuser -c "/usr/bin/vncserver %i -geometry 1600x900"

PIDFile=/home/azureuser/.vnc/%H%i.pid

ExecStop=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'

簡單來說,就是把原來的 “<USER>”改成 “azureuser”,以及在ExecStart開始的這一行後方加上-geometry 1600x900參數。

注意-geometry 1600x900參數中的1600x900是我的筆電(T420s)的解析度,請各位務必調整成您的顯示器的解析度。

把vi編輯結果存檔,執行下列指令:

sudo systemctl daemon-reload

sudo systemctl start vncserver@:1.service

請注意,上述指令中的@:1是指TCP/IP port編號5901,因為vnc是以5900開始的TCP/IP port提供服務,@:1是5901,@:2是5902,依此類推。現在我們啟動vncserver@:1.service就代表是以5901來做為vnc server的連線服務。

然後,我們再執行下列指令,讓vnc server在系統重新開機後會自動啟動。

sudo systemctl enable vncserver@:1.service

完成vnc server的啟動後,建立vnc登入密碼,這是給azureuser使用的。

請注意

執行下列指令,完成azureuser的vnc密碼建置。

vncpasswd

最後,我們再修改xrdp的設定。

sudo vi /etc/xrdp/xrdp.ini

啟動vi編輯器,修改xrdp的設定檔內容。

[xrdp1]

name=sesman-Xvnc

lib=libvnc.so

username=ask

password=ask

ip=127.0.0.1

port=-1

注意最後一行的port=-1。我們改成如下:

[xrdp1]

name=sesman-Xvnc

lib=libvnc.so

username=ask

password=ask

ip=127.0.0.1

port=5901

改成5901的意思是要xrdp應用在TCP/IP port 5901的vnc server。

還記得剛才啟動的vnc server嗎?我們啟動的vncserver@:1.service就是5901。

接下來再重新啟動xrdp服務。

sudo systemctl restart xrdp.service

然後,我們再用遠端桌面連線來試著連線Microsoft Azure上的CentOS 7平台。

這回總算成功連線到CentOS 7的桌面。

今天,我們談到這裏,明天見。


上一篇
在Microsoft Azure建立CentOS 7平台虛擬機器
下一篇
用Microsoft Azure的連接功能(遠端桌面)連線CentOS 7平台
系列文
Open Source與Windows Azure共舞30

尚未有邦友留言

立即登入留言