• 注意: 图形化桌面可能会显著降低服务器的性能,如果安装不当可能会导致操作系统无法正常启动。在进行以下操作之前,建议先对实例创建手工快照备份,以备发生异常时能回滚恢复。
  • 为了更高的安全性,建议逐渐放弃VNC方式,转用使用密钥对的Workbench方式登录或配置远程服务器实例。
  • 作者是以云服务及Linux初学者的角色开始实践,行文中如有不当或错误之处,欢迎批评指正。

操作前的准备

设置操作系统

建议在进行本文所述所有操作之前,不要部署项目或进行其他工作。我们是从“0”开始的。有1吗

  • OS版本:CentOS 8.0 64bit
  • 设置root用户及密码

设置安全组并登录

  • 在云服务控制台中找到安全组选项,并放行80/80、5900/5910两组端口接入
  • 在云服务控制台中设置要操作的实例的远程连接密码,并牢记
  • 使用密码在云服务控制台中远程登录到实例

更改yum源至Aliyun镜像源

  • 先备份初始源
    mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
  • 下载新的CentOS-Base.repo/etc/yum.repos.d/
    wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-8.repo
    或者
    curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-8.repo
    备注: 其他CentOS版本只需要在URL对应位置更改大版本号即可
  • 运行yum makecache生成缓存
    备注: 非阿里云ECS用户会出现Couldn't resolve host 'mirrors.cloud.aliyuncs.com' 信息,不影响使用。可以修改相关配置:
    sed -i -e '/mirrors.cloud.aliyuncs.com/d' -e '/mirrors.aliyuncs.com/d' /etc/yum.repos.d/CentOS-Base.repo

安装GUI界面并设置用户

更新系统及各类组件

yum update -y

安装GUI软件包组

yum groupinstall "Server with GUI" -y
我们将要安装的GNOME desktop是Server with GUI软件包组的一部分。
安装完成后,如果要在云服务控制台的VNC远程连接方式中默认使用GUI界面,就需要使用如下命令:
systemctl set-default graphical
当终端显示

1
2
Removed /etc/systemd/system/default.target.  
Created symlink /etc/systemd/system/default.target → /usr/lib/systemd/system/graphical.target.

就表明下次使用云服务控制台的VNC远程连接登录到服务器后,默认使用GUI界面而不是命令行。

  • 重启
    reboot
  • 在云服务管理控制台切换到VNC远程方式,使用root身份登录
  • 切换运行级
    init 5
  • 重新以root用户登录,至此GUI界面安装完毕

创建新用户

  • 创建用户,设置用户名,后文用USERNAME代指
    adduser *USERNAME*
  • 设置用户密码
    passwd *USERNAME*
    按照要求输入密码
  • 给用户添加超级管理员权限
    visudo
    打开编辑器后,在Allow root to run any commands anywhere项目下,新增
    *USERNAME* ALL=(ALL) ALL
    条目,为USERNAME添加sudo权限。
  • 这里建议直接使用图形界面模式,在GUI的用户管理中添加一个管理员账户。

附:为GUI添加中文支持

  • 安装中文语言包
    yum install -y langpacks-zh_CN
  • 检查已安装的语言
    locale -a
    如出现zh_CN等字样即证明已成功安装中文包
  • 添加中文输入法
    yum install -y ibus ibus-libpinyin
  • 操作完成后建议重启
    reboot
  • 命令行的中文支持
    LC_ALL=zh_CN.utf8
  • GUI的中文支持
    重启后在GUI界面下进入Settings,将Region&Language的对应项目改成中文,系统可能要求注销账户并再登录,此时可以将标准文件夹更新到中文。

安装和配置VNC服务器

修改显示管理器

由于CentOS 8采用Wayland作为GNOME的默认显示管理器(GDM),并且未配置用于处理X.org等远程渲染的API,所以我们改用GNOME桌面的xorg处理通过VNC进行的远程桌面会话请求:
vim /etc/gdm/custom.cong
在vim编辑器中,取消对WaylandEnable=false的注释(通常在第五行),vim的用法不作详细介绍

安装VNC服务端

  • 在这里,使用TigerVMC服务器:
    yum install -y tigervnc-server tigervnc-server-module
  • 设置VNC密码
    vncpasswd
    建议设置8位长度的密码并牢记,vncserver会询问是否添加一个view-only的密码,这里选择否n
  • 配置VNC服务端文件
    vim /etc/systemd/system/vncserver@.service
    修改以下内容:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    [Unit]
    Description=Remote Desktop VNC Service
    After=syslog.target network.target

    [Service]
    Type=forking
    WorkingDirectory=/home/*USERNAME*
    User=*USERNAME*
    Group=*USERNAME*

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

    [Install]
    WantedBy=multi-user.target

注意:将USERNAME替换为新建立的用户名。默认情况下,VNC 服务器在 tcp 端口 5900+n 上监听,其中 n 是显示端口号,如果显示端口号为 “1”,那么 VNC 服务器将在 TCP 端口 5901 上监听其请求。

启动VNC服务并允许通过端口

  • 将显示端口号设置为“1”,因此使用以下命令在显示端口号“1”上启动并启用VNC服务:
    1
    2
    3
    systemctl daemon-reload
    systemctl start vncserver@:1.service
    systemctl enable vncserver@:1.service
  • 使用netstat命令来验证VNC服务器是否开始监听端口 5901 上的请求:
    netstat -tunlp | grep 5901
    如果有5901端口相关的项目,则证明已经开始监听
  • 使用以下命令在系统防火墙中允许VNC服务器端口“5901”:
    1
    2
    firewall-cmd --permanent --add-port=5901/tcp
    firewall-cmd --reload
    备注:阿里云服务器初始情况下没有开启防火墙,通过systemctl start firewalld开启防火墙,通过systemctl stop firewalld来关闭。

连接到远程桌面会话

在本地计算机上打开VNCViewer,输入服务器公网IP地址和端口号,键入设置的VNC密码,点击连接即可。
VNCViewer可在这里下载:VNCViewer

至此,我们在CentOS 8远程服务器上安装了GUI,并可通过VNC远程连接到它。