سرور مخزن svn خود را راه اندازی می کنید؟ آنقدرها هم که به نظر می رسد پیچیده نیست.
Subversion یک سیستم ردیابی نسخه منبع باز است. این فایل ها را در یک مخزن مرکزی نگه می دارد و کنترل نسخه را روی دایرکتوری ها یا فایل ها فراهم می کند. بهعنوان یک توسعهدهنده، میتوانید فایلهای پروژه را از یک مخزن بیرون بکشید، تغییراتی در آنها ایجاد کنید و دوباره آنها را به عقب برگردانید.
Subversion همچنین دارای یک جزء سرور است که می توانید از آن برای میزبانی پروژه های خود استفاده کنید. بسیار شبیه به یک فایل سرور معمولی کار می کند.
نحوه نصب Subversion
براندازی برای نصب آسان است. برای شروع توزیع خود می توانید از دستور مناسب استفاده کنید:
# Debian, Ubuntu
sudo apt install subversion apache2 libapache2-mod-svn
# CentOS, Fedora, RHEL
sudo dnf install subversion apache2 mod_dav_svn
توجه داشته باشید که این دستور وب سرور Apache2 را نیز نصب می کند. اگر می خواهید از طریق HTTP یا WebDAV به مخزن Subversion دسترسی داشته باشید، به یک وب سرور نیاز دارید. شما همچنین می توانید از HTTPS استفاده کنید، برای این کار فقط باید یک گواهی دیجیتال را نصب و پیکربندی کنید.
هنگامی که این دستور را اجرا کردید، می توانید بررسی کنید که براندازی به درستی نصب شده است. اکنون باید بتوانید دستور svn را اجرا کنید و می توانید نسخه فعلی را با استفاده از گزینه –version مشاهده کنید:
پیکربندی سرور با براندازی
اگر نصب بدون مشکل انجام شد، اکنون می توانید روی پیکربندی مخزن که با svn استفاده می کنید شروع به کار کنید. البته، برای این کار باید یک مخزن جدید ایجاد کنید. ابتدا یک پوشه در یک پوشه ریشه برای قرار دادن مخزن خود ایجاد کنید:
sudo mkdir /subversion
اگر نیاز به دسترسی به مخزن خود با استفاده از WebDAV از طریق HTTP دارید، باید به آپاچی مالکیت دایرکتوری آن را بدهید. از آنجایی که آپاچی به طور پیش فرض از کاربر www-data استفاده می کند، این کاربر را به صورت زیر مجاز کنید:
sudo chown www-data:www-data /subversion
اکنون می توانید به کاربر www-data بروید و شروع به کار بر روی مخزن خود کنید. دستوری که برای ورود به عنوان کاربر www-data استفاده می کنید این است:
sudo su -s /bin/bash www-data
شما اکنون یک کاربر آپاچی هستید و پس از این مرحله می توانید مخزن Subversion خود را به صورت زیر ایجاد کنید:
svnadmin create /subversion/myrepo
شما اکنون یک مخزن Subversion دارید. برای اینکه این مخزن کمی ایمن تر شود و کاربران آن شناسایی شوند، قدم بعدی ایجاد یک کاربر و تعیین رمز عبور برای آن است. برای این کار از دستور زیر استفاده کنید:
htpasswd -cmb /subversion/passwd myadmin mypass
طبق این دستور نام کاربری شما myadmin و پسورد شما mypass خواهد بود. شما می توانید این مقادیر را به هر چیزی که برای شرایط شما مناسب است تغییر دهید.
مخزن Subversion شما اکنون آماده استفاده است. در این مرحله می توانید با استفاده از دستور exit از کاربر www-data خارج شوید.
اکنون می توانید با استفاده از دستور زیر یک پروژه یا فایل مورد نظر را به مخزن خود ارسال کنید:
sudo svn import <your-project-address> file:///subversion/myrepo -m "First Commit"
این دستور از پارامتر import استفاده می کند تا همه چیز را در پوشه پروژه شما به مخزن Subversion شما منتقل کند. در حین انجام این کار، باید پیام commit را با پارامتر -m اضافه کنید.
استفاده از روش های دسترسی در براندازی
ممکن است متوجه شده باشید که از پروتکل file:// برای اضافه کردن پروژه به مخزن خود استفاده می کنید. این تنها یکی از چندین پروتکل شبکه است که می توانید برای دسترسی به مخزن svn استفاده کنید. همچنین می توانید از پروتکل WebDAV روی HTTP یا HTTPS یا پروتکل svn سفارشی subversion استفاده کنید.
دسترسی مستقیم به مخزن
همانطور که مشاهده کردید، می توانید از پروتکل file:// برای دسترسی به یک مخزن محلی استفاده کنید. در اینجا چگونه می توانید یک مخزن محلی را در فهرست فعلی خود بررسی کنید:
svn co file:///subversion/myrepo
هنگامی که مخزن را بررسی می کنید، svn لیستی از فایل های موجود در آن را نمایش می دهد:
دسترسی با استفاده از WebDAV
برای ادغام مخزن Subversion خود با آپاچی، باید برخی تنظیمات را پیکربندی کنید.
برای اولین مرحله، ماژولهای dav، dav_svn و dav_fs را با استفاده از دستورات زیر فعال کنید:
sudo a2enmod dav dav_fs dav_svn
پس از فعال سازی ماژول های مورد نیاز، اکنون می توانید فایل /etc/apache2/mods-enabled/dav_svn.conf را ویرایش کنید. اگر فایلی وجود ندارد، آن را ایجاد کنید و محتوای آن را به صورت زیر تغییر دهید:
<Location /subversion>
DAV svn
SVNPath /subversion/myrepo
AuthType Basic
AuthName "Subversion Repository"
AuthUserFile /subversion/passwd
Require valid-user
</Location>
تنظیمات AuthUserFile به فایلی که قبلاً با استفاده از htpasswd ایجاد کرده اید ارجاع می دهد. افزودن آن در اینجا به همه کاربرانی که در فایل نامگذاری شده اند دسترسی به مخزن را می دهد، مشروط بر اینکه با یک رمز عبور معتبر احراز هویت کنند.
پس از ایجاد و ذخیره این فایل، سرویس Apache2 را با دستور زیر راه اندازی مجدد کنید:
sudo systemctl restart apache2.service
اکنون، هنگامی که یک مرورگر وب را باز می کنید و به http://localhost/subversion/ می روید، محتویات مخزن خود را خواهید دید. وقتی به این آدرس می روید، نام کاربری و رمز عبور شما را می خواهد:
با نام کاربری (به عنوان مثال myadmin) و رمز عبور (mypass) که قبلاً تنظیم کرده اید وارد شوید. پس از وارد کردن نام کاربری و رمز عبور، میتوانید با استفاده از WebDAV به مخزن Subversion خود دسترسی پیدا کنید:
دسترسی با SSL و WebDAV
پروتکل https:// تقریباً همان پیکربندی پروتکل http:// را دارد، تنها با چند تفاوت مهم. برای مثال، فایل .conf که باید در طول پیکربندی استفاده کنید متفاوت است. همچنین باید گواهی دیجیتال نصب کنید. زیرا همانطور که می دانید، این منطق کار روش رمزگذاری SSL است.
شما می توانید یک گواهی دیجیتال را خودتان ایجاد کنید، یا می توانید یک گواهی صادر شده توسط یک مقام صالح را نصب کنید. با فرض اینکه یک گواهی دیجیتال نصب کرده اید، کاری که باید انجام دهید ساده است.
تفاوت در این مرحله تغییراتی است که در فایل پیکربندی ایجاد خواهید کرد. در زیر یک فایل پیکربندی نمونه برای استفاده از SSL و WebDAV آمده است:
<Location /subversion>
DAV On
SSLRequireSSL
Options None
AuthType Basic
AuthName "Subversion Repository"
AuthUserFile /subversion/passwd
Require valid-user
</Location>
همانطور که می بینید، تفاوت بین پروتکل های https:// و http:// از نظر تغییرات در فایل پیکربندی زیاد نیست. پس از این تغییرات، باید سرویس apache2 را مجددا راه اندازی کنید. برای انجام این کار systemctl apache2.service را مجددا راه اندازی کنید.
چرا از براندازی استفاده کنیم؟
به عنوان یک ردیاب نسخه، Subversion هر تغییر ایجاد شده در فایل ها و دایرکتوری ها را به خاطر می آورد. این به شما امکان می دهد به نسخه های قدیمی نرم افزار یا اسنادی که با آنها کار می کنید دسترسی داشته باشید و تفاوت های آنها را پیدا کنید. این امر مدیریت پروژه ها را آسان تر می کند، به خصوص اگر تیم توسعه شما بزرگ یا توزیع شده باشد.
سیستم های کنترل نسخه زیادی برای لینوکس به غیر از Subversion وجود دارد که ممکن است بخواهید آنها را در نظر بگیرید.