نصب Ruby on rails در 8 Debian

نصب Ruby on rails در 8 Debian

هدف از مقاله

تو این مقاله قصد داریم شیوه ی deploy کردن یک پروژه ی rails رو قدم به قدم  با هم جلو بریم از نصب روبی  توسط rbenv تا تنظیمات apache و حتی خرید سرور مناسب 🙂

 

پیش نیاز ها 

در اولین قدم ما نیاز به یک سرور مناسب داریم ، پیشنهاد من برای خرید سرور دیجیتال اوشن( دریای دیجیتال ) و یا لیزوب است ( دلیل انتخابم اینه که نسبت به سرویس های ایرانی 🤢 خدمات\سرویس\قیمت بهتری ارایه میکنن )

 

خرید سرور از digital ocean

 

وارد سایت digital ocean  میشیم ( اگر تا کنون داخله سایت دیجیتال اوشن ثبت نام نکردید شیوه خاصی نداره و فقط ایمیل پسور به علاوه ۵ دلار ازتون میگیره )

وارد پنل مدیریت میشد و شروع به ساخت یه Droplet جدید میکنیم

  • نوع سیستم عامل رو انتخاب میکنیم ( Debian 8 )
  • مشخصات سرور رو بر اساس نیازمون انتخاب میکنیم ( توجه داشته باشید که RAM سرور نباید کمتر از 2gb باشد به دلیل اینکه کامپایلری به نام  gcc  اور هد میده و مانع از نصب روبی میشه )
  • اگر به ssd hard بیشتری نیاز داشتید میتونید به حجم دلخواهتون به droplet اضافه کنید
  • نوبت به انتخاب منطقه سرورتون میرسه که برای ما تفاوتی نمی کنه 🙂
  • در قسمت بعدی میتونید اپشن های اضافه ای که لازم دارید رو انتخاب کنید مثله :
  • Private networking

در قدم اخر هم یه hostname و تعداد droplet هاتون رو وارد میکنید:

نصب Ruby on rails در 8 Debianبعد از چند ثانیه سرور به طور کامل اماده استفاده میشه ( راستی یه نکته تو سربرگ ها یه گزینه هست به اسم one click app که چند ده تا فریمورک و cms هست که براتون به راحتی داخل سرور فریم ورک هارو نصب میکنه 😁 )

 

اتصال به سرور

برای اتصال به سرور در لینوکس و مک باید از کامند ssh root@remote_id استفاده کنید ( نکته: اگر بار اولی باشه که به یه سرور میخواید وصل بشید ازتون اجازه افزودن ssh key به /etc/hosts رو میخواد که برای ارتباط با سرور باید yes/y رو وارد کنید )

در ویندوز 🤢 هم باید از نرم افزار پوتی برای اتصال به سرور استفاده کنید!

 

نصب کتابخانه ها و زبان های مورد نیاز 

در شروع کار از دستور apt-get update && apt-get upgrade برای بروزرسانی پکیج ها استفاده میکنی

قبل از نصب باقی پکیج ها از apt-get install apt-transport-https استفاده کنید تا apt بتونه از https استفاده کنه

حالا نوبت به نیازمندی های rbenv رسیده:

(Ruby environment (RBENV: یکی از پکیج منیجر های روبی ( مثله rvm ) که به ما کمک میکنن تا ورژن های روبی رو به خوبی و به راحتی نصب ,حذف و سویچ کنیم ( دلایل استفاده از rbenv به جای rvm )

تو مرحله بعد به پکیج git نیاز داریم تا بتونیم با github تعامل داشته باشیم

با کامند گیت شروع به دانلود rbenv میکنیم:

بعد از دانلود rbenv شروع به معرفی این پکیج به شل میکنیم:

نکته: این روش نصب برای دبیان هست و ممکنه شما به جای bash_profile فایلی به نام bashrc داشته باشید که جای نگرانی نیست تو هر دو نوع قابل پیاده سازی هستن

از دستور زیر برای اینیشیالایز کردن rbenv در شل استقاده میکنیم (تا هر وقت سیستم ریبوت شد rbenv هم فراخوانی بشه)

در نهایت هم نوبت به پلاگین ruby-build میرسه که باید از گیت دانلود و داخله rbenv ذخیره کنیم:

نکته: اگر میخواید روی مک روبی رو نصب کنید میتونید از Homebrew استفاده کنید و در ویندوز هم از اپ ruby installer ( اطلاعات بیشتر )

نصب روبی

با کامند rbenv install -l شما میتوانید لیستی از ورژن های روبی ( همچنین jruby , iron ,….) رو ببینید

بر اساس نیاز ورژن ریلز  ۵ ورژن روبی رو انتخاب میکنیم (سعی کنید تو انتخاب ورژن دقت کنید تا تداخلی با ورژن ریلز نداشته باشه ما در این اموزش از ورژن ۲.۴.۱ برای ریلز ۵ استفاده میکنیم)

بعد از انتخاب روبی ورژن شروع به نصب میکنیم

بعد از نصب نوبت این میرسه که به سیستم بگیم چه ورژنی از روبی که نصب کردیم رو به صورت دیفالت استفاده کنه

بازدن دستور ruby -v چک میکنیم که چه ورژنی نصب شده

نصب ریلز

در مرحله اول bundler رو نصب کنید و شروع به نصب ریلز کنید

نکته: اگر ورژن ریلز رو اعلام نکنید اخرین ورژن استیبل از ریلز رو نصب میکنه که الان ورژن 5.1 است

قبل از ساخت یک پروژه با ریلز باید node js رو داخل سرور نصب کنیم:

نکته: دلیل استفاده از node js در rails این کاربرد رو به ریلز میدهد که فایل های کافی اسکریپت رو به جاوااسکریپت تبدیل کند ، عملیات مینیفای کردن css ,js رو انجام دهد ( عملا کل استفاده node js داخله asset pipline میباشد )

تنظیمات سرور

بعد از نصب روبی و ریلز نوبت به تنظیمات سرور برای مدیریت کردن پورت ها ،دومین ها ، لاگ ها و … میرسه

اولین قدم نصب apache2

نوبت به نصب وب سرور Phusion Passenger

قدم بعد:

مرجع سورس پسنجر رو به فایل اضافه میکنیم:

نکته: برای خروج از nano از ctrl x استفاده میکنیم و ویرایش هارو با کاراکتر y تایید میکنیم

دوباره پکیج هارو بروزرسانی میکنیم و پسنجر را نصب میکنیم

بعد از نصب passenger با دستور زیر  passenger را اکتیو میکنیم

passenger با موفقیت نصب و فعال شد حالا apache را ریبوت یا ریستارت میکنیم

تو مرحله بعد یه دایرکتوری داخله /var/www میسازیم و شروع به ساخت پروژه hello world میکنیم

نکته: با دستور -d میتوانیم نوع دیتابیس را انتخاب میکنیم (هر چند بعد از ساخت پروژه هم میتوان آن را تغییر داد )

نکته: --no-rdoc از نصب داکیومنت ها جلو گیری میکند ( صرفا جهت اطلاع برنامه نویس ها میگم rdoc رو برای مطالعه گذاشتن 🤣 )

نکته: --skip-bundle برای . جلوگیری از اجرا bundle استفاده میشه تا gem هارو بعد از ساخت پروژه نصب نکنه

بعد ازین که پروژه ساخته شد وارد دایرکتوری پروژه میشیم و Gemfile رو ویرایش میکنیم ، یک جم به نام therubyracer که جز نیازمندی های Asset Pipeline و ActionView Helpers میباشد و به صورت دیفالت کامنت شدست باید کامنت رو حذف کرده و سپس دستور bundle install را استفاده کنیم تا gem ها نصب شوند

نکته: برای تست درست بودن پروژه میتونید rails s رو فراخوانی کنید که اگر اشکالی داشت log بندازه

برمیگردیم سمت تنظیمات apache تا پورت ها و env هارو درست کنیم اول یه کپی از فایل دیفالت تنظیمات میگیریم

فایل کپی شده رو با nano باز میکنیم

و به صورت زیر ویرایش میکنیم

VirtualHost *:80 شماره پورت وب را تغریف میکنیم ( ۸۰ برای http و ۴۴۳ برای https استفاده میشه )

ServerName دومین یا ip خود را وارد میکنیم

ServerAlias نشان گر خود را وارد میکنیم ( www )

ServerAdmin ایمیل سرور ادمین

DocumentRoot مسیر پروژه را وارد میکنیم ( دایرکتوری پروژه به علاوه فولدر public )

RailsEnv مود پروژه را وارد میکنیم که در سه حالت test,production ,development می باشد

ErrorLog مسیر لاگ خطاهارا تعیین میکنیم

CustomLog مسیر لاگ های سفارشی را تعیین میکنیم

Options FollowSymLinks فعال سازی SymLink ها برای دسترسی به فایل ها

Require all granted دسترسی به عموم برای دسترسی به سرور

نکته: در محیط پروداکشن تمامی کاربرها در حین کار با اپلیکیشن ها هیچ خطای سیستمی دریافت نخواهند کرد ( فقط ارور پیج های ساخته شده نمایان میشوند مانند صفحه 404 ,500 ,… ) و تمام لاگ ها در مسیر log/production.log ذخیره میشوند ، ولیکن در محیط دولوپمنت ( توسعه ) تمامی ارورهای سیستمی نمایان میشوند و ریز جزیات بیشتری در مسیر log/development.log ذخیره میشوند.

بهتر است بدانید:

  • بعد از اولین اتصال به سرور کاربر جدید بسازید و مراحل دیپلوی و کانفیگ را با یوزر جدید انجام دهید ، سعی کنید دسترسی root را بر روی ssh ببندید
  • sudo را نصب کنید apt-get install sudo
  • سطح دسترسی ها را تنظیم کنید

بعد از اتمام تمام مراحل apache را ریستارت کرده و پروژه خود ذلت کافی را ببرید 😅

  • reza k

    سلام. سایت https://abrfa.com/ که سرور های مجازی دیجیتال اوشن میفروشه معتبره؟

    • محمد محمودی

      سلام
      شما اگر مشکل پرداختی دارید میتونید از payment24.ir استفاده کنید ، ابرفا صرفا یه واسط بین شما و دیجیتال اوشن و هیچ مسعولیتی نسبت به سرورهای خریداری شده نداره