راهکارها
بازارچه ابری
Arvan Docs

مستندات فنی

دسترسی به تمامی مستندات محصولات ابر آروان

Categories
Close
دسته‌بندی‌های سایت مشاهده دسته‌بندی‌ها بستن دسته‌بندی‌ها





مشاهده همه دسته‌ها All Categories

پیکربندی و استفاده از ریپازیتوری Subversion برای Review Board

Time To Read ۶ دقیقه
Date ۲۳ شهریور ۱۴۰۰

ایجاد ریپازیتوری Subversion

با SSH به سرور خود متصل شوید و با اجرای دستورات زیر ابتدا دایرکتوری repository را در مسیر /opt/bitnami/repositories و سپس یک repository جدید Subversion به نام myapp را ایجاد کنید.

sudo mkdir /opt/bitnami/repositories
sudo svnadmin create /opt/bitnami/repositories/myapp
sudo chown -R bitnami:bitnami /opt/bitnami/repositories

پیکربندی URL ریپازیتوری Subversion

اگر هیچ پیشوندی در اسکریپت‌های Subversion نیامده است، آدرس کامل Subversion را مشخص کنید. برای نمونه svn://SERVER-IP/home/user/repository. در شرایطی که این کار امکان‌پذیر نبود، مسیر repository را به اسکریپت کنترلی subversion اضافه کنید.

  • فایل /opt/bitnami/subversion/scripts/ctl.sh را ویرایش کرده و مسیر را مطابق زیر اضافه کنید:
-d --listen-port=3690 --root=/path/to/repository
  • سرور subversion را دوباره راه‌اندازی کنید.

مرور ریپازیتوری Subversion با استفاده از مرورگر وب

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

  • فایل پیکربندی Apache را که در مسیر /opt/bitnami/apache2/conf/httpd.conf قرار دارد، به‌روز کنید تا ماژول‌های زیر را بارگذاری کند.
LoadModule dav_module modules/mod_dav.so
LoadModule dav_fs_module modules/mod_dav_fs.so
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so
  • در همان فایل بررسی کنید که URL نهایی و مسیر ریپازیتوری ساب‌ورژن‌تان چیست. برای مثال با مشاهده‌ی بخشی که در ادامه آمده متوجه می‌شوید که ریپازیتوری پیش‌فرض که در /opt/bitnami/repository قرار دارد با وارد کردن آدرس http://SERVER-IP/repository در دسترس است.
<Location /subversion>
DAV svn
SVNPath "/opt/bitnami/repository"
</Location>
  • آپاچی را دوباره راه‌اندازی کنید:
sudo /opt/bitnami/ctlscript.sh restart apache

اکنون باید بتوانید ریپازیتوری‌تان را با استفاده از ابزاری مانند TortoiseSVN بررسی کنید. در رابط کاربری TortoiseSVN آدرس ریپازیتوری‌تان، مثلا http://SERVER-IP/repository، را مشابه تصویر زیر وارد کنید:

دسترسی کلاینت TortoiseSVN

فعال‌سازی دسترسی از طریق HTTPS

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

svn: OPTIONS of 'https://example.com/repository': SSL negotiation failed: SSL error code -1/1/336032856 (https://example.com)

فعال‌سازی کامیت‌ها از طریق HTTP(S)

بنا به ملاحظات امنیتی پیکربندی پیش‌فرض به کاربران اجازه نمی‌دهد که از طریق HTTP یا HTTPS تغییرات در ریپازیتوری را کامیت کنند. برای اینکه اجازه‌ی چنین کاری را بدهید، مجوزهای دایرکتوری ریپازیتوری‌تان را تغییر دهید تا کاربر Apache اجازه‌ی نوشتن در آن را داشته باشد.

دستور زیر را اجرا کنید. البته فرض شده که ریپازیتوری‌تان در موقعیت پیش‌فرض (/opt/bitnami/repository) قرار دارد:

sudo chown -R daemon:subversion /opt/bitnami/repository

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

اکنون، همان‌طور که در تصویر زیر دیده می‌شود، باید بتوانید از طریق ابزاری مانند TortoiseSVN تغییرات را در ریپازیتوری کامیت کنید.

دسترسی کلاینت TortoiseSVN

دسترسی کلاینت TortoiseSVN

پیکربندی سیستم احراز هویت پایه برای ریپازیتوری Subversion

توصیه می‌شود که بعد از فعال کردن دسترسی به ریپازیتوری از طریق HTTP(S)، با پیکربندی سیستم احراز هویت از دسترسی بی‌اجازه به آن جلوگیری کنید. برای این کار مراحل زیر را دنبال کنید:

  • فایل پیکربندی آپاچی را که در /opt/bitnami/apache2/conf/httpd.conf قرار دارد به‌روز کرده و بخشی را که در ادامه آمده به آن اضافه کنید.
<Location /subversion>
DAV svn
SVNPath "/opt/bitnami/repository"
AuthType Basic
AuthName "Subversion repository"
AuthUserFile /opt/bitnami/repository/users
require valid-user
</Location>

با این پیکربندی تنها کاربرانی به ریپازیتوری دسترسی دارند که نامشان در فایل /opt/bitnami/repository/users آمده باشد و پیش از دسترسی نیز لازم است که هویت خودشان را تایید کنند. توجه کنید که مسیر ریپازیتوری خودتان را در این پیکربندی جایگزین کنید.

  • فایل /opt/bitnami/repository/users را ایجاد کرده و با استفاده از دستور زیر یک حساب کاربری به نام myuser به آن اضافه کنید. از شما خواسته می‌شود که رمز عبوری برای این کاربر وارد کنید. توجه کنید که در این دستور باید مسیر ریپازیتوری خودتان را جایگزین کنید.
sudo /opt/bitnami/apache2/bin/htpasswd -c /opt/bitnami/repository/users myuser
  • این مرحله را برای اضافه کردن کاربران بیشتر تکرار کنید ولی در مراحل بعد -c را حذف کنید. برای مثال:
sudo /opt/bitnami/apache2/bin/htpasswd /opt/bitnami/repository/users myotheruser
  • سرور آپاچی را دوباره راه‌اندازی کنید.
sudo /opt/bitnami/ctlscript.sh restart apache

اکنون اگر بخواهید با استفاده از TortoiseSVN به ریپازیتوری دسترسی پیدا کنید، مطابق تصویر زیر از شما خواسته می‌شود که نام کاربری و رمز عبور وارد کنید:

دسترسی کلاینت TortoiseSVN

فعال‌سازی مرور ناشناسانه

اگر می‌خواهید همه‌ی کاربران بتوانند ریپازیتوری‌تان را بخوانند، اما همه‌شان قادر به ویرایش آن نباشند، مراحل فوق را تکرار کنید و تنها خط زیر را از

require valid-user

به

<LimitExcept GET PROPFIND OPTIONS REPORT>
require valid-user
</LimitExcept>

تغییر دهید.

فعال‌سازی دسترسی انحصاری از طریق HTTPS

اگر می‌خواهید که کاربران فقط بتوانند از طریق HTTPS به ریپازیتوری‌تان دسترسی داشته باشند، باید SSLRequireSSL را به بخشی که در قسمت قبل توضیح داده شد اضافه کنید:

...
AuthName "Subversion repository"
AuthUserFile /opt/bitnami/repository/users
require valid-user
SSLRequireSSL
</Location>

پیکربندی دسترسی SSH به ریپازیتوری Subversion

برای ایجاد ریپازیتوری‌ای که بتوان از طریق SSH به آن دسترسی پیدا کرد، مراحل زیر را دنبال کنید:

  • از طریق SSH به سرورتان متصل شده و با اجرای دستورات زیر ایتدا دایرکتوری ریپازیتوری را در مسیر /opt/bitnami/repositories و سپس یک ریپازیتوری جدید ساب‌ورژن به نام myapp ایجاد کنید:
sudo mkdir /opt/bitnami/repositories
sudo svnadmin create /opt/bitnami/repositories/myapp
sudo chown -R bitnami:bitnami /opt/bitnami/repositories
    • ریپازیتوری‌تان را به یک پروژه‌ی Redmine اختصاص دهید. در Redmine به منوی Settings -> Repository رفته و مقدار زیر را به بخش URL اضافه کنید (نیازی به نام کاربری و رمز عبور نیست):
file:///opt/bitnami/repositories/myapp
  • بررسی کنید که آیا باینری‌های ساب‌ورژن را در سیستم‌پث خود، حتی در بخش non-interactive SSH، دارید یا نه. دستور زیر را اجرا کنید:
ssh -l bitnami -i KEYFILE SERVER-IP svn

فراموش نکنید که در دستور فوق به جای KEYFILE مسیر فایل کلید خصوصی‌تان و به جای SERVER-IP آی‌پی آدرس عمومی یا نام هاست سرورتان را بنویسید.

اگر با پیام خطای Command not found مواجه شدید، فایل /home/bitnami/.bashrc را به‌روز کرده و تمام پیکربندی‌های مسیر بیتنامی را از انتهای فایل به بالای خط زیر منتقل کنید:

[ -z "$PS1" ] && return
  • اکنون ریپازیتوری را بررسی کنید و شروع به اضافه کردن و کامیت کردن فایل‌های جدید کنید. ریپازیتوری باید از طریق URL زیر در دسترس باشد. کلاینت ساب‌ورژن باید به گونه‌ای پیکربندی شود که از نام کاربری bitnami و کلید SSH متناظر با آن استفاده کند:
svn+ssh://xyz.bitnamiapp.com/opt/bitnami/repositories/myapp

فراموش نکنید که به جای xyz.bitnamiapp.com، آی‌پی آدرس عمومی یا نام هاست سرورتان را بنویسید.

  • برای اضافه کردن فایل به ریپازیتوری‌تان، دستورات زیر را در لوکال هاست‌تان اجرا کنید. فراموش نکنید که به جای bitnami-hosting.pem مسیر فایل کلید خصوصی و به جای xyz.bitnamiapp.com آی‌پی آدرس عمومی یا نام هاست سرورتان را بنویسید.
export SVN_SSH="ssh -l bitnami -i bitnami-hosting.pem"
svn checkout svn+ssh://xyz.bitnamiapp.com/opt/bitnami/repositories/myapp
cd myapp
echo "This is a simple test" > Readme.txt
svn add Readme.txt
svn commit -m "Adding simple readme file, closes #1"

فعال‌سازی نوتیفیکشن‌های پس از کامیت Subversion

اگر می‌خواهید ریپازیتوری ساب‌ورژن از طریق SMTP برایتان ایمیلی حاوی لاگ کامیت‌ها را ارسال کند، مراحل زیر را دنبال کنید:

  • جدیدترین سورس کد را از Subversion دانلود کرده و دایرکتوری hooks را در دایرکتوری /opt/bitnami/subversion کپی کنید:
wget http://apache.mesi.com.ar/subversion/subversion-1.8.9.tar.gz
tar -xzvf subversion-1.8.9.tar.gz
sudo cp -r subversion-1.8.9/tools/hook-scripts /opt/bitnami/subversion/hooks
  • فایل آزمایشی mailer.conf را کپی کنید:
sudo cp /opt/bitnami/subversion/hooks/mailer/mailer.conf.example /opt/bitnami/subversion/hooks/mailer/mailer.conf
  • در فایل mailer.conf تنظیمات SMTP را پیکربندی کنید. مثال زیر مربوط به یک حساب جی‌میل است:
[General]
smtp_hostname = smtp.gmail.com:465
smtp_username = your_gmail_account
smtp_password = your_password
smtp_use_ssl = true

...

[defaults]
from_addr = mail@example.com

# The default To: addresses for message.  One or more addresses,
# separated by whitespace (no commas).
# NOTE: If you want to use a different character for separating the
#       addresses put it in front of the addresses included in square
#       brackets '[ ]'.
to_addr = mail@example.com

# If this is set, then a Reply-To: will be inserted into the message.
reply_to = mail@example.com
  • اسکریپت هوکِ بعد از کامیت‌تان را با استفاده از فایل‌های mailer.py و mailer.conf پیکربندی کنید. موقعیت اسکریپت پس از کامیت‌تان به موقعیت ریپازیتوری‌تان بستگی دارد. فایل /opt/bitnami/repositories/REPOSITORY-NAME/hooks/post-commit.tmpl را ویرایش کرده و خط آخر را با خط زیر جایگزین کنید:
/opt/bitnami/python/bin/python /opt/bitnami/subversion/hooks/mailer/mailer.py commit "$REPOS" "$REV" /opt/bitnami/subversion/hooks/mailer/mailer.conf

اگر دایرکتوری /opt/bitnami/python وجود نداشت، از باینری پایتونِ سیستم استفاده کنید که معمولا در /usr/bin/python قرار دارد.

  • هوکِ بعد از کامیت را با تغییر نام اسکریپت بعد از کامیت و حذف .tmpl فعال کنید:
sudo mv /opt/bitnami/repositories/your_repo/hooks/post-commit.tmpl /opt/bitnami/repositories/your_repo/hooks/post-commit

برای آزمایش در یک فایل تغییر ایجاد کرده و تغییرات را کامیت کنید. اگر عملیات با مشکل مواجه شود، بعد از کامیت پیام خطا برایتان نمایش داده می‌شود.