امروزه با توجه به ترافیک و سرعت پایین اینترنت و همچنین قطعی و وصلی اینترنت و .... علت اصلی تنظیم یک ریپازیتوری لوکال روی شبکه میباشد. یکی از علت ها را میتوان کاهش پهنای باند اینترنت و سرعت بالا روی دریافت پکیج ها از cache لوکال دانست. اما همچنین دلیل اصلی دیگر میتواند privacy باشد.
فرض کنید که کلاینت ها از سازمان شما دسترسی محدود به اینترنت دارند اما لینوکس آنها نیاز به آپدیت روی نرم افزار و همچنین امنیت سیستم دارند یا اینکه تنها به پکیج های نرم افزاری جدید نیازمند هستند. برای توضیح بیشتر باید گفت که یکی سرور که روی یک شبکه private راه اندازی میشود شامل اطلاعات حساس و حتی سری میباشد و به همین دلیل دسترسی آن محدود است و نباید در معرض اینترنت public قرار بگیرد.
اینها همه دلایل کمی هستند مبنی بر ایجاد یک local repository mirror روی شبکه شما و در حقیقت در نظر گرفتن یک سرور برای این امر و کانفیگ کردن کلاینت های داخلی به منظور استفاده از این سرور به عنوان cache mirror
ubuntu پکیجی فراهم آورده به نام apt-mirror برای synchronize کردن local cache با repository ها و mirror های رسمی ubuntu که میتواند از طریق یک سرور http یا ftp کانفیگ شود و پکیج های نرم افزاریش را با کلاینت های سیستم لوکال به اشتراک بگذارد. برای یک mirror cache کامل سرور شما حداقل 120 گیگ فضای آزاد و رزرو تنها برای این repository local نیاز دارد.
همچنین توصیه میشود مطالعه کنید :
آموزش نصب و راه اندازی ریپازیتوری لوکال (تحت شبکه داخلی) برای نصب پکیج ها در CentOS
تجهیزات مورد نیاز :
مرحله 1
تنظیم سرور :
1 . اولین چیزی که شما بخواهید انجام دهید شناسایی سریع ترین و نزدیک ترین mirror های ubuntu در حقیقت نزدیک به مکان شما میباشد. صفحه Ubuntu Archive Mirror را در مرورگر خود باز کنید و کشور خود را انتخاب کنید :
اگر کشور شما mirror های بیشتری فراهم کرده شما باید ادرس mirror را شناسایی کنید و برای این منظور تست هایی براساس ping یا traceroute بگیرید :
2 . مرحله بعدی نصب نرم افزار مورد نیاز برای تنظیم ریپازیتوری لوکال میباشد. apt-mirror و پکیج های proftpd را نصب کنید همچنین proftpd را به عنوان سیستم standalone کانفیگ کنید :
3 . اکنون نوبت به کانفیگ سرور apt-mirror میباشد. فایل etc/apt/mirror.list/ را باز کنید و نزدیک ترین مکان تان را با توجه به مرحله اول به فایل اضافه کنید. و مسیر سیستم تان در حقیقت مکانی که پکیج ها باید دانلود شوند را انتخاب کنید به صورت پیش فرض apt-mirror مسیر var/spool/apt-mirror/ را برای local cache استفاده میکند اما در این آموزش ما قصد داریم مسیر سیستم را تغییر دهیم همچنین base_path را به گونه ای set کنیم که location آن opt/apt-mirror/ قرار بگیرد. (اگر mirror های پیش فرض به اندازه کافی سریع هستند و شما بیشتر از این نیاز ندارید میتوانید این مرحله را صرف نظر کنید)
همچنین شما میتوانید قبل از پاک کردن directive سورس لیست های دیگر را (شامل سورس های دبیان) uncomment یا اضافه کنید که بستگی به ورژن ubuntu کلاینت های شما دارد. شما میتوانید سورس ها را از 12.04 اضافه کنید اما دقت کنید که افزودن repository های بیشتر نیازمند فضای آزاد بیشتر میباشد.
برای source list های debian از debian wiki یا debian sources که لیست ریپازیتوری generate میکنند بازدید کنید.
4 . در این مرحله تمام چیزی که نیاز دارید تنها ایجاد دایرکتوری path و اجرای دستور apt-mirror برای synchronize کردن ریپازیتوری رسمی ubuntu با mirror لوکال مان میباشد :
همانطور که میبینید apt-mirror کار خود را با index و دانلود کردن archive ها ادامه میدهد در حالی که تعداد کلی پکیج های دانلود شده و همچنین سایزشان را ارایه میدهد و همانطور که میبینیم در حقیقت 110 تا 120 گیگ فضا به اندازه کافی زیاد هست که بتوان کل پکیج ها را دانلود کرد.
شما میتوانید برای نمایش محتوای پوشه دستور ls را اجرا کنید :
به محض تمام شدن دانلود اولیه دانلود های بعدی کم خواهند بود.
5 . هنگامی که apt-mirror پکیج ها را دانلود میکند شما میتوانید سرور proftpd خود را کانفیگ کنید. اولین چیزی که شما باید انجام دهید ایجاد فایل کانفیگ anonymous برای proftpd میباشد که با اجرای دستور زیر صورت میگیرد :
سپس محتوای زیر را به فایل anonymous.conf اضافه کنید و سرویس proftpd را restart کنید :
6 . مرحله بعد link کردن مسیر apt-miror به مسیر ftpd با استفاده از دستور mount میباشد :
برای بررسی اینکه دستور mount به درستی اجرا شده دستور زیر را بدون هیچ آپشن یا پارامتری اجرا میکنیم که لیست mount شده ها را به ما نمایش میدهد :
7 . در مرحله آخر باید مطمین شویم که سرور proftpd به صورت اتوماتیک بعد از reboot سیستم start شده همچنین دایرکتوری mirror cache به صورت اتوماتیک روی مسیر سرور ftp مانت (mount) شده است. برای فعال کردن اتوماتیک proftpd دستور زیر را اجرا کنید :
برای mount کردن اتوماتیک apt-mirror cache روی proftpd فایل etc/rc.local/ را باز و edit نمایید :
خط زیر را قبل از خط exit 0 اضافه کنید. همچنین 5 ثانیه تاخیر قبل از تلاش برای mount در نظر بگیرید که همانطور که در زیر میبینید با sleep 5 لحاظ شده است :
اگر شما پکیج ها را از ریپازیتوری های دبیان دریافت کردید دستورات زیر را اجرا کنید و مطمین شوید تنظیمات درست برای فایل rc.local در بالا فعال شود :
8 . برای انجام یک synchronization روزانه apt-mirror همچنین میتوانید با استفاده از دستور crontab یک job برنامه ریزی شده در سیستم ایجاد کنید که هر روز ساعت 2 AM اجرا شود. برای این منظور با ساختار زیر job خود را ایجاد نمایید :
در آخر فایل خط زیر را اضافه نمایید :
اکنون هر روز ساعت 2 AM سیستم cache ریپازیتوری شما با mirror های ابونتو synchronization خواهد شد و یک log file ایجاد میشود.
مرحله 2
تنظیمات Client ها :
9 . برای تنظیم کلاینت های لوکال سیستم عامل ابونتو فایل etc/apt/source.list/ را روی کامپیوتر کلاینت باز و ویرایش کنید و ip address و hostname سرور apt-mirror را در فایل قرار دهید همچنین پروتکل http با ftp جایگزین کنید سپس سیستم را آپدیت کنید :
10 . برای مشاهده ریپازیتوری ها شما میتوانید یک مرورگر را باز کنید و ip address دامین (domain) خود را با استفاده از پروتکل ftp باز کنید :
همچینین سیستم مشابهی برای کلاینت ها و سرورهای دبیان استفاده میشود و تنها تغییر مورد نیاز mirror دبیان و sources list آن میباشد.
همچنین اگر شما یک دبیان یا ابونتو جدید نصب کردید زمانی که installer از شما ریپازیتوری مورد استفاده تان را میپرسد شما به صورت دستی local mirror خود را با استفاده از پروتکل ftp در آن قرار دهید.
عالی ترین نکته درباره وجود locall mirror repository های شخصی خودتان این است که کلاینت های لوکال شما بدون نیاز به دسترسی به اینترنت به راحتی میتوانند پکیج ها یا نرم افزارهای خود را نصب یا آپدیت نمایند.
موفق وباشید
محمد هابیلی
فرض کنید که کلاینت ها از سازمان شما دسترسی محدود به اینترنت دارند اما لینوکس آنها نیاز به آپدیت روی نرم افزار و همچنین امنیت سیستم دارند یا اینکه تنها به پکیج های نرم افزاری جدید نیازمند هستند. برای توضیح بیشتر باید گفت که یکی سرور که روی یک شبکه private راه اندازی میشود شامل اطلاعات حساس و حتی سری میباشد و به همین دلیل دسترسی آن محدود است و نباید در معرض اینترنت public قرار بگیرد.
اینها همه دلایل کمی هستند مبنی بر ایجاد یک local repository mirror روی شبکه شما و در حقیقت در نظر گرفتن یک سرور برای این امر و کانفیگ کردن کلاینت های داخلی به منظور استفاده از این سرور به عنوان cache mirror
ubuntu پکیجی فراهم آورده به نام apt-mirror برای synchronize کردن local cache با repository ها و mirror های رسمی ubuntu که میتواند از طریق یک سرور http یا ftp کانفیگ شود و پکیج های نرم افزاریش را با کلاینت های سیستم لوکال به اشتراک بگذارد. برای یک mirror cache کامل سرور شما حداقل 120 گیگ فضای آزاد و رزرو تنها برای این repository local نیاز دارد.
همچنین توصیه میشود مطالعه کنید :
آموزش نصب و راه اندازی ریپازیتوری لوکال (تحت شبکه داخلی) برای نصب پکیج ها در CentOS
تجهیزات مورد نیاز :
- حداقل 120 گیگ فضای آزاد
- سرور Proftpd که در مد enonymous نصب و کانفیگ شده باشد.
مرحله 1
تنظیم سرور :
1 . اولین چیزی که شما بخواهید انجام دهید شناسایی سریع ترین و نزدیک ترین mirror های ubuntu در حقیقت نزدیک به مکان شما میباشد. صفحه Ubuntu Archive Mirror را در مرورگر خود باز کنید و کشور خود را انتخاب کنید :
اگر کشور شما mirror های بیشتری فراهم کرده شما باید ادرس mirror را شناسایی کنید و برای این منظور تست هایی براساس ping یا traceroute بگیرید :
2 . مرحله بعدی نصب نرم افزار مورد نیاز برای تنظیم ریپازیتوری لوکال میباشد. apt-mirror و پکیج های proftpd را نصب کنید همچنین proftpd را به عنوان سیستم standalone کانفیگ کنید :
کد PHP:
$ sudo apt-get install apt-mirror proftpd-basic
3 . اکنون نوبت به کانفیگ سرور apt-mirror میباشد. فایل etc/apt/mirror.list/ را باز کنید و نزدیک ترین مکان تان را با توجه به مرحله اول به فایل اضافه کنید. و مسیر سیستم تان در حقیقت مکانی که پکیج ها باید دانلود شوند را انتخاب کنید به صورت پیش فرض apt-mirror مسیر var/spool/apt-mirror/ را برای local cache استفاده میکند اما در این آموزش ما قصد داریم مسیر سیستم را تغییر دهیم همچنین base_path را به گونه ای set کنیم که location آن opt/apt-mirror/ قرار بگیرد. (اگر mirror های پیش فرض به اندازه کافی سریع هستند و شما بیشتر از این نیاز ندارید میتوانید این مرحله را صرف نظر کنید)
کد PHP:
$ sudo nano /etc/apt/mirror.list
همچنین شما میتوانید قبل از پاک کردن directive سورس لیست های دیگر را (شامل سورس های دبیان) uncomment یا اضافه کنید که بستگی به ورژن ubuntu کلاینت های شما دارد. شما میتوانید سورس ها را از 12.04 اضافه کنید اما دقت کنید که افزودن repository های بیشتر نیازمند فضای آزاد بیشتر میباشد.
برای source list های debian از debian wiki یا debian sources که لیست ریپازیتوری generate میکنند بازدید کنید.
4 . در این مرحله تمام چیزی که نیاز دارید تنها ایجاد دایرکتوری path و اجرای دستور apt-mirror برای synchronize کردن ریپازیتوری رسمی ubuntu با mirror لوکال مان میباشد :
کد PHP:
$ sudo mkdir -p /opt/apt-mirror
$ sudo apt-mirror
همانطور که میبینید apt-mirror کار خود را با index و دانلود کردن archive ها ادامه میدهد در حالی که تعداد کلی پکیج های دانلود شده و همچنین سایزشان را ارایه میدهد و همانطور که میبینیم در حقیقت 110 تا 120 گیگ فضا به اندازه کافی زیاد هست که بتوان کل پکیج ها را دانلود کرد.
شما میتوانید برای نمایش محتوای پوشه دستور ls را اجرا کنید :
به محض تمام شدن دانلود اولیه دانلود های بعدی کم خواهند بود.
5 . هنگامی که apt-mirror پکیج ها را دانلود میکند شما میتوانید سرور proftpd خود را کانفیگ کنید. اولین چیزی که شما باید انجام دهید ایجاد فایل کانفیگ anonymous برای proftpd میباشد که با اجرای دستور زیر صورت میگیرد :
کد PHP:
$ sudo nano /etc/proftpd/conf.d/anonymous.conf
کد PHP:
<Anonymous ~ftp>
User ftp
Group nogroup
UserAlias anonymous ftp
RequireValidShell off
# MaxClients 10
<Directory *>
<Limit WRITE>
DenyAll
</Limit>
</Directory>
</Anonymous>
6 . مرحله بعد link کردن مسیر apt-miror به مسیر ftpd با استفاده از دستور mount میباشد :
کد PHP:
$ sudo mount --bind /opt/apt-mirror/mirror/archive.ubuntu.com/ /srv/ftp/
برای بررسی اینکه دستور mount به درستی اجرا شده دستور زیر را بدون هیچ آپشن یا پارامتری اجرا میکنیم که لیست mount شده ها را به ما نمایش میدهد :
کد PHP:
$ mount
7 . در مرحله آخر باید مطمین شویم که سرور proftpd به صورت اتوماتیک بعد از reboot سیستم start شده همچنین دایرکتوری mirror cache به صورت اتوماتیک روی مسیر سرور ftp مانت (mount) شده است. برای فعال کردن اتوماتیک proftpd دستور زیر را اجرا کنید :
کد PHP:
$ sudo update-rc.d proftpd enable
کد PHP:
$ sudo nano /etc/rc.local
کد PHP:
sleep 5
sudo mount --bind /opt/apt-mirror/mirror/archive.ubuntu.com/ /srv/ftp/
اگر شما پکیج ها را از ریپازیتوری های دبیان دریافت کردید دستورات زیر را اجرا کنید و مطمین شوید تنظیمات درست برای فایل rc.local در بالا فعال شود :
کد PHP:
$ sudo mkdir /srv/ftp/debian
$ sudo mount --bind /opt/apt-mirror/mirror/ftp.us.debian.org/debian/ /srv/ftp/debian/
8 . برای انجام یک synchronization روزانه apt-mirror همچنین میتوانید با استفاده از دستور crontab یک job برنامه ریزی شده در سیستم ایجاد کنید که هر روز ساعت 2 AM اجرا شود. برای این منظور با ساختار زیر job خود را ایجاد نمایید :
کد PHP:
$ sudo crontab –e
در آخر فایل خط زیر را اضافه نمایید :
کد PHP:
0 2 * * * /usr/bin/apt-mirror >> /opt/apt-mirror/mirror/archive.ubuntu.com/ubuntu/apt-mirror.log
اکنون هر روز ساعت 2 AM سیستم cache ریپازیتوری شما با mirror های ابونتو synchronization خواهد شد و یک log file ایجاد میشود.
مرحله 2
تنظیمات Client ها :
9 . برای تنظیم کلاینت های لوکال سیستم عامل ابونتو فایل etc/apt/source.list/ را روی کامپیوتر کلاینت باز و ویرایش کنید و ip address و hostname سرور apt-mirror را در فایل قرار دهید همچنین پروتکل http با ftp جایگزین کنید سپس سیستم را آپدیت کنید :
کد PHP:
deb ftp://192.168.1.13/ubuntu trusty universe
deb ftp://192.168.1.13/ubuntu trusty main restricted
deb ftp://192.168.1.13/ubuntu trusty-updates main restricted
## Ad so on….
10 . برای مشاهده ریپازیتوری ها شما میتوانید یک مرورگر را باز کنید و ip address دامین (domain) خود را با استفاده از پروتکل ftp باز کنید :
همچینین سیستم مشابهی برای کلاینت ها و سرورهای دبیان استفاده میشود و تنها تغییر مورد نیاز mirror دبیان و sources list آن میباشد.
همچنین اگر شما یک دبیان یا ابونتو جدید نصب کردید زمانی که installer از شما ریپازیتوری مورد استفاده تان را میپرسد شما به صورت دستی local mirror خود را با استفاده از پروتکل ftp در آن قرار دهید.
عالی ترین نکته درباره وجود locall mirror repository های شخصی خودتان این است که کلاینت های لوکال شما بدون نیاز به دسترسی به اینترنت به راحتی میتوانند پکیج ها یا نرم افزارهای خود را نصب یا آپدیت نمایند.
موفق وباشید
محمد هابیلی
کامنت