Tôi đang thực hiện một dự án cho một khách hàng muốn truy cập một số ứng dụng Windows thông qua trang web của tôi bằng noVNC, điều này đã cho tôi ý tưởng thiết lập một máy chủ có nhiều người dùng.
Tôi đã cài đặt máy chủ TigerVNC trên VPS CentOS 7 của mình, hoạt động tốt khi một người dùng được kết nối, nhưng khi người dùng thứ hai kết nối, họ sẽ chỉ nhận được màn hình đen vì có vẻ như gnome sẽ không khởi động lần thứ hai người dùng.
Nếu tôi, ví dụ, chạy vncservice@:1
tất cả đều hoạt động tốt và người dùng sẽ đăng nhập không có vấn đề gì nhưng khi vncservice@:2
bắt đầu, nó sẽ không khởi động gnome và anh ấy/cô ấy sẽ nhận được màn hình đen chỉ với một con trỏ. Khi nào vncservice@:2
bắt đầu trước, người dùng đó sẽ được đưa vào gnome nhưng vncservice@:1
sẽ không thấy máy tính để bàn của họ, v.v.
Đây là những gì thiết lập của tôi trông giống như:
[Người dùng 1 và 2 ~/.vnc/xstartup]
#!/bin/sh
bỏ đặt SESSION_MANAGER
bỏ đặt DBUS_SESSION_BUS_ADDRESS
/etc/X11/xinit/xinitrc
# Giả sử Gnome hoặc KDE sẽ được khởi động theo mặc định khi cài đặt
# Chúng tôi muốn tự động hủy phiên trong trường hợp này khi người dùng đăng xuất. Trong trường hợp bạn sửa đổi
# /etc/X11/xinit/Xclients hoặc ~/.Xclients để đạt được kết quả khác, thì bạn nên
# chịu trách nhiệm sửa đổi mã bên dưới để tránh phiên của bạn sẽ tự động bị hủy
ngủ 60
nếu [ -e /usr/bin/gnome-session -o -e /usr/bin/startkde ]; sau đó
vncserver -kill $ HIỂN THỊ
killall -u $USER
fi
[/etc/X11/xinit/xinitrc]
#!/bin/sh
# Nguồn bắt buộc xinitrc-common, là mã chung được chia sẻ giữa
# Tập lệnh Xsession và xinitrc đã được loại bỏ để tránh trùng lặp
. /etc/X11/xinit/xinitrc-common
# Người dùng có thể có ứng dụng khách riêng mà họ muốn chạy. Nếu họ không,
# trở lại mặc định hệ thống.
nếu [ -f $HOME/.Xclients ]; sau đó
exec $CK_XINIT_SESSION $SSH_AGENT $HOME/.Xclients || \
exec $CK_XINIT_SESSION $SSH_AGENT $HOME/.Xclients
yêu tinh [ -f /etc/X11/xinit/Xclients ]; sau đó
exec $CK_XINIT_SESSION $SSH_AGENT /etc/X11/xinit/Xclients || \
exec $CK_XINIT_SESSION $SSH_AGENT /etc/X11/xinit/Xclients
khác
# Cài đặt không an toàn. Mặc dù chúng ta không bao giờ nên đến đây
# (chúng tôi cũng cung cấp các dự phòng trong Xclients) điều đó không hại gì.
[ -x /usr/bin/xsetroot ] && /usr/bin/xsetroot -solid '#222E45'
[ -x /usr/bin/xclock ] && /usr/bin/xclock -geometry 100x100-5+5 &
[ -x /usr/bin/xterm ] && xterm -geometry 80x50-50+150 &
[ -x /usr/bin/twm ] && /usr/bin/twm
fi
[vncserver@:1 và vncserver@:2, được thay thế bằng tên người dùng thực]
[Đơn vị]
Mô tả=Dịch vụ máy tính từ xa (VNC)
Sau=syslog.mục tiêu mạng.mục tiêu
[Dịch vụ]
Loại = rẽ nhánh
Người dùng=<USERNAME>
Nhóm=<TÊN NGƯỜI DÙNG>
ExecStartPre=-/usr/bin/vncserver -kill %i
ExecStart=/usr/bin/vncserver %i
PIDFile=/home/<USERNAME>/.vnc/%H%i.pid
ExecStop=-/usr/bin/vncserver -kill %i
[Cài đặt]
WantedBy=multi-user.target
[Nhật ký VNC của người dùng thứ hai]
[root@.... ~]# systemctl status vncserver@:5
â vncserver@:5.service - Dịch vụ máy tính từ xa (VNC)
Đã tải: đã tải (/etc/systemd/system/vncserver@:5.service; bị vô hiệu hóa; cài đặt sẵn của nhà cung cấp: bị vô hiệu hóa)
Đang hoạt động: đang hoạt động (đang chạy) kể từ za 2021-07-24 19:04:54 CEST; 59s trước
Quá trình: 25990 ExecStart=/usr/bin/vncserver %i (code=exited, status=0/SUCCESS)
Quá trình: 25981 ExecStartPre=/usr/bin/vncserver -kill %i (code=exited, status=2)
PID chính: 25997 (Xvnc)
Nhóm C: /system.slice/system-vncserver.slice/vncserver@:5.service
ââ25997 /usr/bin/Xvnc :5 -auth /home/AHtYezzDXegQScyu/.Xmasterity -desktop <HOSTNAME>:5 (AHtYezzDXegQScyu) -danh mục fp:/etc/X11/fontpath.d -geometry 1024x768 - pn -rfbauth /home/AHtYezzDXegQScyu/.vnc/passwd -rfbport 5905 -rfbwait 30000
ââ26006 /bin/sh /home/AHtYezzDXegQScyu/.vnc/xstartup
ââ26018 dbus-launch --sh-syntax --exit-with-session
ââ26019 /usr/bin/dbus-daemon --fork --print-pid 5 --print-address 7 --session
ââ26053 /usr/libexec/imsettings-daemon
ââ26057 /usr/libexec/gvfsd
ââ26062 /usr/libexec/gvfsd-fuse /home/AHtYezzDXegQScyu/.gvfs -f -o big_writes
ââ26126 /usr/libexec/at-spi-bus-launcher
ââ26131 /usr/bin/dbus-daemon --config-file=/usr/share/defaults/at-spi2/accessibility.conf --nofork --print-address 3
ââ26135 /usr/libexec/at-spi2-registryd --use-gnome-session
ââ26158 /usr/bin/gnome-keyring-daemon --start --components=ssh
ââ26241 /usr/libexec/xdg-permission-store
ââ26246 /usr/libexec/gnome-shell-calendar-server
ââ26251 /usr/libexec/evolution-source-registry
ââ26258 /usr/libexec/goa-daemon
ââ26269 /usr/libexec/goa-identity-service
ââ26275 /usr/libexec/mission-control-5
ââ26286 /usr/libexec/gvfs-udisks2-volume-monitor
ââ26293 /usr/libexec/gvfs-mtp-volume-monitor
ââ26299 /usr/libexec/gvfs-goa-volume-monitor
ââ26305 /usr/libexec/gvfs-gphoto2-volume-monitor
ââ26310 /usr/bin/dbus-daemon --fork --print-pid 5 --print-address 7 --session
ââ26311 /usr/libexec/gvfs-afc-volume-monitor
ââ26411 /usr/libexec/gsd-print-notifications
ââ26413 /usr/libexec/gsd-rfkill
ââ26418 /usr/libexec/gsd-screensaver-proxy
ââ26454 ngủ 60
ââ26458 /usr/libexec/evolution-calendar-factory
ngày 24 tháng 7 19:05:22 <HOSTNAME> gnome-session-binary[26007]: CẢNH BÁO: Không thể khởi động ứng dụng: Không thể khởi động ứng dụng: Không thể rẽ nhánh (Tài nguyên tạm thời không khả dụng)
ngày 24 tháng 7 19:05:22 <HOSTNAME> gsd-print-notif[26411]: Không thể thực thi trình xử lý system-config-printer-udev: Không thể rẽ nhánh (Tài nguyên tạm thời không khả dụng)
ngày 24 tháng 7 19:05:22 <HOSTNAME> gnome-session-binary[26007]: CẢNH BÁO: Ứng dụng 'org.gnome.SettingsDaemon.Power.desktop' bị giết bởi tín hiệu 5
ngày 24 tháng 7 19:05:22 <HOSTNAME> gnome-session[26007]: gnome-session-binary[26007]: CẢNH BÁO: Ứng dụng 'org.gnome.SettingsDaemon.Power.desktop' bị giết bởi tín hiệu 5
ngày 24 tháng 7 19:05:22 <HOSTNAME> gnome-session-binary[26007]: GLib-CẢNH BÁO: GError được đặt ở đầu GError trước đó hoặc bộ nhớ chưa được khởi tạo.
Điều này cho biết có lỗi trong mã của ai đó. Bạn phải đảm bảo lỗi là NULL trước khi nó được đặt.
Thông báo lỗi ghi đè là: Không thể khởi động ứng dụng: Không thể rẽ nhánh (Tài nguyên tạm thời không khả dụng)...
ngày 24 tháng 7 19:05:22 <HOSTNAME> gnome-session[26007]: gnome-session-binary[26007]: GLib-CẢNH BÁO: GError được đặt ở đầu GError trước đó hoặc bộ nhớ chưa được khởi tạo.
ngày 24 tháng 7 19:05:22 <HOSTNAME> gnome-session[26007]: Điều này cho biết có lỗi trong mã của ai đó. Bạn phải đảm bảo lỗi là NULL trước khi nó được đặt.
ngày 24 tháng 7 19:05:22 <HOSTNAME> gnome-session[26007]: Thông báo lỗi ghi đè là: Không thể khởi động ứng dụng: Không thể rẽ nhánh (Tài nguyên tạm thời không khả dụng)
ngày 24 tháng 7 19:05:22 <HOSTNAME> sự tiến hóa-calen[26465]: tạo chủ đề 'gdbus': Lỗi tạo chủ đề: Tài nguyên tạm thời không khả dụng
ngày 24 tháng 7 19:05:47 <HOSTNAME> gnome-shell-cal[26246]: Không thể tải nguồn 'sinh nhật': Đã hết thời gian chờ
[/etc/X11/xinit/Xclient]
#!/bin/bash
GSESSION="$(type -p gnome-session)"
STARTKDE="$(loại -p startkde)"
# kiểm tra xem người dùng có máy tính để bàn ưa thích không
ƯU ĐÃI=
nếu [ -f /etc/sysconfig/desktop ]; sau đó
. /etc/sysconfig/máy tính để bàn
nếu [ "$DESKTOP" = "Gnome" ]; sau đó
PREFERRED="$GSESSION"
yêu tinh [ "$DESKTOP" = "KDE" ]; sau đó
PREFERRED="$STARTKDE"
fi
fi
nếu [ -n "$PREFERRED" ]; sau đó
exec "$PREFERRED"
fi
# bây giờ nếu chúng ta có thể đến đây, hoặc là không có tệp máy tính để bàn nào,
# hoặc máy tính để bàn được yêu cầu chưa được cài đặt.
nếu [ -n "$GSESSION" -a -f /usr/share/xsessions/gnome.desktop ]; sau đó
# theo mặc định, chúng tôi chạy GNOME.
exec "$GSESSION" --session=gnome
yêu tinh [ -n "$STARTKDE" ]; sau đó
# nếu GNOME chưa được cài đặt, hãy thử KDE.
thực thi "$STARTKDE"
fi
# Chúng ta cũng nên hỗ trợ tập lệnh /etc/X11/xinit/Xclients.d
XCLIENTS_D=/etc/X11/xinit/Xclients.d
nếu [ "$#" -eq 1 ] && [ -x "$XCLIENTS_D/Xclients.$1.sh" ]; sau đó
exec -l $SHELL -c "$SSH_AGENT $XCLIENTS_D/Xclients.$1.sh"
fi
# Không an toàn.
# các tệp này bị TheNextLevel bỏ lại.
rm -f $HOME/Xrootenv.0
# Argh! Không có gì tốt được cài đặt. Rơi trở lại twm
{
# trời ạ, cả fvwm95 và fvwm2 đều không có;
# quay trở lại cài đặt an toàn dự phòng
[ -x /usr/bin/xsetroot ] && /usr/bin/xsetroot -solid '#222E45'
nếu [ -x /usr/bin/xclock ] ; sau đó
/usr/bin/xclock -hình học 100x100-5+5 &
fi
nếu [ -x /usr/bin/xterm ] ; sau đó
/usr/bin/xterm -hình học 80x50-50+150 &
fi
nếu [ -x /usr/bin/firefox -a -f /usr/share/doc/HTML/index.html ]; sau đó
/usr/bin/firefox /usr/share/doc/HTML/index.html &
fi
nếu [ -x /usr/bin/twm ] ; sau đó
thực thi/usr/bin/twm
fi
}
Điều ngu ngốc là, sau khi cố gắng bắt đầu cái thứ hai vncserver
khoảng 50 lần, nó thường hoạt động một lần, khi tôi dừng và khởi động lại dịch vụ, nó sẽ không hiển thị lại bất cứ thứ gì, ngoại trừ con trỏ chuột.
Còn rất nhiều bộ nhớ trống (khoảng 5 hợp đồng biểu diễn), cũng còn rất nhiều dung lượng lưu trữ (khoảng 100 hợp đồng biểu diễn). Khi tôi chỉnh sửa ~/.vnc/xstartup
chỉ bao gồm một trình quản lý tệp, nó hoạt động tốt mọi lúc, cố gắng chạy một phiên cho nhiều người dùng dường như là một vấn đề.
Cảm ơn bạn đã đọc tất cả những điều này, tôi đã mất vô số thời gian để cố gắng gỡ lỗi này mà không có bất kỳ cải tiến (chính) nào.
CẬP NHẬT 1:
Sau nhiều giờ mày mò, tôi vẫn không làm cho gnome hoạt động. Thời điểm tuyệt vọng kêu gọi các biện pháp tuyệt vọng, vì vậy cuối cùng tôi đã cài đặt Xfce và làm cho nó đẹp hơn với một chủ đề đẹp mắt và một gói biểu tượng. Nó chỉ hoạt động sau khi tôi cài đặt nó. Tôi đã xóa tất cả các tham chiếu gnome khỏi xstartup
tập tin và thêm vào startxfce4
.