نصب محیط گرافیکی بر روی لینوکس ورژن ۶

نصب محیط گرافیکی بر روی لینوکس ورژن ۶

حدود ۶ دقیقه مطالعه

پاسخ کوتاه: دستور yum -y groupinstall "Desktop" که در راهنماهای قدیمی CentOS ۶ دیده می‌شود امروز دیگر کار نمی‌کند. روی AlmaLinux و Rocky Linux ۹ باید از dnf group install "Server with GUI" و روی اوبونتو سرور از tasksel یا بسته‌های apt استفاده کنید. اما مهم‌تر از خودِ دستور این است که نصب یک دسکتاپ کامل روی سرور تولیدی تقریباً همیشه تصمیم بدی است؛ اگر فقط گاهی به دسترسی گرافیکی نیاز دارید، X11 forwarding یا VNC روی تونل SSH انتخاب درست‌تری است.

چرا روش نسخه ۶ منسوخ شده است

CentOS ۶ در نوامبر ۲۰۲۰، CentOS ۸ در دسامبر ۲۰۲۱ و CentOS ۷ در ژوئن ۲۰۲۴ به پایان پشتیبانی رسیدند. یعنی برای هیچ‌کدام دیگر وصله امنیتی منتشر نمی‌شود و مخازن رسمی‌شان از آدرس‌های اصلی به بایگانی منتقل شده‌اند؛ به همین دلیل روی این نسخه‌ها حتی yum update هم معمولاً با خطای مخزن متوقف می‌شود. نگه داشتن چنین سیستمی روی یک سرور عمومی یک بدهی امنیتی است، نه صرفه‌جویی.

جانشین‌های رایگان امروزی خانواده RHEL، توزیع‌های AlmaLinux و Rocky Linux هستند. در این نسخه‌ها هم ابزار مدیریت بسته dnf است (دستور yum فقط یک پیوند به آن باقی مانده) و هم نام گروه‌های نصب عوض شده؛ گروهی با نام Desktop دیگر وجود ندارد و به همین دلیل دستور قدیمی با پیغام «گروه پیدا نشد» شکست می‌خورد.

پیش‌نیازها

  • یک نسخه پشتیبانی‌شده: AlmaLinux یا Rocky Linux ۹ و بالاتر، یا اوبونتو سرور ۲۴.۰۴ LTS و بالاتر.
  • دسترسی root یا کاربری با اجازه sudo.
  • فضای دیسک و رم کافی، چون گروه دسکتاپ صدها بسته نصب می‌کند. اگر منابع سرورتان محدود است، پیش از شروع طرح خود را روی سرور مجازی ایران بازبینی کنید تا وسط نصب با پر شدن دیسک روبه‌رو نشوید.
  • یک راه دسترسی جایگزین (کنسول یا KVM پنل)، چون تغییر حالت پیش‌فرض سیستم می‌تواند نشست فعلی شما را قطع کند.

نصب محیط گرافیکی روی AlmaLinux و Rocky Linux

اول فهرست گروه‌های موجود را ببینید تا نام دقیق را از خود سیستم بگیرید:

dnf group list

گروه‌های پنهان با dnf group list --hidden نمایش داده می‌شوند. برای نصب محیط کامل گنوم:

dnf group install "Server with GUI"

اگر دنبال چیز سبک‌تری هستید، Xfce از مخزن EPEL می‌آید. روی AlmaLinux و Rocky Linux ۹ ابتدا مخزن CRB و سپس EPEL را فعال کنید:

dnf config-manager --set-enabled crb
dnf install epel-release
dnf group install "Xfce"

روی نسخه ۱۰ همین خانواده که با نسخه پنجم ابزار dnf عرضه شده، سوئیچ --set-enabled دیگر وجود ندارد و معادل آن dnf config-manager setopt crb.enabled=1 است.

پس از نصب، سیستم را طوری تنظیم کنید که در حالت گرافیکی بالا بیاید:

systemctl set-default graphical.target

برای سوئیچ بدون ریبوت از systemctl isolate graphical.target استفاده کنید و هر وقت خواستید به حالت متنی برگردید، systemctl set-default multi-user.target کافی است.

نصب محیط گرافیکی روی اوبونتو سرور

روی اوبونتو ابزار استاندارد tasksel است:

sudo apt update
sudo apt install tasksel
sudo tasksel install ubuntu-desktop

اجرای sudo tasksel بدون آرگومان یک منوی متنی باز می‌کند که می‌توانید از همان‌جا هم انتخاب کنید. برای نصب سبک‌تر و بدون بسته‌های پیشنهادی:

sudo apt install --no-install-recommends xfce4 xfce4-goodies

در پایان همان تنظیم هدف پیش‌فرض را انجام دهید (sudo systemctl set-default graphical.target) و یک بار سیستم را راه‌اندازی مجدد کنید.

دسکتاپ روی سرور رایگان نیست

قبل از ادامه صادق باشیم: یک دسکتاپ کامل رم و پردازنده‌ای مصرف می‌کند که در حالت عادی باید صرف سرویس اصلی شما شود، و ده‌ها بسته و سرویس تازه (مدیر نمایش، سرویس چاپ، بلوتوث، کشف سرویس در شبکه) به سطح حمله سرور اضافه می‌کند. هر بسته اضافه یعنی یک آسیب‌پذیری احتمالی بیشتر که باید وصله شود. اگر واقعاً به یک ماشین گرافیکی دائمی نیاز دارید، بهتر است آن را از سرور تولیدی جدا کنید؛ برای این کار برداشتن یک نمونه مجزا روی سرور ابری آلمان منطقی‌تر از سنگین کردن سرور اصلی است.

راه سبک‌تر اول: X11 forwarding

اگر فقط می‌خواهید یکی دو برنامه گرافیکی را اجرا کنید، اصلاً به دسکتاپ نیاز ندارید. روی سرور بسته xauth را نصب کنید (dnf install xorg-x11-xauth یا apt install xauth)، در فایل /etc/ssh/sshd_config مقدار X11Forwarding yes را قرار دهید و سرویس را دوباره بارگذاری کنید: در خانواده RHEL با systemctl reload sshd و در اوبونتو با systemctl reload ssh.

سپس از کلاینت با ssh -X user@server وصل شوید و برنامه را اجرا کنید؛ پنجره روی دسکتاپ خودتان باز می‌شود. روی مک به XQuartz و روی ویندوز به یک X server یا WSL نیاز دارید. گزینه -Y هم وجود دارد اما بررسی‌های امنیتی X را کنار می‌گذارد، پس تا وقتی مجبور نشده‌اید با -X کار کنید.

راه سبک‌تر دوم: VNC روی تونل SSH

ایراد بزرگ آموزش قدیمی این بود که vncserver را با کاربر root اجرا می‌کرد و پورت VNC را مستقیم روی اینترنت باز می‌گذاشت. پروتکل VNC رمزنگاری واقعی ندارد و رمز آن هم محدود است؛ هرگز آن را روی اینترنت باز نگذارید. ساخت و حذف همین نشست‌های گرافیکی روی سرورهای مجازی لینوکسی در ایجاد و حذف remote desktop برای VPS لینوکس هم توضیح داده شده است.

روش درست این است: بسته tigervnc-server (در اوبونتو tigervnc-standalone-server) را نصب کنید، با یک کاربر عادی و نه root دستور vncpasswd را اجرا کنید و سرویس را به لوکال‌هاست محدود نگه دارید. در خانواده RHEL، کاربر و شماره نمایشگر در فایل /etc/tigervnc/vncserver.users به شکل :1=username ثبت می‌شود و تنظیمات نشست در ~/.vnc/config قرار می‌گیرد؛ کلید localhost در همین فایل باعث می‌شود سرویس فقط روی 127.0.0.1 گوش بدهد. سپس در همین خانواده سرویس را با یونیت آماده فعال کنید:

systemctl enable --now vncserver@:1

حالا از سمت کلاینت یک تونل بسازید (ssh -L 5901:localhost:5901 user@server) و در VNC viewer به localhost:5901 وصل شوید. اگر پیکربندی و عیب‌یابی این تنظیمات برایتان دردسر است، روی سرور مجازی مدیریت‌شده ایران نصب و پیکربندی کنترل‌پنل، عیب‌یابی نرم‌افزارهای نصب‌شده و پشتیبانی فنی بر عهده تیم آنلاین سرور است.

بررسی کنید واقعاً کار کرده است

  • systemctl get-default باید graphical.target را برگرداند.
  • systemctl status gdm (یا systemctl status lightdm) وضعیت مدیر نمایش را نشان می‌دهد.
  • ss -ltnp | grep 590 باید نشان دهد VNC فقط روی 127.0.0.1 گوش می‌دهد، نه روی 0.0.0.0.
  • برای دیدن خطاهای سرویس: journalctl -u vncserver@:1 -b.

خطاهای رایج

  • پیغام پیدا نشدن گروه: نام گروه را دقیق وارد نکرده‌اید یا EPEL فعال نیست. با dnf group list --hidden نام درست را از خود سیستم بگیرید.
  • صفحه خاکستری یا خالی در VNC: نشست در ~/.vnc/config مشخص نشده یا بسته‌های دسکتاپ اصلاً نصب نشده‌اند.
  • خطای cannot open display هنگام ssh -X: یا X11Forwarding خاموش است، یا xauth روی سرور نصب نیست، یا کلاینت شما X server ندارد.
  • پر شدن دیسک وسط نصب: قبل از شروع با df -h فضا را بررسی کنید؛ برگرداندن یک نصب نیمه‌کاره وقت‌گیر است.
  • اجرای دسکتاپ یا VNC با کاربر root: این کار را نکنید. یک کاربر عادی بسازید و نشست گرافیکی را با او اجرا کنید.

و یک نکته پایانی: اگر مطمئن نیستید معماری فعلی‌تان واقعاً به دسترسی گرافیکی نیاز دارد یا فقط به ابزار مدیریتی بهتری احتیاج دارید، مشاوره زیرساخت می‌تواند پیش از هزینه کردن منابع سرور، مسیر ساده‌تری جلوی پایتان بگذارد.