استقرار برنامه Rails با MRSK در Hetzner: راهنمای مبتدی

سلام!
من در مورد Mrsk کنجکاو بودم و می خواستم آن را برای میزبانی یک برنامه ساده در یک VPS ارزان امتحان کنم. با این راهنما، مراحلی را که برای ایجاد و استقرار اولین برنامه Rails شما با MRSK در یک Hetzner VPS استفاده کردم، گام به گام راهنمایی می کنم.
برای این آموزش، ما همه چیز را تا حد امکان ساده نگه می داریم. ما برنامه ای را مستقر خواهیم کرد که از پایگاه داده SQLite استفاده می کند.
آنچه شما ابتدا نیاز خواهید داشت:
- یک حساب Docker با یک کلید Api
- یک حساب Hetzner
با فرض اینکه شما آن را آماده کرده اید، باید بتوانید اولین برنامه خود را با آن مستقر کنید Mrsk
در کمتر از 10 دقیقه
داربست یک برنامه ریل
ابتدا اجازه دهید یک برنامه کاربردی را داربست کنیم. در زمان نوشتن این راهنما، استفاده از آن مهم است --main
برای استفاده از نسخه آلفای Rails 7.1 پرچم گذاری کنید.
new rails_mrsk_hetzner -a propshaft --main -c tailwind -j esbuild
cd rails_mrsk_hetzner
bundle add tailwindcss-rails
bin/rails tailwindcss:install
git add .
git commit -m "rails new"
rails g scaffold post title:string content:text
rails db:create db:migrate
در مرحله بعد، باید مسیرهای خود را به روز کنید.
# config/routes.rb
- # root "articles#index"
+ root "posts#index"
یک VPS در Hetzner ایجاد کنید
اکنون که یک برنامه اولیه را راه اندازی کرده ایم، بیایید یک VPS در Hetzner ایجاد کنیم. باید مراحل ثبت نام و تأیید را طی کنید، پس از آن می توانید یک پروژه جدید از حساب خود ایجاد کنید.
برای این آموزش، CAX11 را انتخاب می کنیم، یکی از مقرون به صرفه ترین گزینه های VPS با 2vCPU و 4 گیگابایت رم.
لطفاً توجه داشته باشید که در زمان نگارش، MRSK از IPv6 پشتیبانی نمی کند، بنابراین باید IPv4 را حفظ کنید.
همچنین باید یک کلید SSH به سرور خود اضافه کنید. در اینجا نحوه کپی و چسباندن کلید آمده است:
pbcopy < ~/.ssh/id_rsa.pub
سپس دسترسی SSH خود را به سرور با این دستور تست کنید:
ssh root@your_server_ip
اگر با اعلان مواجه شدید، “آیا مطمئن هستید که می خواهید به اتصال ادامه دهید (بله/خیر/[fingerprint])؟”، پاسخ دهید “بله”.
اگر نمی توانید SSH را به سرور وارد کنید، قبل از ادامه باید این مشکل را حل کنید.
استقرار با MRSK
با آماده بودن برنامه و سرور ما، زمان آن رسیده است که MRSK را وارد عمل کنیم. ابتدا با دستور زیر آن را نصب کنید:
gem install mrsk
سپس اجرا کنید mrsk init
. این باعث ایجاد چندین فایل از جمله config/deploy.yml
و .env
.
در .env
فایل، به روز رسانی کنید RAILS_MASTER_KEY
ارزش و MRSK_REGISTRY_PASSWORD
با یک کلید ایجاد شده در حساب Docker شما.
بعد، به روز رسانی کنید config/deploy.yml
به صورت زیر فایل کنید:
service: rails_hetzner_mrsk
image: adrienpoly/rails_hetzner_mrsk
servers:
- hetzner_ip_v4
registry:
username: adrienpoly
password:
env: MRSK_REGISTRY_PASSWORD
env
:
secret:
- RAILS_MASTER_KEY
ssh:
user: root # important to change it here as by default Mrsk use app and Hetzner root
در حال حاضر می توانید سایر فایل ها را حذف کنید. تغییرات خود را انجام دهید و سپس دستور بوت استرپ سرورها را با curl و Docker اجرا کنید.
mrsk server bootstrap
پس از موفقیت آمیز بودن این عملیات، می توانید اولین استقرار خود را با آن اجرا کنید mrsk deploy
. اولین استقرار ممکن است چند دقیقه طول بکشد و باید با یک پیام بررسی سلامت موفقیت آمیز به پایان برسد.
در این مرحله، شما باید بتوانید آدرس IP را در یک مرورگر ببینید و برنامه Rails خود را ببینید! و voilà!
تداوم داده ها
خوب خوب، هنوز واقعاً voilà نیست. اگر یک را ایجاد کنید Post
و یک استقرار جدید انجام دهید، متوجه خواهید شد که داده ها از بین رفته اند. این اتفاق می افتد زیرا پایگاه داده SQLite به طور پیش فرض در داخل تصویر Docker اجرا می شود. هر بار که یک کانتینر جدید ساخته می شود، داده ها را پاک می کند.
برای حل این مشکل، باید یک حجم به ظرف Docker اضافه کنید. در config/deploy.yml
فایل، این خط را اضافه کنید:
volumes:
- "storage:/rails/storage"
اکنون، دادهها در خارج از کانتینر نوشته میشوند و در سراسر استقرار باقی میمانند.
و بس! شما اولین برنامه Rails خود را با MRSK روی VPS Hetzner مستقر کرده اید.
اعزام مبارک!