| git-annex-p2phttp(1) | General Commands Manual | git-annex-p2phttp(1) |
نام (NAME)
git-annex-p2phttp - سرور HTTP برای رابط برنامهنویسی (API) دستور git-annex
خلاصه دستور (SYNOPSIS)
git-annex p2phttp
توضیحات (DESCRIPTION)
این یک سرور HTTP برای API مربوط به git-annex است. این ابزار معادل git-annex برای git-http-backend(1) است، تا یک مخزن را از طریق HTTP به همراه دسترسی نوشتن برای کاربران احرازهویتشده ارائه دهد.
این دستور یک مخزن گیت را روی HTTP ارائه نمیدهد، بلکه صرفاً API مربوط به git-annex را ارائه میکند.
بهطور پیشفرض، این دستور API مربوط به git-annex را برای مخزن git-annex در پوشه کاری جاری ارائه میدهد. همچنین میتواند بیش از یک مخزن را ارائه دهد؛ پارامتر --directory را ببینید.
معمولاً یک مخزن دوردست (ریموت) مقدار remote.name.url را مانند همیشه روی یک نشانی http تنظیم میکند، و مقدار remote.name.annexUrl را روی یک نشانی annex+http مانند "annex+http://example.com/git-annex" تنظیم مینماید. نشانی annex+http توسط این سرور ارائه میشود و بهطور پیشفرض از درگاه (پورت) ۹۴۱۷ استفاده میکند.
توجه داشته باشید هنگامی که remote.name.url و remote.name.annexUrl حاوی نام میزبان (hostname) یکسانی باشند، git-annex فرض میکند که آنها از کاربران و گذرواژههای یکسانی پشتیبانی میکنند. بنابراین، git-annex از گذرواژهٔ remote.name.url برای ورود به remote.name.annexUrl استفاده خواهد کرد.
این سرور علاوه بر ارائه API مبتنی بر HTTP برای git-annex، روشی آسان برای دریافت محتوای هر کلید از طریق مسیر "/git-annex/$uuid/$key" فراهم میکند. برای مثال:
$ curl http://example.com:9417/git-annex/f11773f0-11e1-45b2-9805-06db16768efe/key/SHA256E-s6--5891b5b522d5df086d0ff0b110fbd9d21bb4fc7163af34d08286a2e846f6be03 hello
گزینهها (OPTIONS)
- --directory=path
- ارائه هر مخزن git-annex که در زیردایرکتوریهای این دایرکتوری یافت شود. برای مثال، --directory=/foo مخازن git-annex را در /foo/bar، /foo/user/bar و غیره پیدا خواهد کرد. توجه داشته باشید که مخزن git-annex واقع در داخل یک مخزن git-annex دیگر پیدا نخواهد شد.
- این گزینه میتواند بیش از یک بار مشخص شود تا چندین دایرکتوری پر از مخازن git-annex ارائه شوند.
- میتوان مخازن جدید git-annex را به دایرکتوری اضافه کرد و آنها بلافاصله شناسایی و ارائه خواهند شد. نیازی به راهاندازی مجدد سرور نیست.
- هنگامی که یک مخزن git-annex از دایرکتوری حذف شود، سرور ارائه آن را نیز متوقف خواهد کرد. این ممکن است بلافاصله انجام نشود، زیرا ممکن است برخی فایلها در مخزن حذفشده همچنان باز باشند.
- --jobs=N -JN
- این گزینه یا annex.jobs باید تنظیم شود تا تعداد رشتههای پردازشی (worker threads) به ازای هر مخزن ارائهشده که اتصالات سرور وب را مدیریت میکنند، پیکربندی گردد.
- این مقدار باید روی ۲ یا بیشتر تنظیم شود.
- یک انتخاب مناسب اغلب یک worker به ازای هر هسته پردازنده (CPU) است: --jobs=cpus
- --proxyconnections=N
- هنگام ارائه مخزنی که پیکربندی شده تا به عنوان پروکسی برای برخی از ریموتهای خود عمل کند، این گزینه حداکثر تعداد اتصالات بیکار (idle) را که باید با ریموتهای پروکسیشده باز بمانند مشخص میکند.
- مقدار پیشفرض ۱ است.
- --clusterjobs=N
- هنگام ارائه مخزنی که یک درگاه (gateway) برای کلاستر است، این گزینه تعداد پردازشهای همزمان برای دسترسی به گرههای کلاستر، به ازای هر اتصال به سرور وب را تعیین میکند.
- مقدار پیشفرض ۱ است.
- یک انتخاب مناسب برای این گزینه، ایجاد تعادل بین تعداد گرههای کلاستر و مقدار --jobs خواهد بود.
- برای مثال، اگر کلاستر دارای ۴ گره باشد و --jobs=4 باشد، استفاده از --clusterjobs=4 باعث میشود به تمام گرههای کلاستر بهطور همزمان دسترسی برقرار شود که اغلب بهینه است. اما در زمان شلوغی وبسرور ممکن است به حدود ۲۰ هسته نیاز باشد.
- --lockedfiles=N
- این تعداد کل فایلهای محتوا است که سرور میتواند همزمان قفل نگه دارد. هر قفل نیازمند یک توصیفکننده فایل (file descriptor) است.
- مقدار پیشفرض ۱۰۰ است که برای بیشتر استفادهها بیش از حد کافی خواهد بود.
- --port=N
- درگاهی (پورت) که سرور روی آن گوش میدهد. مقدار پیشفرض پورت ۹۴۱۷ است که پورت پیشفرض مورد استفاده برای نشانیهای annex+http یا annex+https میباشد.
- اجرای این دستور با دسترسی ریشه (root) بهمنظور استفاده از درگاههای با شماره پایین مانند پورت ۸۰ توصیه نمیشود. این دستور در صورت اجرا توسط کاربر ریشه، دسترسیهای خود را کاهش نمیدهد.
- --bind=address
- آدرسی که سرور باید به آن متصل شود (bind). مقدار پیشفرض، اتصال به تمام آدرسها است.
- --socket=path
- به جای اتصال به یک آدرس، یک سوکت دامنه یونیکس (unix domain socket) در مسیر مشخصشده ایجاد کرده و به آن گوش میدهد. این گزینه هنگام پروکسی کردن به git-annex p2phttp میتواند مفید باشد.
- --certfile=filename
- فایل گواهی TLS برای استفاده. ترکیب این گزینه با --privatekeyfile باعث استفاده سرور از پروتکل امن HTTPS میشود.
- --privatekeyfile=filename
- فایل کلید خصوصی TLS برای استفاده. ترکیب این گزینه با --certfile باعث استفاده سرور از HTTPS میشود.
- --chainfile=filename
- فایل زنجیره گواهی TLS برای استفاده. این گزینه را میتوان به هر تعداد تکرار کرد.
- --authenv
- امکان احراز هویت کاربران با نام کاربری و گذرواژه را فراهم میکند. به دلایل امنیتی، این گزینه فقط زمانی احراز هویت را مجاز میشمارد که کاربر از طریق HTTPS متصل شود.
- برای پیکربندی گذرواژهها، متغیرهای محیطی مانند GIT_ANNEX_P2PHTTP_PASSWORD_alice=foo123 را تنظیم کنید.
- همچنین میتوان مجوزهای کاربران را با تنظیم متغیرهای محیطی مانند GIT_ANNEX_P2PHTTP_PERMISSIONS_alice=readonly پیکربندی کرد. مقدار آن میتواند "readonly" یا "appendonly" باشد. در صورتی که تنظیم نشود، پیشفرض اعطای دسترسی کامل خواندن+نوشتن+حذف (read+write+remove) به کاربر است.
- --authenv-http
- مشابه --authenv است، اما زمانی که کاربر از طریق HTTP متصل میشود نیز احراز هویت را مجاز میکند. این کار امن نیست، زیرا احراز هویت پایه HTTP رمزگذاری نمیشود.
- --unauth-readonly
- به کاربران احرازهویتنشده اجازه میدهد مخزن را بخوانند، اما مجاز به ایجاد تغییر در آن نیستند.
- این گزینه میتواند با --authenv یا --authenv-http ترکیب شود تا امکان دسترسی ناشناس فقطخواندنی و دسترسی احرازهویتشده برای نوشتن فراهم گردد.
- --unauth-appendonly
- به کاربران احرازهویتنشده اجازه میدهد مخزن را بخوانند و دادهها را در آن ذخیره کنند، اما اجازه حذف دادهها را به آنها نمیدهد.
- این گزینه میتواند با --authenv یا --authenv-http ترکیب شود تا دسترسی ناشناس فقطالحاقی (appendonly) و دسترسی احرازهویتشده برای حذف فراهم شود.
- --unauth-nolocking
- بهطور پیشفرض، هنگامی که از --unauth-readonly یا --unauth-appendonly استفاده میشود، کاربران احرازهویتنشده مجاز به قفل کردن محتوا در مخزن هستند. این گزینه مانع از آن میشود.
- قفل کردن محتوا مانع از دور انداختن (drop) آن از مخزن میشود، بنابراین ممکن است یک کاربر احرازهویتنشده از این قابلیت سوءاستفاده کند؛ در چنین شرایطی میتوان از این گزینه استفاده نمود.
- توجه داشته باشید که فعالسازی این گزینه در برخی موارد مانع از آن میشود که کاربران احرازهویتنشده بتوانند محتوا را از سایر ریموتهای خود حذف کنند.
- --wideopen
- دسترسی کامل خواندن+نوشتن+حذف را به کاربران احرازهویتنشده برای مخزن میدهد.
- لطفاً پیش از فعال کردن این گزینه کاملاً تامل کنید.
همچنین ببینید (SEE ALSO)
git-annex(1)
git-http-backend(1)
git-annex-shell(1)
git-annex-updateproxy(1)
git-annex-initcluster(1)
git-annex-updatecluster(1)
https://git-annex.branchable.com/design/p2p_protocol_over_http
نویسنده (AUTHOR)
Joey Hess <id@joeyh.name>