Lucrez la un proiect pentru un client care dorește să acceseze unele aplicații Windows prin site-ul meu folosind noVNC, care mi-a dat o idee pentru a configura un server cu mai mulți utilizatori.
Am instalat TigerVNC-server pe VPS-ul meu CentOS 7, care funcționează bine când un utilizator este conectat, dar când al doilea utilizator se conectează, el/ea va primi doar un ecran negru, deoarece se pare că gnome nu va porni pentru al doilea. utilizator.
Dacă eu, de exemplu, rulez vncservice@:1
totul funcționează bine și utilizatorul va fi autentificat fără nicio problemă, dar când vncservice@:2
pornește, nu va porni gnome și el/ea va primi un ecran negru cu doar un cursor. Când vncservice@:2
începe primul, acel utilizator va fi lansat în gnome dar vncservice@:1
nu le va vedea desktopul etc. etc.
Iată cum arată configurația mea:
[Utilizatorul 1 și 2 ~/.vnc/xstartup]
#!/bin/sh
dezactivați SESSION_MANAGER
dezactivați DBUS_SESSION_BUS_ADDRESS
/etc/X11/xinit/xinitrc
# Să presupunem că fie Gnome, fie KDE vor fi pornite implicit când sunt instalate
# Dorim să oprim sesiunea automat în acest caz când utilizatorul se deconectează. În cazul în care modificați
# /etc/X11/xinit/Xclients sau ~/.Xclients pentru a obține un rezultat diferit, atunci ar trebui să
# fii responsabil să modifici codul de mai jos pentru a evita ca sesiunea ta să fie oprită automat
dormi 60
if [ -e /usr/bin/gnome-session -o -e /usr/bin/startkde ]; atunci
vncserver -kill $DISPLAY
killall -u $USER
fi
[/etc/X11/xinit/xinitrc]
#!/bin/sh
# Obligatoriu sursă xinitrc-common, care este cod comun partajat între
# Scripturile Xsession și xinitrc care au fost luate în considerare pentru a evita duplicarea
. /etc/X11/xinit/xinitrc-common
# Utilizatorul poate avea propriii clienți pe care doresc să-i ruleze. Dacă nu,
# reveniți la valorile implicite ale sistemului.
if [ -f $HOME/.Xclients ]; atunci
exec $CK_XINIT_SESSION $SSH_AGENT $HOME/.Xclients || \
exec $CK_XINIT_SESSION $SSH_AGENT $HOME/.Xclients
elif [ -f /etc/X11/xinit/Xclients ]; atunci
exec $CK_XINIT_SESSION $SSH_AGENT /etc/X11/xinit/Xclients || \
exec $CK_XINIT_SESSION $SSH_AGENT /etc/X11/xinit/Xclients
altfel
# Setări de siguranță. Deși nu ar trebui să ajungem niciodată aici
# (oferim alternative și în Xclients) nu poate strica.
[ -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 și vncserver@:2, este înlocuit cu numele de utilizator actual]
[Unitate]
Descriere=Serviciu desktop la distanță (VNC)
După=syslog.target network.target
[Serviciu]
Tip = bifurcare
Utilizator=<USERNAME>
Group=<USERNAME>
ExecStartPre=-/usr/bin/vncserver -kill %i
ExecStart=/usr/bin/vncserver %i
PIDFile=/home/<USERNAME>/.vnc/%H%i.pid
ExecStop=-/usr/bin/vncserver -kill %i
[Instalare]
WantedBy=multi-user.target
[Al doilea jurnal VNC utilizator]
[root@.... ~]# systemctl status vncserver@:5
â vncserver@:5.service - Serviciu desktop la distanță (VNC)
Încărcat: încărcat (/etc/systemd/system/vncserver@:5.service; dezactivat; prestabilit furnizor: dezactivat)
Activ: activ (în alergare) din 2021-07-24 19:04:54 CEST; acum 59 de ani
Proces: 25990 ExecStart=/usr/bin/vncserver %i (cod=exit, status=0/SUCCESS)
Proces: 25981 ExecStartPre=/usr/bin/vncserver -kill %i (cod=ieșit, stare=2)
PID principal: 25997 (Xvnc)
CGroup: /system.slice/system-vncserver.slice/vncserver@:5.service
ââ25997 /usr/bin/Xvnc :5 -auth /home/AHtYezzDXegQScyu/.Xauthority -desktop <HOSTNAME>:5 (AHtYezzDXegQScyu) -fp catalog:/etc/X11/fontpath.d -geometry.d -geometry 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 somn 60
ââ26458 /usr/libexec/evolution-calendar-factory
24 iul 19:05:22 <HOSTNAME> gnome-session-binary[26007]: AVERTISMENT: A eșuat la pornirea aplicației: Imposibil de pornit aplicația: A eșuat la fork (Resursa indisponibilă temporar)
24 iul 19:05:22 <HOSTNAME> gsd-print-notif[26411]: Nu s-a putut executa handler-ul system-config-printer-udev: Nu s-a putut bifurca (Resursa indisponibilă temporar)
24 iul 19:05:22 <HOSTNAME> gnome-session-binary[26007]: AVERTISMENT: Aplicația „org.gnome.SettingsDaemon.Power.desktop” a fost oprită de semnalul 5
24 iul 19:05:22 <HOSTNAME> gnome-session[26007]: gnome-session-binary[26007]: AVERTISMENT: Aplicația „org.gnome.SettingsDaemon.Power.desktop” a fost oprită de semnalul 5
24 iul 19:05:22 <HOSTNAME> gnome-session-binary[26007]: GLib-WARNING: GError setat peste o GError anterioară sau memorie neinițializată.
Aceasta indică o eroare în codul cuiva. Trebuie să vă asigurați că o eroare este NULL înainte de a fi setată.
Mesajul de eroare de suprascriere a fost: Imposibil de pornit aplicația: Nu s-a putut bifurca (Resursa indisponibilă temporar)...
24 iul 19:05:22 <HOSTNAME> gnome-session[26007]: gnome-session-binary[26007]: GLib-WARNING: GError setată peste o GError anterioară sau memorie neinițializată.
24 iul 19:05:22 <HOSTNAME> gnome-session[26007]: Aceasta indică o eroare în codul cuiva. Trebuie să vă asigurați că o eroare este NULL înainte de a fi setată.
24 iul 19:05:22 <HOSTNAME> gnome-session[26007]: Mesajul de eroare de suprascriere a fost: Imposibil de pornit aplicația: Nu s-a putut bifurca (Resursa indisponibilă temporar)
24 iul 19:05:22 <HOSTNAME> evolution-calen[26465]: se creează firul „gdbus”: Eroare la crearea firului: resursa indisponibilă temporar
24 iul 19:05:47 <HOSTNAME> gnome-shell-cal[26246]: Nu s-a putut încărca sursa „birthdays”: a fost atins termenul de expirare
[/etc/X11/xinit/Xclients]
#!/bin/bash
GSESSION="$(type -p gnome-session)"
STARTKDE="$(tip -p startkde)"
# verificați dacă utilizatorul are un desktop preferat
PREFERAT=
dacă [ -f /etc/sysconfig/desktop ]; atunci
. /etc/sysconfig/desktop
if [ "$DESKTOP" = "GNOME" ]; atunci
PREFERRED="$GSESSION"
elif [ "$DESKTOP" = "KDE" ]; atunci
PREFERRED="$STARTKDE"
fi
fi
dacă [ -n „$PREFERRED” ]; atunci
exec „$PREFERRED”
fi
# acum, dacă putem ajunge aici, fie nu a fost prezent niciun fișier de pe desktop,
# sau desktopul solicitat nu este instalat.
if [ -n "$GSESSION" -a -f /usr/share/xsessions/gnome.desktop ]; atunci
# în mod implicit, rulăm GNOME.
exec "$GSESSION" --session=gnome
elif [ -n "$STARTKDE" ]; atunci
# dacă GNOME nu este instalat, încercați KDE.
exec „$STARTKDE”
fi
# Ar trebui să acceptăm și scripturile /etc/X11/xinit/Xclients.d
XCLIENTS_D=/etc/X11/xinit/Xclients.d
if [ "$#" -eq 1 ] && [ -x "$XCLIENTS_D/Xclients.$1.sh" ]; atunci
exec -l $SHELL -c „$SSH_AGENT $XCLIENTS_D/Xclients.$1.sh”
fi
# Failsafe.
# aceste fișiere sunt lăsate de TheNextLevel.
rm -f $HOME/Xrootenv.0
# Argh! Nu este instalat nimic bun. Reveniți la twm
{
# Doamne, nici fvwm95, nici fvwm2 nu sunt disponibile;
# reveniți la setările de siguranță
[ -x /usr/bin/xsetroot ] && /usr/bin/xsetroot -solid '#222E45'
if [ -x /usr/bin/xclock ] ; atunci
/usr/bin/xclock -geometry 100x100-5+5 &
fi
if [ -x /usr/bin/xterm ] ; atunci
/usr/bin/xterm -geometry 80x50-50+150 &
fi
dacă [ -x /usr/bin/firefox -a -f /usr/share/doc/HTML/index.html ]; atunci
/usr/bin/firefox /usr/share/doc/HTML/index.html &
fi
if [ -x /usr/bin/twm ] ; atunci
exec /usr/bin/twm
fi
}
Prostia este că după ce ai încercat să pornești al doilea vncserver
de aproximativ 50 de ori, de obicei funcționează o singură dată, când mă opresc și pornesc din nou serviciul, nu va mai afișa nimic, cu excepția unui cursor de mouse.
A mai rămas o mulțime de memorie liberă (aproximativ 5 giga), mai există și mult spațiu de stocare (aproximativ 100 de giga). Când îmi editez ~/.vnc/xstartup
fișier pentru a include doar un manager de fișiere, funcționează bine de fiecare dată, încercarea de a rula o sesiune pentru mai mulți utilizatori pare să fie problema.
Mulțumesc pentru că ai citit toate acestea, am pierdut deja nenumărate ore încercând să depanez acest lucru fără îmbunătățiri (mare).
ACTUALIZARE 1:
După multe ore de încălcare, încă nu am apucat să lucrez cu gnom. Vremurile disperate necesită măsuri disperate, așa că tocmai am ajuns să instalez Xfce și l-am făcut mai frumos cu o temă drăguță și un pachet de pictograme. A funcționat doar după ce l-am instalat. Am eliminat toate referințele gnome din xstartup
fișiere și adăugate startxfce4
.