天天看點

linux centos 安裝GNOME Desktop 桌面和 vnc遠端-虛拟化KVM

#!/bin/bash
repo="/etc/yum.repos.d/epel-7.repo"
if [ ! -e $repo ]; then                 # -e 判斷檔案存在;參考:Shell if 條件判斷檔案或目錄
yum install -y wget
cd /etc/yum.repos.d/
mkdir bak
mv * bak
wget http://mirrors.aliyun.com/repo/Centos-7.repo
wget http://mirrors.aliyun.com/repo/epel-7.repo
                                        # 移動兩個檔案到 目錄
#wget http://mirrors.163.com/.help/CentOS7-Base-163.repo
#sed -i  's/$releasever/7/g' /etc/yum.repos.d/CentOS-Base.repo
                                        # yum源沒有對應版本包比對;修改yum為centos7
yum clean all                           # 清除原有緩存
yum makecache                           # 生成新的緩存
                                        # make cache [meɪk]  [kaʃ]  制作 緩存{ka xi}
yum  list                               # 校驗yum
cd
else 
echo "yum已經切換"
fi

###############  安裝 vnc ##############

yum groupinstall -y "GNOME Desktop"     # 安裝GNOME Desktop圖形桌面服務
yum install -y tigervnc-server          # 安裝vnc
systemctl get-default                   # 檢視系統運作模式
systemctl set-default graphical.target  # 切換到桌面模式運作
init 5                                  # 啟動桌面模式

ln -sf /lib/systemd/system/graphical.target /etc/systemd/system/default.target
                                        # 設定桌面運作模式為預設啟動模式
cp /lib/systemd/system/[email protected] /etc/systemd/system/vncserver@:1.service
                                        # 設定vnc用systemctl來管理(第一個使用者vncserver@:1.service,第二個使用者vncserver@:2.service,其他以此類推)
vncset="/etc/systemd/system/vncserver@:1.service.back"          
if [ ! -e  $vncset ]; then
echo "正在備份檔案" ; cp /etc/systemd/system/vncserver@:1.service /etc/systemd/system/vncserver@:1.service.back
else
echo "備份檔案存在"
fi
cat /dev/null > /etc/systemd/system/vncserver@:1.service										
cat > /etc/systemd/system/vncserver@:1.service << "EOF"
[Unit]
Description=Remote desktop service (VNC)
After=syslog.target network.target

[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=/usr/sbin/runuser -l root -c "/usr/bin/vncserver %i"
PIDFile=/root/.vnc/%H%i.pid
ExecStop=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'

[Install]
WantedBy=multi-user.target
EOF
										# 修改vnc使用者為root(其他系統使用者也可以這樣改)
										
										
										
										
systemctl daemon-reload					# 重新整理systemctl
echo "設定vnc密碼(第二個使用者修改密碼,vncpasswd user2,其他以此類推)"
vncpasswd


vncset="/etc/sysconfig/vncservers"			
if [ ! -e  $vncset ]; then
echo "正在備份檔案" ; cp /etc/sysconfig/vncservers /etc/sysconfig/vncservers.back
else
echo "備份檔案存在"
fi
cat /dev/null > /etc/sysconfig/vncservers
cat > /etc/sysconfig/vncservers <<"EOF"
VNCSERVERS="1:root"
VNCSERVERARGS[1]="-geometry 1024x768 -BlacklistTimeout 0"

EOF
# 修改vnc黑名單限制,否則會出現vnc用戶端連接配接不上的情況(/etc/sysconfig/vncservers)

firewall-cmd --zone=public --add-port=5901/tcp --permanent
                                        # 防火牆放行端口(vnc端口第一個使用者5901,建立第二個使用者5902,其他以此類推)
firewall-cmd --add-service vnc-server   # 防火牆放行vnc服務    
firewall-cmd --reload                   # 放行好端口和服務,重新開機防火牆才能生效
firewall-cmd --list-port                # 檢視端口是否放行成功
systemctl daemon-reload                 # 重新整理
systemctl start vncserver@:1.service    # 啟動vnc
#啟動,關閉,重新開機vnc
#systemctl start vncserver@:1.service       #啟動
#systemctl stop vncserver@:1.service        #關閉
#systemctl restart vncserver@:1.service     #重新開機
           

繼續閱讀