مشکل عدم دسترسی در nginx برای پروژه Rails

server
nginx
config
rails

#21

چرا با systemd اجرا نكردين؟ مگر puma به عنوان سرويس ديپلوى نشده؟
sudo systemctl start puma.service


#22

انگار نشده ، دستوری که گفتید رو زدم انگار نمیشناسه و این اررور رو میده :‌
Failed to start puma.service: Unit puma.service not found


#23

کانفیگ puma رو اوکی کردین‌؟ puma رو باید مستقیم ران کنین. یا با systemd یا مشابه اون همونجوری که توماج عزیر گفت. بعد از اینکه اجراش کردی یا nc یه تست کن ببین اون پورت باز هست یا نه


#24

گفتید که پروتکل tcp استفاده کنم تو پوما که انجام دادم ولی انگار شرایط بدتر شد و با nginx ارتباط برقرار نمیکرد ، ولی برش گردوندم به همون مدل unix:///tmp/requesthelper.sock

خب الان مستقیما میخوام پوما رو ران کنم دیگه نمیره فایل کانفیگ من رو تو پروژه ران کنه
و سوال بعدیم اینه که وقتی پوما نصبه چرا همینطور که toomaj گفتند سرویس puma رو واسم نشناخته که ران کنه تو بکگراند ؟‌


#25

فکر می کنم ما الان داریم به بیراهه می ریم. شما یه لطفی کن. فرض کن می خوای پروژه رو پیلوی کنی. کامند هایی که می زنی رو بنویس اینجا. تنظیمات پوما رو هم بده


#26

از گیت سرور استفاده میکنم که روی سرور نصبه و تغییرات رو push میکنم اونجا. بعد از پوشه ی پروژه هم تغییرات رو دستی pull میکنم. Nginx هم که تنظیماتش رو دادم و همیشه روشنه (البته لازم باشه ریست میکنم). بعد اگر با دستور:
bundle exec puma -e production -b unix:///tmp/requesthelper.sock -p 33402

اجرا کنم این مشکل پیش نمیاد ولی همونطور که گفتم چون از پورت خاصی استفاده میکنیم، صفحات بعدی به پورت ۸۰ route میشه (موقعی که redirect میکنم ) و درکل کار غیر اصولیه که دستی bundle exec puma رو بزنم

اگرم با rails server -e production ران شه مشکلات اررور 500 که داده بود ، پیش میاد

تنظیمات nginx :

تنظیمات puma :

کدی هم که میزنم برای ران شدن سرور :‌

bundle exec puma -e production -b unix:///tmp/requesthelper.sock -p 33402
هست اش که مشکلات مربوط به این دستور که پیش میاد هم که گفتم


#27

اول اینکه باید حتما با پوما ران کنین. دوم اینکه ادرس فایل کانفیگ رو به پوما بدید. از tcp سوکت استفاده کنین. unix سوکت همیشه درد سر سطوح دسترسی رو داره.


#28

الان قسمت bind پوما رو به این شکل زدم :‌
"bind "tcp://127.0.0.1:33405
و اینم کانفیگ nginx که تو قسمت upstream اش رو به این شکل زدم :‌
{ upstream requesthelper
;server 127.0.0.1:33405
}
و بعد از سیو کردن تغییرات nginx میخوام nginx رو ریستارت کنم این اررور رو میده :‌


و مشکل هم سر اون upstream است


#29

لاگ nginx رو نگاه کنین. من سر فرصت یه ایمیج ساده با docker و puma درست می کنم می فرستم که همه چی ساده بشه


#30

به توضیحات تکمیلی دیگه هم بدم :

یاددآوری : سایتمون رو یه پورت خاص باید ران بشه و پورت های دیگه رو بستن و فقط پورت 33402 برامون بازه از بیرون که پورت 33402 فوروارد میشه رویه پورت 8080 داخل سرور

من الان با دستور bundle exec puma -e production -p 33402 پوما رو ران کردم و بعد ران شد وهمه چی اوکیه و خوش خرم :wink:

و بعد صفحه لاگین با آدرس مثلا :‌ 150.50.50.50:33402/login بالا میاد و تا اینجاش درست وبعد وقتی من اطلاعات رو وارد میکنم برای لاگین باید redirect کنه به کنترلر session ‌و اینکار رو هم انجام میده ولی این مشکل رو تو کنسول ببینید (پورت رو نزده موقع redirect کردن ) :‌

همینطوری که با فلش قرمز و فلش سبز اون پایین نشون دادم رفته تو کنترلر session ولی پورت رو نزده که با پورت 33402 بره تو کنترلر session و من مجبورم دستی تو url پورت اش رو بزنم تو مرورگرم و میره و اوکی میشه ، الان میخوام این پورت رو خودش بشناسه هر جا میره و به صورت پیش فرض بدونه که هر جا میره باید با پورت 33402 بره

بعد همون طوری اون بالا گفتم که چه طوری ران اش کردم اومدم روش معمول اش یعنی :
rails s -e production -p 33402,… که بالاتر توضیح دادم که چی زدم
وبعد اون مشکل پورت اش برطرف شد منتهی دیگه صفحه لاگین نمیومد و اررور 500 خوده ریلز میومد
واسه همین تو روش دوم موندم و گیر کردم حالا اگر تو روش اول هم راه حلی دارید ، خیلی خوب میشه

این پست رو گذاشتم که واضح تر مشکل رو بیان کنم


#31

واسه داستان پورت و ریدایرکت باید بگم که شما باید به ریلز بگی رو چه هاستی داری از پروژه استفاده می کنی. اینجوری مشکل ری دایرکت حل می شه. در مورد puma و nginx هم اگه پروژه اوپن هست لینک بده تا یه کانفیگ ابتدایی با docker برات اضافه کنم.


#32

واسه داستان پورت اینها میشه بگید کجا باید به ریلز بگم که هاست اش چیه و چی باید بزنم ؟؟؟ و مورد دوم هم اینکه قبلا براتون پروژه رو فرستادم


#33

این رو چک کن
http://edgeguides.rubyonrails.org/action_controller_overview.html#default-url-options


#34

درست شد ، تو کانفیگ nginx تو قسمت location این رو توش زدم :‌

} / location
;proxy_set_header X-Real-IP $remote_addr
;proxy_set_header Host $http_host
;proxy_pass http://127.0.0.1:PORT
}
و با دستور bundle exec puma -p port -e production -b unix://tmp/reqest.sock ران کردم پوما رو


#35

puma به عنوان سرويس اجرا نميشه؟
وضعيت puma چيه؟

sudo systemctl status puma.service


#36

خیر به عنوان سرویس ران نشده و دستور sudo systemctl status puma.service چون پوما به عنوان سرویس شناخته نشده پوما رو تویه این دستور نمیشناسه ، اگر میشه راه اینکه پوما رو به عنوان سرویس بشناسونم رو توضیح بدید ، ممنونم


#37

شايد اين پست به كار بياد