一、安装CentOS

1.U盘安装的iso文件下载地址,阿里云镜像:https://mirrors.aliyun.com/centos/8.5.2111/isos/x86_64/CentOS-8.5.2111-x86_64-dvd1.iso?spm=a2c6h.25603864.0.0.1c5f53baLjCRy0 2.安装选项界面,软件选择,使用默认选择:“带GUI的服务器”。

二、安装vncserver

为方便安装,直接以root账号登录系统。
以下主要内容转自 。

1. 更新源

在 CentOS 8 中使用 yum 命令安装软件时会出现 “错误:为仓库 ‘appstream’ 下载元数据失败 : Cannot prepare internal mirrorlist: No URLs in mirrorlist“,如下图所示:

centos安装教程 u盘_linux


出现这个错误提示的原因是在2022年1月31日,CentOS 团队从官方镜像中移除 CentOS 8 的所有包。因为 CentOS 8 已于2021年12月31日停止官方服务了,但软件包仍在官方镜像上保留了一段时间。现在他们被转移到 https://vault.centos.org。如果你仍然需要运行 CentOS 8,你可以在 /etc/yum.repos.d 中更新一下源。使用 http://vault.centos.org 代替 http://mirror.centos.org 即可。

打开终端,输入 su 命令切换 root 用户登录,然后使用下面的命令更新源:

sed -i -e "s|mirrorlist=|#mirrorlist=|g" /etc/yum.repos.d/CentOS-*
sed -i -e "s|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g" /etc/yum.repos.d/CentOS-*
2.安装"Server with GUI",开启vnc服务必须让服务器有图形界面的支持。

虽然安装centos时默认是“带GUI的服务器”,启动后也有图形界面,但仍然需要执行下面这一步。并且必须先执行这一步

[root@test18 ~]# yum groupinstall "Server with GUI"
3. 配置环境变量DISPLAY,本例选择屏幕号:1,并使其生效

经测试,不执行这一步可以。

[root@test18 ~]# vim .bashrc
export DISPLAY=:1
[root@test18 ~]# source .bashrc
4.安装vncserver
[root@test18 ~]# yum install tigervnc-server tigervnc
5.配置vncserver的用户及其使用的屏幕号

编辑/etc/tigervnc/vncserver.users,本例使用root访问(根据实际情况使用账户,用root并不是个好的选择),屏幕号与之前保持一致:1

[root@test18 ~]# vim /etc/tigervnc/vncserver.users
:1=root
6.配置vncserver默认选项

编辑/etc/tigervnc/vncserver-config-defaults。
注意session选项,应该匹配/usr/share/xsessions/目录下的内容,比如有/usr/share/xsessions/gnome.desktop文件,那么才能写session=gnome。详情可以man 8 vncsession查看手册。

[root@test18 ~]# ls /usr/share/xsessions/
com.redhat.Kiosk.desktop  gnome-custom-session.desktop  gnome-xorg.desktop  xinit-compat.desktop
gnome-classic.desktop     gnome.desktop                 openbox.desktop

[root@test18 ~]# vim /etc/tigervnc/vncserver-config-defaults
session=gnome
securitytypes=vncauth,tlsvnc
desktop=sandbox
geometry=1366x768
alwaysshared
7.配置vnc密码
[root@test18 ~]# vncpasswd
Password:
Verify:
Would you like to enter a view-only password (y/n)? n
A view-only password is not used
8.systemd单元复制

在root home目录创建相应目录.config/systemd/user/,把vncserver的systemd单元复制过来。注意命名和之前使用的屏幕号一致:1

[root@test18 ~]# mkdir -p .config/systemd/user/
[root@test18 ~]# cp /lib/systemd/system/vncserver@.service .config/systemd/user/vncserver@:1.service
9.加载新的systemd单元

注意–user选项,应该能看到Loaded是我们配置的vncserver的systemd单元

[root@test18 ~]# systemctl --user daemon-reload
[root@test18 ~]# systemctl --user status -l vncserver@\:1.service
● vncserver@:1.service - Remote desktop service (VNC)
   Loaded: loaded (/root/.config/systemd/user/vncserver@:1.service; disabled; vendor preset: enabled)
   Active: inactive (dead)
10.启动vncserver服务

注意–user选项,如果看到Active,说明服务启动。如果看到类似如下报错,那么参看下一步可选项,配置selinux上下文。

[root@test18 ~]# systemctl --user start vncserver@\:1.service
[root@test18 ~]# systemctl --user status -l vncserver@\:1.service
● vncserver@:1.service - Remote desktop service (VNC)
   Loaded: loaded (/root/.config/systemd/user/vncserver@:1.service; disabled; vendor preset: enabled)
   Active: inactive (dead)

Mar 14 12:15:48 test18.abcd.com vncsession[1846]: vncsession: vncserver exited with status=71
Mar 14 12:15:48 test18.abcd.com vncsession[1846]: pam_unix(tigervnc:session): session closed for user root
Mar 14 12:15:48 test18.abcd.com systemd[1769]: vncserver@:1.service: Succeeded.
Mar 14 12:16:23 test18.abcd.com systemd[1769]: Starting Remote desktop service (VNC)...
Mar 14 12:16:23 test18.abcd.com vncsession[1892]: pam_systemd(tigervnc:session): Cannot create session: Already running in a session or user slice
Mar 14 12:16:23 test18.abcd.com vncsession[1892]: pam_unix(tigervnc:session): session opened for user root by (uid=0)
Mar 14 12:16:23 test18.abcd.com systemd[1769]: Started Remote desktop service (VNC).
Mar 14 12:16:23 test18.abcd.com vncsession[1892]: vncsession: vncserver exited with status=71
Mar 14 12:16:23 test18.abcd.com vncsession[1892]: pam_unix(tigervnc:session): session closed for user root
Mar 14 12:16:23 test18.abcd.com systemd[1769]: vncserver@:1.service: Succeeded.

我在启动时遇到桌面崩溃的问题,崩溃界面如下,点击注销,继续完成防火墙和开机自启的配置后,重启服务器即可远程正常登录。崩溃的具体原因不清楚,估计是配置完成后只能通过远程方式登录,本机无法登录了。注意:在重启之前,建议完成防火墙和开机自启的配置,否则重启后无法进入桌面。

centos安装教程 u盘_desktop_02

11.可选步骤,配置selinux。

办法一、禁用selinux,禁用后重启一下服务器即可。
办法二、配置.vnc目录的selinux上下文。先查询一下,发现家目录下.vnc需要xdm_home_t 。使用semanage fcontext -a -t xdm_home_t "/root/.vnc(/.*)?"加上这个上下文。使用restorecon -Rv .vnc/使其生效。再启动vnc服务就Active了!

[root@test18 ~]# semanage fcontext -l | grep vnc
.vnc(/.*)?                                         all files          system_u:object_r:xdm_home_t:s0
/home/[^/]+/\.vnc(/.*)?                            all files          unconfined_u:object_r:xdm_home_t:s0
/home/\.vnc(/.*)?                                  all files          system_u:object_r:xdm_home_t:s0
/usr/bin/Xvnc                                      regular file       system_u:object_r:xserver_exec_t:s0
/usr/bin/nova-novncproxy                           regular file       system_u:object_r:nova_exec_t:s0
/usr/bin/nova-vncproxy                             regular file       system_u:object_r:nova_exec_t:s0
/usr/bin/nova-xvpvncproxy                          regular file       system_u:object_r:nova_exec_t:s0
/usr/bin/x11vnc                                    regular file       system_u:object_r:xserver_exec_t:s0
/usr/libexec/vncsession-start                      regular file       system_u:object_r:vnc_session_exec_t:s0
/usr/sbin/vncsession                               regular file       system_u:object_r:vnc_session_exec_t:s0
/var/run/vncsession-:[0-9]*\.pid                   regular file       system_u:object_r:vnc_session_var_run_t:s0


[root@test18 ~]# semanage fcontext -a -t xdm_home_t "/root/.vnc(/.*)?"
[root@test18 ~]# restorecon -Rv .vnc/
Relabeled /root/.vnc from system_u:object_r:admin_home_t:s0 to system_u:object_r:xdm_home_t:s0
Relabeled /root/.vnc/passwd from system_u:object_r:admin_home_t:s0 to system_u:object_r:xdm_home_t:s0
Relabeled /root/.vnc/test18.abcd.com:1.log from system_u:object_r:admin_home_t:s0 to system_u:object_r:xdm_home_t:s0

[root@test18 ~]# systemctl --user start vncserver@\:1.service
[root@test18 ~]# systemctl --user status -l vncserver@\:1.service
● vncserver@:1.service - Remote desktop service (VNC)
   Loaded: loaded (/root/.config/systemd/user/vncserver@:1.service; disabled; vendor preset: enabled)
   Active: active (running) since Sun 2021-03-14 20:48:25 CST; 1s ago
12.配置防火墙vncserver服务入栈规则,一定要reload生效,查看允许的服务有vnc-server
[root@test18 ~]# firewall-cmd --permanent --add-service=vnc-server
[root@test18 ~]# firewall-cmd --reload
[root@test18 ~]# firewall-cmd --list-all
13.启动服务,设置开机自启
[root@test1 ~]# sudo systemctl enable --now vncserver@\:1.service

三、安装UltraVNC Viewer

下载地址: https://www.uvnc.com/downloads/ultravnc.html

centos安装教程 u盘_运维_03


输入主机名称:序号,密码,连接进入桌面

centos安装教程 u盘_centos安装教程 u盘_04

centos安装教程 u盘_运维_05

参考文档

  1. 在 CentOS 8 中安装软件出现 “错误:为仓库 ‘appstream’ 下载元数据失败” 的解决办法
  2. 配置VNC
  3. 修改.bashrc文件导致的登录root闪退问题。