雖然,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平台至少有下列需求:
以及相關的各項設定。
因為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
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
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的桌面。
今天,我們談到這裏,明天見。