Pypiserver - سرور حداقل PYPI برای استفاده با PIP/EASY_INSTALL
kostis anagnostopoulos ،شخصی جدید؟ما به دنبال نگهدارنده های جدید هستیم!
مجوز :
با ما در Zulip گپ بزنید!
Pypiserver یک سرور حداقل PYPI برای PIP یا Easy_install است. این بر اساس بطری است و بسته های مربوط به دایرکتوری های معمولی را سرو می کند. چرخ ها ، bdist ها ، تخم مرغ ها و همراهان همراه با PGP را می توان با PIP ، Setuptools ، Twine ، Pypi-Uploader یا به سادگی با SCP بارگذاری کرد.
نرم افزار رسمی PYPI انبار است. با این حال ، Warehouse نسبتاً تخصصی برای نرم افزار شخصی PYPI. org است و نباید در زمینه های دیگر مورد استفاده قرار گیرد. به طور خاص ، از کاربرانی که مایل به ارائه بسته های خود هستند ، به طور رسمی به عنوان یک فهرست بسته بندی سفارشی پشتیبانی نمی کند.
Pypiserver همان رابط های PYPI را پیاده سازی می کند ، و به ابزار بسته بندی استاندارد پایتون مانند PIP و Twine اجازه می دهد تا با آن به عنوان یک فهرست بسته درست همانطور که با PYPI انجام می شود ، با آن ارتباط برقرار کنند ، در حالی که دریافت یک سرور در حال اجرا را آسان تر می کند.
Quickstart: نصب و استفاده
Pypiserver با Python 3. 6+ و PYPY3 کار می کند.
نسخه های قدیمی پایتون ممکن است هنوز هم کار کنند ، اما آزمایش نشده اند.
برای نسخه های Python Legacy ، از سری Pypiserver-1. x استفاده کنید. توجه داشته باشید که اینها به طور رسمی پشتیبانی نمی شوند و اشکالات یا ویژگی های جدید دریافت نمی کنند.
دستورات زیر روی یک سیستم عامل مانند یونیکس با پوسته POSIX کار می کنند.'~شخصیت به فهرست خانه کاربر گسترش می یابد.
اگر از ویندوز استفاده می کنید ، باید از "همتایان ویندوز" آنها استفاده کنید. در مورد بقیه این مستندات نیز همین مسئله صادق است.
- pypiserver را با این دستور نصب کنید:
PIP نصب pypiserver # یا: pypiserver [passlib ، cache] mkdir~/بسته ها # بسته ها را در این فهرست کپی کنید.
پیپ ی-سرو ر-P 8080~/بسته ها و # به همه IP ها گوش می دهند.
# بسته های میزبان را بارگیری و نصب کنید. نصب پیپ-extra-index-url http: // localhost: 8080/ساده/.# یا PIP نصب-extra-index-url http: // localhost: 8080.# بسته های میزبان جستجو. جستجوی پی پ-Index http: // localhost: 8080.# توجه داشته باشید که جستجوی PIP در حال حاضر با / ساده / نقطه پایانی کار نمی کند.
PYPI-SERVER [گزینه ها] [Packages_Directory.] Server Package Package Package Package Package را شروع کنید و بسته های Packages_Directory را ارائه دهید. اگر Packages_Directory در خط فرمان داده نشده باشد ، از پیش فرض استفاده می کند~/بسته هاPypiserver این فهرست را به صورت بازگشتی برای بسته ها اسکن می کند. بسته ها و دایرکتوری ها را با یک نقطه شروع می کند. دایرکتوری های چند بسته را می توان مشخص کرد. PYP I-Server گزینه های زیر را درک می کند: -P ، پورت پورت در پورت بندر گوش دهید (پیش فرض: 8080).-i ، -رابط رابط در رابط رابط (پیش فرض: 0. 0. 0. 0 ، هر رابط) گوش دهید.-a ، -authenticate (بروزرسانی | بارگیری | لیست) ،. لیست جدا شده از کاما از اقدامات (حساس به مورد) برای تأیید اعتبار. نیاز به تنظیم رمز عبور (گزین ه-p) دارد. برای بارگیری بسته های محافظت از رمز عبور (علاوه بر بارگذاری) در حالی که لیست ها را به صورت عمومی ترک می کنید ، استفاده کنید: -p foo/htpasswd. tx t-a به روزرسانی ، بارگیری را بارگیری کنید تا امکان دسترسی غیرمجاز را فراهم کنید ، استفاده کنید: -p.-آ . توجه داشته باشید که در صورت محافظت از آپلودها ، دستور "Register" ضروری نیست ، اما `~/. pypirc` هنوز هم به زمینه های نام کاربری و رمز عبور احتیاج دارید ، حتی اگر جعلی باشد. به طور پیش فرض ، فقط "به روزرسانی" محافظت از رمز عبور است.-p ، -passwords password_file استفاده از Apache htpasswd File password_file برای تنظیم نام های کاربری و رمزهای عبور در هنگام تأیید اعتبار برخی اقدامات (به گزین ه-a گزینه مراجعه کنید). برای دسترسی غیرمجاز ، استفاده کنید: -p.-آ .-برای بسته هایی که در شاخص محلی یافت نمی شود ، تغییر مسیر را به شاخص PYPI واقعی غیرفعال کنید.-fallback-url fallback_url برای بسته هایی که در شاخص محلی یافت نمی شود ، از این آدرس برای هدایت به (پیش فرض: https://pypi. org/simple/) استفاده می شود.-روش سرور از روش برای اجرای سرور استفاده کنید. مقادیر معتبر شامل خمیر ، Cherrypy ، Twisted ، Gunico ، Gevent ، Wsgiref ، Auto است. پیش فرض استفاده از "خودکار" است که یکی از خمیر ، Cherrypy ، Twisted یا WSGiref را انتخاب می کند.-r ، -بسته های ریشه ای_دراکتوری [مستهلک] بسته های بسته بندی شده از Packages_Directory را سرو کنید.-o ، -Overwrite اجازه می دهد تا پرونده های بسته موجود را رونویسی کنید.-هاش-آلگو algo هر «هاشلیب» در دسترس است که به عنوان قطعاتی در لینک های بسته استفاده می شود. یکی از (0 ، نه ، خاموش ، نادرست) را غیرفعال کنید (پیش فرض: MD5).--Elechold html_file از محتوای ASCII html_file به عنوان پاسخ پیام خوش آمدید استفاده می کند.-V ورود به سیستم Verbose ؛برای کمبود بیشتر تکرار کنید.-log-conf تنظیمات ورود به سیستم را از پرونده بخوانید. به طور پیش فرض ، پیکربندی از "log. conf" در صورتی که در DIR سرور یافت می شود ، خوانده می شود.-اطلاعات ورود به سیستم اطلاعات ورود به سیستم را در این پرونده بنویسید.-log-frmt رشته ورود به سیستم (به کلاس `logging. logrecord 'از کتابخانه استاندارد پایتون مراجعه کنید).[پیش فرض: ٪ (asctime) s | ٪ (name) s | ٪ (levelname) s | ٪ (موضوع) d | ٪ (پیام) s]-فرمت-log-req-frmt فرمت یک رشته را انتخاب می کند و ویژگی های HTTP-request را انتخاب می کندبرای ورود به سیستمبرای دیدن همه آنها روی '٪ s' تنظیم کنید.[پیش فرض: ٪ (Bottle. Request) S]-LOG-RES-FRMT فرمت یک رشته را انتخاب می کند و ویژگی های پاسخ HTTP را برای ورود به سیستم انتخاب می کند. برای دیدن همه آنها روی '٪ s' تنظیم کنید.[پیش فرض: ٪ (وضعیت) S]-فرمت-LOG-err-FRMT یک رشته با انتخاب ویژگی های HTTP-Error برای ورود به سیستم ؛برای دیدن همه آنها روی '٪ s' تنظیم کنید.[پیش فرض: ٪ (بدن) S: ٪ (استثنا) s n ٪ (traceback) s]-سن کنترل-کنترل اضافه کردن "Cache-Control: Max-Age = Age ، Public" هدر برای بسته بندی بارگیری. PIP 6+ برای ذخیره سازی به این امر نیاز دارد. PYP I-SERVE R-H ، -HELP این پیام راهنما را نشان می دهد. PYPI-SERVER-VVERSION نمایش نسخه پیپی-سرور. PYP I-SERVE R-U [گزینه ها] [Packages_directory.] بسته ها را در Packages_Directory به روز کنید. این دستور pypi. org را برای به روزرسانی جستجو می کند و یک خط فرمان PIP را نشان می دهد که بسته را به روز می کند. گزینه های اضافی زیر را می توان ب ا-u مشخص کرد: -x به جای اینکه فقط آنها را نشان دهید ، دستورات PIP را اجرا کنید.
-d بارگیری_دیرکتوری بارگیری بسته بندی به روزرسانی به این فهرست. پیش فرض استفاده از دایرکتوری است که شامل آخرین نسخه بسته بندی شده است که باید به روز شود.-u اجازه می دهد تا به روزرسانی به نسخه ناپایدار (آلفا ، بتا ، RC ، نسخه های DEV). برای اطلاعات بیشتر به https://github. com/pypiserver/pypiserver مراجعه کنید.
پیکربندی های سمت مشتری
همیشه مشخص کردن URL PYPI در خط فرمان کمی دست و پا گیر است. از آنجا که Pypiserver PIP/EASY_INSTALL را به فهرست PYPI. org هدایت می کند اگر بسته درخواست شده ای نداشته باشد ، این ایده خوبی است که آنها را پیکربندی کنید تا همیشه از شاخص PYPI محلی خود استفاده کنند.
پیکربندی پیپ
برای فرمان PIP این کار را می توان با تنظیم متغیر محیط PIP_EXTRA_INDEX_URL در . bashr/. profile/. zshrc انجام داد:
صادرات PIP_EXTRA_INDEX_URL = http: // localhost: 8080/ساده/~یا با اضافه کردن خطوط زیر به
/. pip/pip. conf:
[Global] Indep-Index-url = http: // localhost: 8080/Simple/
اگر Pypiserver را بر روی URL از راه دور بدون HTTPS نصب کرده اید ، یک هشدار "غیرقابل اعتماد" از PIP دریافت خواهید کرد و از شما خواسته است تا گزینه-میزبان-میزبان را ضمیمه کنید. همچنین می توانید این گزینه را به طور دائم در متغیرهای پیکربندی یا متغیرهای محیط خود قرار دهید.
پیکربندی Easy_install~برای دستور Easy_Install ممکن است پیکربندی زیر را در تنظیم کنید
/. pydistutils. cfg:
[Easy_install] index_url = http: // localhost: 8080/ساده/
بارگذاری بسته ها از راه دور
به جای کپی کردن بسته ها به طور مستقیم در پوشه سرور (یعنی با SCP) ، ممکن است از ابزارهای پایتون برای کار استفاده کنید ، به عنوان مثال. بارگذاری Python Setup. py. در این حالت ، Pypiserver وظیفه تأیید اعتبار آپلود را دارد.
ما اکیداً توصیه می کنیم آپلودهای شما را محافظت کنیم!
غیرفعال کردن احراز هویت برای آپلودها (به عنوان مثال در اینترانت ها) امکان پذیر است. برای جلوگیری از تصمیمات امنیتی تنبل ، برای گزینه ها ی-P و-A کمک بخوانید.
- First make sure you have the passlib module installed (note that passlib>احراز هویت مانند Apache (htpasswd)
= 1. 6 مورد نیاز است) ، که برای تجزیه پرونده Apache htpasswd مشخص شده توسط گزین ه-p ، -passwords مورد نیاز است (مراحل بعدی را ببینید):
PIP نصب passlib htpassw d-sc htpasswd. txt
نکته این سؤال را برای اجرای htpasswd cmd تحت ویندوز بخوانید:
یا اگر رمزهای عبور جعلی دارید که به آنها اهمیت نمی دهید زیرا آنها برای یک سرویس داخلی هستند (که هنوز هم "بد" است ، از دیدگاه امنیتی ...) ممکن است از این سرویس عمومی استفاده کنید:
نکته هنگام دسترسی به Pypiserver از طریق API ، روش های احراز هویت متناوب از طریق پرچم پیکربندی Auther در دسترس هستند. هرگونه تماس تلفنی که یک بولی را بازگرداند ، می تواند برای تهیه احراز هویت سفارشی به پیکربندی Pypiserver منتقل شود. به عنوان مثال ، برای پیکربندی Pypiserver برای تأیید اعتبار با استفاده از Python-PAM:
وارد کردن pam pypiserver. default_config (auther = pam. authenticate)~./pyp i-serve r-p 808 0-p htpasswd. txt
/بسته ها و
- بارگذاری با setuphools~در سمت مشتری ، ویرایش یا ایجاد
/.. pypirc پرونده با یک محتوای مشابه:
[distutils] index-servers = pypi local [pypi] نام کاربری: گذرواژه: [محلی] مخزن: http: // localhost: 8080 نام کاربری: رمز عبور:
Python Setup. py Sdist Auploa d-r Local
بارگذاری با ریسمان
- برای جلوگیری از ذخیره رمزهای عبور روی دیسک ، در متن روشن ، ممکن است:
از دستور Register Setuptools با گزین ه-r استفاده کنید ، مانند آن:
Python Setup. py Sdist Registe r-r بارگذاری محل ی-r محلی
آپلود Twin e-r محل ی-SIG N-IDIENTITY USER_NAME ./FO O-1. ZIP
با استفاده از تصویر docker
با شروع نسخه 1. 2. 5 ، تصاویر رسمی Docker برای هر فشار به استاد ، هر نسخه Dev ، Alpha یا Beta و هر نسخه نهایی ساخته می شود. جدیدترین نسخه کامل همیشه در زیر برچسب جدید در دسترس خواهد بود و شعبه استاد فعلی همیشه تحت عنوان Tag Instable در دسترس خواهد بود.
همیشه می توانید بررسی کنید که در حال حاضر برچسب ها در Docker Repo ما موجود است.
برای اجرای جدیدترین نسخه Pypiserver با Docker ، به سادگی:
docker run pypiserver/pypiserver: آخرین
این کار Pypiserver را شروع می کند که بسته های مربوط به فهرست /داده ها /بسته ها را در داخل ظرف سرو می کند و به پورت کانتینر 8080 گوش می دهد.
کانتینر تمام آرگومان های مشابه PYP I-Server اجرایی را به استثنای درگاه ظروف داخلی (-P) ، که همیشه 8080 خواهد بود ، می گیرد.
البته فقط اجرای یک ظرف جالب نیست. برای نقشه برداری پورت 80 در میزبان به پورت 8080 روی ظرف:
Docker Ru n-P 80: 8080 Pypiserver/Pypiserver: آخرین
اکنون می توانید به Pypiserver خود در LocalHost: 80 در یک مرورگر وب دسترسی پیدا کنید.~برای ارائه بسته های یک دایرکتوری روی میزبان ، به عنوان مثال
/بسته ها:~Docker Ru n-P 80: 808 0-V
/بسته ها:/داده ها/بسته های pypiserver/pypiserver: آخرین
/بسته ها:~Docker Ru n-P 80: 808 0-V
/. htpasswd:/data/. htpasswd pypiserver/pypiserver: آخرین بسته ها ی-p . htpasswd
همچنین می توانید Pypiserver را برای اجرای به عنوان یک سرویس Docker با استفاده از ComposeFile مشخص کنید. نمونه ای از ComposeFile ارائه شده است.
روش های نصب جایگزین
هنگام تلاش روشهای زیر ، ابتدا از دستور زیر استفاده کنید تا بررسی کنید که آیا نسخه های قبلی Pypiserver از قبل وجود دارد ، و (به صورت اختیاری) آنها را حذف نصب کنید:
# نسخه چک: در صورت عدم نصب ، شکست می خورد. PYPI-SERVER-VVERSION # UNINSTALL: تا زمانی که شکست بخورد دوباره فراخوانی کنید. پیپیزور پیپ را حذف نصب کرد
نصب آخرین نسخه
در صورتی که آخرین نسخه در PYPI قبل از انتشار باشد ، باید از گزینه PIP استفاده کنید. و برای به روزرسانی نصب موجود ، آن را ب ا-ژنه نصب شده ترکیب کنید:
PIP نصب pypiserver --pr e-i
شما حتی می توانید آخرین Pypiserver را مستقیماً از GitHub با دستور زیر نصب کنید ، با فرض اینکه GIT را در مسیر خود نصب کرده اید:
نصب پیپ git+git: //github. com/pypiserver/pypiserver. git
دویدن روی Heroku/dotcloud
https://github. com/dexterous/pypiserver-on-the-cloud شامل دستورالعمل هایی در مورد نحوه اجرای pypiserver در یکی از ارائه دهندگان خدمات ابری پشتیبانی شده است.
دستور پخت
مدیریت فهرست بسته بندی
دستور PYP I-Server دارای گزین ه-u است که به روزرسانی بسته های موجود را جستجو می کند. برای به روزرسانی ها ، فهرست بسته ها و جستجوهای موجود در PYPI. org را اسکن می کند. بدون گزینه های بیشتر PYP I-Serve r-U فقط لیستی از دستورات را چاپ می کند که برای به دست آوردن آخرین نسخه از هر بسته باید اجرا شود. خروجی به نظر می رسد:
$ ./pyp i-serve r-u بررسی 106 بسته برای نسخه جدیدتر. ایالات متحدهe.. uبشره. ه. بشرهیچ نسخه ای در PYPI برای PYXML ، PYMACS ، MERCURIAL ، SETUPTOOLS # به روزرسانی Raven از 1. 4. 3 تا 1. 4. 4 نصب PI P-Q-NO-DEPS-EXTRA-Index-Url https://pypi. org/simple/ یافت نمی شود.-d/home/ralf/packages/mirror raven == 1. 4. 4 # به روزرسانی گرینلت از 0. 3. 3 تا 0. 3. 4 نصب PI P-Q-no-deps-extra-index-url https://pypi. org/Simple/-D/Home/Ralf/Packages/Mirror Greenlet == 0. 3. 4
این ابتدا برای هر بسته یک کاراکتر واحد پس از بررسی نسخه های موجود در PYPI چاپ می شود. نقطه (.) به این معنی است که بسته به روز است ، "U" به این معنی است که بسته می تواند به روز شود و "E" به معنای لیست انتشار در PYPI خالی است. پس از آن خط فرمان PIP را نشان می دهد که می تواند برای به روزرسانی یک بسته استفاده شود. یا آن را کپی و چسباندن کنید یا PYP I-Serve r-ux را اجرا کنید تا واقعاً آن دستورات را اجرا کنید. شما باید PIP را برای این کار نصب کنید.
مشخص کردن یک گزینه اضاف ی-U همچنین امکان بارگیری نامزدهای آلفا ، بتا و انتشار را فراهم می کند. بدون این گزینه ، این نسخه ها در نظر گرفته نمی شوند.
خدمت هزاران بسته
به طور پیش فرض ، Pypiserver هر بار که یک درخواست HTTP دریافتی رخ می دهد ، کل فهرست بسته ها را اسکن می کند. این برای تعداد کمی از بسته ها مشکلی ندارد ، اما هنگام ارائه هزاران بسته باعث کاهش آهسته های قابل توجه می شود.
اگر به این مشکل بپردازید ، با فعال کردن قابلیت ذخیره سازی فهرست دایرکتوری Pypiserver ، سرعت قابل توجهی را می توان به دست آورد. تنها مورد نیاز نصب بسته WatchDog است ، یا با مشخص کردن گزینه Cache Extras می توان آن را در حین نصب Pypiserver نصب کرد:
PIP نصب Pypiserver [حافظه پنهان]
با استفاده از قابلیت ذخیره سازی داخلی WebServer ، می توان سرعت اضافی را بدست آورد. به عنوان مثال ، اگر از NGINX به عنوان یک پروکسی معکوس استفاده می کنید ، همانطور که در زیر در پشت یک پروکسی معکوس توضیح داده شده است ، می توانید به راحتی ذخیره سازی را فعال کنید. به عنوان مثال ، اجازه می دهد تا NGINX حداکثر 10 گیگ داده را تا 1 ساعت ذخیره کند:<# . location / >
proxy_cache_path/data/nginx/cache سطح = 1: 2 keys_zone = pypiserver_cache: 10m max_size = 10g غیرفعال = 60m use_temp_path = خاموش ؛سرور
اگر حجم درخواست بالایی داشته باشید ، استفاده از ذخیره سازی وب سایت به ویژه مفید است. با استفاده از حافظه پنهان Nginx ، یک نصب Pypiserver در دنیای واقعی توانست به راحتی بیش از 1000 بارگیری بسته در دقیقه را در بار اوج پشتیبانی کند.
مدیریت استارتاپ خودکار
گزینه های متنوعی برای کار با شروع خودکار Pypiserver در هنگام راه اندازی سیستم وجود دارد. دو مورد از متداول ترین آنها SystemD و سرپرست سیستم های لینوکس هستند. برای ایجاد ویندوز خدمات با اسکریپت ها بدون ابزار شخص ثالث مانند NSSM کار ساده ای نیست.
در حال اجرا به عنوان یک سرویس SystemD
SystemD به طور پیش فرض در اکثر سیستم های مدرن لینوکس نصب شده است و به همین ترتیب ، این یک گزینه عالی برای مدیریت فرآیند Pypiserver است. یک فایل پیکربندی مثال برای SystemD را می توان در زیر مشاهده کرد:
[واحد] توضیحات = یک سرور حداقل PYPI برای استفاده با PIP/EASY_INSTALL. بعد از = network. target [service] type = Simple # SystemD در اینجا به مسیر مطلق نیز نیاز دارد. pidfile =/var/run/pypiserver. pid user = www-data group = www-data execstart =/usr/bin/pypi-serve r-p 808 0-a بروزرسانی ، بارگیری--log-file/var/log/pypiserver. lo g-p /etc/nginx/. htpasswd/var/www/pypi execstop =/bin/kil l-per $ mainpid execreload =/bin/kil l-hup $ mainpid = همیشه کارگردانی =/var/www/pypi timeoutstartSecececececec= 3 RESTARTSEC = 5 [نصب] Wantedby = Multi-User. Target
تنظیم مسیرها و افزودن این پرونده به عنوان pypiserver. service به فهرست سیستم/سیستم شما امکان مدیریت فرآیند pypiserver را با SystemCtl ، به عنوان مثال. SystemCtl شروع pypiserver.
راه اندازی از طریق سرپرست
سرپرست این مزیت را دارد که یک بسته خالص پایتون باشد و به همین ترتیب ، پشتیبانی بسیار خوبی برای مدیریت فرآیند ارائه می دهد. یک فایل پیکربندی مثال برای سرپرست در زیر آورده شده است:
[برنامه: pypi] فرمان =/home/pypi/pyp i-env/bin/pyp i-serve r-p 700 1-p /home/pypi/. htpasswd/home/play/packages دایرکتوری =/home/pypi کاربر = pypi autostart =autorestart واقعی = واقعی stderr_logfile =/var/log/pypiserver. err. log stdout_logfile =/var/log/pypiserver. out. log
از آنجا ، این فرایند از طریق Supervisord با استفاده از SupervisorCTL قابل مدیریت است.
در حال اجرا به عنوان یک سرویس با NSSM (ویندوز)
NSSM را از https://nssm. cc unzip به یک مکان مورد نظر مانند پرونده های برنامه بارگیری کنید. تصمیم بگیرید که آیا شما می خواهید از Win32 یا Win64 استفاده کنید و آن را به مسیر محیط اضافه کنید.
ایجاد start_pypiserver. bat:
pyp i-serve r-p 8080 c: path to packages &
قبل از ایجاد سرویس ، پرونده دسته ای را با اجرای آن ابتدا آزمایش کنید. اطمینان حاصل کنید که می توانید از راه دور به سرور دسترسی پیدا کرده و بسته ها را نصب کنید. اگر می توانید ، در صورت عدم موفقیت ، در صورت عدم موفقیت ، ادامه دهید. این امر قبل از اضافه کردن NSSM به مخلوط ، اطمینان حاصل می کند که سرور کار می کند.
از سریع فرمان:
NSSM Pypiserver را نصب کنید
این دستور یک برنامه GUI NSSM را راه اندازی می کند:
مسیر: C: PATH TO start_pypiserver. bat دایرکتوری راه اندازی: AUTO هنگام انتخاب نام سرویس PATH تولید می کند: Pypiserver
برگه های بیشتری وجود دارد ، اما این تنظیم اساسی است. اگر این سرویس نیاز به کار با اعتبار ورود به سیستم خاص دارد ، حتماً آن اعتبار را در برگه ورود به سیستم وارد کنید.
سرویس را شروع کنید:
nssm شروع pypiserver
سایر دستورات مفید:
NSS M-Help NSSM STOP NSSM وضعیت NSSM را راه اندازی مجدد کنید
برای اطلاعات دقیق ، به https://nssm. cc مراجعه کنید
- با استفاده از سرور WSGI متفاوت
- وب سرور بطری که از بسیاری از سریال های WSGI پشتیبانی می کند ، از جمله دیگر ، خمیر ، Cherrypy ، Twisted و Wsgiref (بخشی از پایتون). شما آنها را با استفاده از پرچ م-سرور انتخاب می کنید.
>>> from pypiserver import bottle>>>شما ممکن است تمام سرورهای WSGI پشتیبانی شده را با استفاده از کد تعاملی زیر مشاهده کنید:
لیست (bottle. server_names. keys ()) ['cgi' ، 'gunico' ، 'Cherrypy' ، 'Eventlet' ، 'Toado' ، 'Geventsocketio' ، 'Rocket' ، 'Diesel' ، 'Twisted' ، 'Wsgiref'، 'fapws3' ، 'bjoe' ، 'gevent' ، 'meinheld' ، 'auto' ، 'aiohtttp' ، 'flup' ، 'gae' ، 'paste' ، 'Waitress']
Apache (mod_wsgi)
برای استفاده از Apache2 خود با pypiserver ، ترجیح دهید از mod_wsgi استفاده کنید همانطور که در مستندات بطری توضیح داده شده است.
- اگر به جای آن تصمیم دارید که با MOD_PROXY بروید ، توجه داشته باشید که ممکن است با پیشوند-مسیر پیش بینی کنید (به شماره 155 مراجعه کنید).
پیکربندی آپاچی زیر را یا در دامنه سطح بالا یا در داخل برخی از آنها قرار دهید (توسط توماس والدمن کمک کرده است):wsgipassauthorization در # مورد نیاز برای تأیید اعتبار (https://github. com/pypiserver/pypiserver/issues/288)
به همه اعطا شده نیاز دارد<2.4 , substitute the last part with this:
یا در صورت استفاده از آپاچی قدیمی تر
سفارش را انکار کنید ، اجازه دهید از همه اجازه دهید
وارد کردن pypiserver conf = pypiserver. default_config (root = "/yoursite/بسته ها" ، password_file = "/yourite/htpasswd" ،) برنامه = pypiserver. app (** conf)
نکته اگر Pypiserver را در یک VirtualEnv نصب کرده اید ، دستورالعمل MOD_WSGI را دنبال کرده و کد پایتون را در بالا با موارد زیر تهیه کنید:
واردات سایت سایت.
به دلایل امنیتی ، توجه داشته باشید که دستورالعمل فهرست به یک دایرکتوری که به تنهایی اسکریپت راه اندازی WSGI را در اختیار دارد ، اعطا می کند. هیچ چیز دیگر.
برای فعال کردن پشتیبانی HTTPS در Apache ، دستورالعمل حاوی پیکربندی WSGI را برای استفاده از SSL پیکربندی کنید.
تفنگ دار
دستور زیر از Gunico برای شروع Pypiserver استفاده می کند:
Gunicor n-w4 'pypiserver: app (root = "/home/ralf/بسته ها")
یا هنگام استفاده از چندین ریشه:
gunicor n-w4 'pypiserver: برنامه (root = ["/home/ralf/بسته ها" ، "/home/ralf/آزمایش"]) "
خمیر
Paste اجازه می دهد تا چندین برنامه WSGI را در مسیرهای مختلف URL اجرا کنید. بنابراین می توان مجموعه های مختلفی از بسته ها را در مسیرهای مختلف ارائه داد.
مثال زیر می تواند برای استفاده از بسته های پایدار و ناپایدار در مسیرهای مختلف استفاده شود:~[کامپوزیت: اصلی] استفاده = تخم مرغ: خمیر#urlmap / instable / = instable / = پایدار [برنامه: پایدار] استفاده = تخم مرغ: pypiserver#ریشه اصلی =~/بسته های پایدار [برنامه: ناپایدار] استفاده = تخم مرغ: pypiserver#ریشه اصلی =~/بسته های پایدار
/بسته های ناپایدار [سرور: اصلی] استفاده = تخم مرغ: Gunico#میزبان اصلی = 0. 0. 0. 0 درگاه = 9000 کارگر = 5 AccessLog = -
شما باید برای این کار وابستگی های بیشتری نصب کنید ، مانند:
PIP نصب خمیر Pastede Encloy Gunico Pypiserver
سرور سپس می تواند با:
gunico_paster paste. ini
پشت یک پروکسی معکوس
می توانید Pypiserver را در پشت پروکسی معکوس نیز اجرا کنید.
چیز کوچک
پیکربندی nginx خود را گسترش دهید:پیپی بالادست>
سرور
پیکربندی nginx خود را گسترش دهید:پیپی بالادست>
سرور
پشتیبانی از HTTPS
پیکربندی nginx خود را گسترش دهید:پیپی بالادستپیپی بالادست>
سرور
دریافت و به روزرسانی گواهینامه های خود را می توان با استفاده از Certbot و LetSencrypt ساده کرد.
تراوش
همچنین می توان از Traefik برای قرار دادن Pypiserver در پشت HTTPS در پورت 443 ، با تغییر مسیر اتوماتیک HTTP با استفاده از آهنگسازی Docker استفاده کرد. لطفاً برای اطلاعات بیشتر به مثال Docker-Compose. yml ارائه شده مراجعه کنید.
استفاده از API
- به منظور فعال کردن ارائه دهندگان تأیید هویت ad-hoc یا استفاده از سریال های WSGI که توسط بطری خارج از جعبه پشتیبانی نمی شوند ، باید Pypiserver را از طریق API آن راه اندازی کنید.
- نقطه اصلی ورود برای پیکربندی pypiserver ، عملکرد pypiserver: app () است. این تابع WSGI-APP داخلی را که شما پس از آن به هر سرور WSGI که دوست دارید ارسال می کند ، برمی گرداند.
- برای به دست آوردن همه pypiserver: برنامه () کلمات کلیدی و توضیحات آنها ، عملکرد pypiserver: default_config () را بخوانید.
سرانجام ، برای آتش سوزی WSGI-Server با برنامه پیکربندی شده ، از بطری استفاده کنید: RUN (برنامه ، میزبان ، پورت ، سرور). توجه داشته باشید که کشتی های pypiserver با آن کپی بطری است. برای استفاده از آن ، آن را مانند آن وارد کنید: از بطری واردات Pypiserver
با استفاده از ارائه دهندگان تأیید هویت ad-hoc
کلمه کلیدی AUTHER از عملکرد Pypiserver: APP () ممکن است فقط با استفاده از API تنظیم شود. این می تواند هرگونه تماس تلفنی باشد که هنگام ارسال نام کاربری و رمز عبور برای یک درخواست خاص ، یک بولی را برگرداند.
- به عنوان مثال ، برای تأیید اعتبار کاربران بر اساس پرونده /etc /passwd تحت UNIX ، می توانید چنین تصمیماتی را با پیروی از این مراحل به کتابخانه پایتون-پام واگذار کنید:
اطمینان حاصل کنید که ماژول Python-PAM نصب شده است:
$ cat>PIP نصب پایتون-پام
pypiserver-start. py واردات pypiserver از pypiserver واردات بطری واردات واردات pam = pypiserver. app (root = './بسته ها' ، auther = pam. authenticate) bottle. run (برنامه = برنامه ، میزبان = '0. 0. 0. 0' ، پورت= 80 ، سرور = 'خودکار') [Ctrl+ D]
$ python pypiserver-start. py
ماژول Python-PAM ، نیاز به دسترسی به پرونده /ETC /Shadow دارد. شما می توانید کاربر را که تحت آن Pypiserver وارد گروه Shadow می شود ، اضافه کنید ، با یک دستور مانند این: sudo usermo d-a -g shadow pyp y-user.
با میکروپی تون استفاده کنید
مترجم Micropython برای دستگاه های تعبیه شده می تواند بسته هایی را با ماژول upip. py نصب کند. این ماژول برای بازیابی اطلاعات بسته از یک نقطه ویژه json-end استفاده می کند. این نقطه پایانی توسط Pypiserver پشتیبانی می شود.
می توان آن را با درگاه یونیکس میکروپیچون آزمایش کرد:
CD Micropython PORTS/UNIX/Micropytho n-m Tools. Upip نص ب-i http: // m y-server: 808 0-p/tmp/mymodules micropytho n-foobar
''نصب بسته های دستگاه تعبیه شده به این روش کار می کند:
اطلاعات بیشتر در مورد Micropython-Packaging را می توان در اینجا یافت: https://docs. micropython. org/en/latest/reference/packages. html
منابع
برای ایجاد یک کپی از مخزن ، استفاده کنید:
کلون git https://github. com/pypiserver/pypiserver. git cd pypiserver
برای دریافت هرگونه تغییر بعدی ، در پوشه بالا استفاده کنید:
کشش گیت
محدودیت های شناخته شده
Pypiserver API کامل را همانطور که در PYPI مشاهده می شود ، پیاده سازی نمی کند. این فقط به اندازه کافی پیاده سازی می کند تا Easy_install ، نصب پیپ و کار را انجام دهد.
- محدودیت های زیر شناخته شده است:
- فرمان pyp i-u که بسته های بارگذاری شده را با PYPI مقایسه می کند تا ببیند آیا آنها منسوخ شده اند ، به یک متغیر محیط HTT P-proxy احترام نمی گذارد (به شماره 19 مراجعه کنید).
- این بارگذاری اسناد را می پذیرد اما آنها را در دیسک ذخیره نمی کند (برای بحث به شماره 47 مراجعه کنید)
این بسته های غلط املایی را همانطور که PYPI-REPO انجام می دهد ، کنترل نمی کند ، بنابراین پیشنهاد می شود به جای-index-url از آن استفاده کنید.
لطفاً برای سایر اشکالات پیدا شده از bugtracker Github استفاده کنید.
پروژه های مشابه
- بسیاری از پروژه های دیگر وجود دارد که به شما امکان می دهد سرور PYPI خود را اجرا کنید. اگر Pypiserver برای شما کار نمی کند ، موارد زیر جزو محبوب ترین گزینه ها است:
- Devpi-Server: یک سرور ذخیره سریع PYPI. ORG سریع ، بخشی از سرور جامع PYPI به سبک GitHub و ابزار متا بسته بندی.(نسخه: 2. 1. 4 ، تاریخ دسترسی: 8/3/2015)
این سؤال را بررسی کنید: چگونه PYPI خودم را بچرخانم
بی نظیر یا بایگانی شده
- این پروژه ها زمانی گزینه های دیگری برای Pypiserver بودند اما اکنون یا غیرقابل توصیف هستند یا بایگانی شده اند.
- PIP2PI یک ابزار ساده خط CMD که یک پوشه محلی سازگار با PYPI را از نیازهای PIP ایجاد می کند
Flask-pypi-proxy یک پروکسی برای PYPI که همچنین امکان بارگذاری بسته های سفارشی را نیز فراهم می کند.
نرم افزار مرتبط
- اگرچه گزینه های مستقیم برای استفاده Pypiserver به عنوان سرور شاخص نیست ، در زیر لیستی از پروژه های نرم افزاری مرتبط است که ممکن است بخواهید با آنها آشنا شوید:
- PYPI-UPLOADER: یک ابزار خط فرمان برای بارگذاری بسته ها در Pypiserver خود از PYPI بدون نیاز به ذخیره اول آنها.
- Twine: یک ابزار خط فرمان برای تعامل با PYPI یا Pypiserver.
Warehouse: نرم افزاری که خود PYPI را قدرت می دهد. به طور کلی در نظر گرفته نشده است که توسط کاربران نهایی اداره شود.
مجوز
بازار رمزارزها...
ما را در سایت بازار رمزارزها دنبال می کنید
برچسب :
نویسنده : محمود کیانوش
بازدید : 40
تاريخ : جمعه
10 شهريور
1402 ساعت: 13:43