راه اندازی NEXUS OSS  برای مدیریت Dependecy های Java

توسعه و پیاده سازی در هر کدام از زبانهای برنامه نویسی از جمله Java ، گاها نیازمند library و یا Framework می باشد همچنین در روند توسعه تیم های بزرگ، ممکن است تیم ها به خروجی تیم دیگر وابسته باشند. این مسئله در برخی مواقع به یک مشکل جدی تبدیل می شود. مشکلاتی از قبیل:عدم دسترسی به وب سایت آن کتابخانه به دلایل فیلترینگ (مانند مخازن sbt برای Play Framework)عدم دسترسی به اینترنت در سیستم کاری (برخی شرکت ها به دلایل امنیتی، شبکه سازمانی آفلاین دارند)محدود بودن پهنای باند اینترنت برای دانلود هر کدام از اعضای تیمناهمگونی نسخه های کتابخانه ها با یکدیگرمدیریت متمرکز وابستگی های ها و بسته های تولید شده توسط هر تیم برای استفاده تیم های دیگر...در این مواقع استفاده از یک سرور مخزن محلی در سازمان که همه اعضای تیم بتوانند به آن دسترسی داشته ضروری به نظر می رسد. نرم افزارهایی که میتوانند این موضوع را مدیریت نمایند عبارتند از:Apache ArchivaSonatype NexusJfrog Artifactoryمن برای این منظور از نرم افزار رایگان Nexus2.0 استفاده می کنم و در ادامه روش راه اندازی و کانفیگ آنرا برای شما شرح می دهم. نصب برای نصب این نرم افزار ابتدا یک توزیع لینوکس را بایستی نصب و پیشنیازهای مورد نیاز را روی آن نصب نمود. در این جا من از CentOS6.5 استفاده می کنم. پیشنیازهای نصبموارد زیر باید قبل از شروع در سیستم نصب شوند:2 * NIC (local, internet) Set Time,DateConfigure VPNJREConfigure Firewall نصب به صورت سرویس1- نسخه Nexus 2.0 OSS را بر روی مسیر /usr/local از حالت فشرده خارج می کنیم.2- یک کاربر به نام nexus بسازید. توصیه می شود که nexus را با root اجرا نکنید.adduser --disabled-login nexus3- با استفاده از دستور زیر یک لینک ایجاد کنید.ln -s /usr/local/nexus-2.14.4-03/ /usr/local/nexus24- دسترسی شاخه ها را برای کاربر NEXUS ست کنید.chown nexus:nexus /usr/local/nexus-2.14.4-03chown nexus:nexus /usr/local/sonatype-workecho "export NEXUS_HOME=/usr/local/nexus2" >> /etc/profile.d/nexus.sh5- در متغیر NEXUS_HOME در فایل /usr/local/nexus2/bin/nexus مسیری که nexus (/usr/local/nexus2) را نصب کرده اید ست کنید.6- در متغیر RUN_AS_USER در فایل /usr/local/nexus2/bin/nexus نام کاربری که ساختید،( nexus ) را ست کنید.7- فایل /usr/local/nexus2/bin/nexus را در /etc/init.d/nexus2 کپی کنید.cp /usr/local/nexus2/bin/nexus /etc/init.d/nexus28- دسترسی فایل را اصلاح کنید.chmod 755 /etc/init.d/nexus2chown root /etc/init.d/nexus29- برای اجرا به صورت سرویس در سیستم عامل های CentsOS, Fedora, Redhat با استفاده از ابزار chkconfig می توانید این کار را انجام دهید.cd /etc/init.dchkconfig --add nexus2chkconfig --levels 345 nexus2 onservice nexus2 startبرای اجرا سرویس در سیستم عامل UBUNTU دستورات زیر را انجام دهید.cd /etc/init.dupdate-rc.d nexus2 defaultsservice nexus2 startراه اندازی برای راه اندازی nexus کافیست که سرویس آنرا start کنید.service nexus2 startتبریک می گویم، nexus اجرا شده و از طریق browser میتوانید وارد شوید.http://192.168.1.10:8081/تنظیم مخازن Mavenبرای کاربردهای مختلف، انواع مختلفی از مخزن ها را میتوان در nexus تعریف کرد. مثلا hosted, proxy,virtual,groupبرای ایجاد یک مخزن mirror از Maven Central میتوانید یک proxy تعریف کنید. در این حالت درخواست های کاربران ابتدا به این مخزن ارسال شده و اگر موجود باشد تحویل داده می شود . در غیر اینصورت از اینترنت دانلود می شود و به کاربر داده شده و یک نسخه برای استفاده بعدی ذخیره می شود.برای تنظیم مخزن mvn بایستی یک مخزن از نوع proxy به صورت زیر تعریف کنید. می توانید مخازن دیگر maven مانند JBoss را نیز به همین صورت اضافه کنید. ادغام چندین مخازنبا استفاده امکان group میتوانید هر تعداد مخزن maven را در یک گروه قرار داده و در کلاینت ها به جای اضافه کردن آدرس تک تک مخازن، فقط آدرس گروه را وارد نمایید. در این حالت اضافه و کم کردن مخازن در گروه نیاز به هیچ تغییری در کلاینت ها نخواهد داشت. برای اینکار یک گروه به صورت زیر ایجاد کنید.تنظیم مخازن SBT/IVYفریم ورک SBT نیاز به چند repository دارد که متاسفانه از داخل کشور قابل دسترس نیست. مثلا Play Framework دو مخرن IVY و یک مخزن Maven دارد که برای اینکار ابتدا دو مخزن proxy از سایت های زیر به روش قبل ایجاد کنید.http://repo.typesafe.com/typesafe/ivy-releases/http://repo.scala-sbt.org/scalasbt/sbt-plugin-releases/سپس این دو را در یک گروه به نام ivy قرار دهید. برای استفاده کلاینت ها نیاز به مخزن Maven نیز وجود دارد که گروه مخازن Maven را در مرحله قبل ساخته اید.حالا کافیست که آدرس گروه های زیر را در کلاینت ها وارد نمایید.http://192.168.1.10:8081/nexus/content/groups/public/http://192.168.1.10:8081/nexus/content/groups/ivy/فراموش نکنید که روی این سرور یک پروکسی یا vpn برای رفع محدودیت و دسترسی به کتابخانه های sbt باید ست شوند.