Product SiteDocumentation Site

3.2. چگونگی مهاجرت

In order to guarantee continuity of the services, each computer migration must be planned and executed according to the plan. This principle applies regardless of which operating system is used.

3.2.1. نظرسنجی و شناسایی خدمات

این گام با اینکه ساده به نظر می‌رسد، اما ضروری است. یک مدیر سیستم جدی نقش تمام سرورهای تحت کنترلش را می‌داند، اما این نقش‌ها می‌توانند تغییر یابند و گاهی اوقات کاربران باتجربه ممکن است خدمات “عجیب و غریب” را اضافه کنند. اطلاع از وجود این خدمات به شما اجازه تصمیم‌گیری می‌دهد تا اینکه به طور اتفاقی همه را پاک کنید.
For this purpose, it is wise to inform your users of the project before migrating the server. To involve them in the project, it may be useful to install the most common free software programs on their desktops prior to migration, which they will come across again after the migration to Debian; LibreOffice and the Mozilla suite are the best examples here.

3.2.1.1. شبکه و فرآیندها

ابزار nmap (در بسته‌ای با همین نام) به سرعت سرویس‌ها اینترنتی موجود در یک شبکه توسط ماشین‌های مختلف را شناسایی می‌کند بدون آنکه نیاز باشد به این ماشین‌ها وارد شویم. تنها کافی است دستور زیر را روی ماشین دیگری از همان شبکه اجرا کنید:
$ nmap mirwiz
Starting Nmap 7.93 ( https://nmap.org ) at 2024-05-20 00:15 CEST
Nmap scan report for mirwiz (192.168.1.104)
Host is up (0.00062s latency).
Not shown: 992 closed ports
PORT     STATE SERVICE
22/tcp   open  ssh
25/tcp   open  smtp
80/tcp   open  http
111/tcp  open  rpcbind
139/tcp  open  netbios-ssn
445/tcp  open  microsoft-ds
5666/tcp open  nrpe
9999/tcp open  abyss

Nmap done: 1 IP address (1 host up) scanned in 0.06 seconds
If the server is a Unix machine offering shell accounts to users, it is interesting to determine if processes are executed in the background in the absence of their owner. The command ps auxw displays a list of all processes with their user identity. By checking this information against the output of the who or w commands, which give a list of logged in users, it is possible to identify rogue or undeclared servers or programs running in the background. Looking at crontabs (tables listing automatic actions scheduled by users) will often provide interesting information on functions fulfilled by the server (a complete explanation of cron is available in قسمت 9.7, “زمان‌بندی وظیفه‌ها با cron و atd).
در هر صورت، پشتیبان‌گیری از سرور امری ضروری است: این عملیات امکان بازیابی اطلاعات سرور پس از یک گزارش بروز مشکل در عملیات مهاجرت را فراهم می‌سازد.

3.2.2. پشتیبان‌گیری از فایل‌های پیکربندی

منطقی است که از فایل‌های پیکربندی سرویس موجود که قصد جایگزین کردن آن با سرویس جدیدی را داریم، پشتیبان تهیه کنیم. حداقل می‌توان یک کپی از تمام فایل‌های پیکربندی برای هر سرویس را تهیه کرد.
برای ماشین‌های یونیکس، فایل‌های پیکربندی معمولاً در مسیر /etc/ قرار دارند، اما ممکن است در یک زیرمجموعه از /usr/local/ نیز قرار بگیرند. این مورد از برنامه‌هایی که مستقیماً از سورس کامپایل می‌شوند صدق می‌کند، جدای از بسته‌های موجود. در بعضی موارد، ممکن است این فایل‌ها را در /opt/ نیز پیدا کنید.
برای سرویس‌هایی که با مدیریت داده سروکار دارند (مانند پایگاه‌داده‌ها)، به شدت توصیه می‌شود که تمام داده موجود در یک قالب استاندارد که توسط نرم‌افزار جدید خوانده خواهد شد، خروجی گرفته شود. چنین قالبی معمولاً به صورت متنی و مستندسازی شده است؛ برای نمونه، ممکن است یک فایل SQL از پایگاه‌داده یا یک فایل LDIF از سرور LDAP باشد.
پشتیبان‌گیری از پایگاه‌داده

شكل 3.2. پشتیبان‌گیری از پایگاه‌داده

هر نرم‌افزار سرور متفاوت است و عملاً ممکن نیست که بتوان به تمام جزیئات این نرم‌افزارها اشاره کرد. به مستندات نرم‌افزار موجود و جدید جهت درک درستی از قالب‌های استاندارد ورودی و خروجی مراجعه کنید و آن‌هایی که نیاز به تغییرات دستی دارند. مطالعه این کتاب پیکربندی برنامه‌های اصلی سرور در لینوکس را برای شما روشن می‌سازد.

3.2.3. سازوکار در اختیار گرفتن یک سرور دبیان موجود

برای نگهداری موثر آن، کسی ممکن است ماشین موجود که دبیان روی آن نصب شده است را تحلیل کند.
اولین فایلی که باید بررسی شود /etc/debian_version است، که معمولاً نسخه دبیان نصب شده روی سیستم را نشان می‌دهد (که جزو بسته base-files است). اگر نشانه‌هایی از codename/sid بود بدین معنی است که سیستم با استفاده از بسته‌های موجود در توزیع در حال توسعه (خواه تحت‌آزمون یا ناپایدار) بروزرسانی شده است.
برنامه apt-show-versions (از بسته دبیان با همین نام) فهرست بسته‌های نصب شده را بررسی کرده و نسخه‌های موجود را شناسایی می‌کند. برای این منظور، از aptitude نیز می‌توان استفاده کرد، البته به شکل دیگری.
نگاهی بر فایل /etc/apt/sources.list (و دایرکتوری /etc/apt/sources.list.d/) نشان می‌دهد که بسته‌های نصب شده از چه منبعی می‌آیند. اگر منابع نامشخص فراوانی در این فایل وجود داشت، مدیر سیستم می‌تواند سیستم را از دوباره نصب کرده تا با اینکار حداکثر سازگاری نرم‌افزاری با دبیان را ممکن سازد.
The sources.list file is often a good indicator: the majority of administrators keep, at least in comments, the list of APT sources that were previously used. But you should not forget that sources used in the past might have been deleted, and that some random packages grabbed on the Internet might have been manually installed (with the help of the dpkg command). In this case, the machine is misleading in its appearance of being a “standard” Debian system. This is why you should pay attention to any indication that will give away the presence of external packages (appearance of deb files in unusual directories, package version numbers with a special suffix indicating that it originated from outside the Debian project, such as ubuntu or lmde, etc.). Below are two examples, showcasing unusual version suffixes and a third-party package without a source.
$ dpkg -l
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name                          Version                        Architecture Description
+++-=============================-==============================-============-===================
[..]
ii  docker-buildx-plugin          0.14.0-1~debian.12~bookworm    amd64        Docker Buildx cli plugin.
ii  docker-ce                     5:26.1.3-1~debian.12~bookworm  amd64        Docker: the open-source application container engine
ii  docker-ce-cli                 5:26.1.3-1~debian.12~bookworm  amd64        Docker CLI: the open-source application container engine
ii  docker-ce-rootless-extras     5:26.1.3-1~debian.12~bookworm  amd64        Rootless support for Docker.
[..]
$ apt-show-versions | grep No
hc-utils:all 0.0.4-1 installed: No available version in archive
در همین راستا، بررسی محتوای دایرکتوری /usr/local/ نیز جالب بنظر می‌رسد، که هدفش نگهداری از برنامه‌هایی است که به صورت دستی کامپایل و نصب شده‌اند. فهرست نرم‌افزارهای نصب‌شده در این روش آموزنده است، چراکه نشان می‌دهد چرا از بسته‌های موجود در سیستم دبیان استفاده نشده است، اگر چنین بسته‌ای وجود داشته باشد.

3.2.4. نصب دبیان

زمانی که تمام اطلاعات مورد نیاز درباره سرور کنونی بدست آمد، می‌توانیم آن را خاموش کرده و فرآیند نصب دبیان را أغاز نماییم.
برای انتخاب نسخه مناسب، باید از معماری رایانه خبر داشته باشیم. اگر یک رایانه رومیزی استاندارد است، به احتمال زیاد از amd64 (یا i386 برای سیستم‌های قدیمی‌تر) استفاده می‌کند. در سایر موارد، احتمالات موجود را می‌توان با استفاده از سیستم قبلی بدست آورد.
جدول 3.1 is not intended to be exhaustive, but may be helpful. Note that it lists Debian architectures which are no longer supported in the current stable release. In any case, the original documentation for the computer is the most reliable source to find this information.

جدول 3.1. سازگاری سیستم عامل با معماری

سیستم عاملمعماری(ها)
DEC Unix (OSF/1)alpha, mipsel
HP Unixia64, hppa
IBM AIXpowerpc
Irixmips
OS Xamd64, powerpc, i386
z/OS, MVSs390x, s390
Solaris, SunOSsparc, i386, m68k
Ultrixmips
VMSalpha
Windows 95/98/MEi386
Windows NT/2000i386, alpha, ia64, mipsel
Windows XP / Windows Server 2003-2008i386, amd64, ia64
Windows RTarmel, armhf, arm64
Windows Vista / Windows 7-8-10-11 / Windows Server 2010-amd64

3.2.5. نصب و پیکربندی سرویس‌های انتخاب شده

Once Debian is installed, we need to individually install and configure each of the services that this computer must host. The new configuration must take into consideration the prior one in order to ensure a smooth transition. All the information collected in the first two steps will be useful to successfully complete this part.
نصب سرویس‌های انتخاب شده

شكل 3.3. نصب سرویس‌های انتخاب شده

قبل از ورود به این تمرین، به شدت توصیه می‌شود که باقی کتاب را بخوانید. پس از مطالعه آن است که می‌توانید به درک درستی از چگونگی پیکربندی سرویس‌های مورد نیاز دست یابید.