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

server
nginx
config
rails

#1

سلام
دوستان من سرور nginx رو ران کردم و وقتی آدرس سایت رو میزنم صفحه لاگین ام میاد و هیچ ارروری نمیده وقتی که لاگین میکنم و درخواست به سرور داده میشه اررور 500 بهم میده (در حالت dev , test هیچ مشکلی نداشته تو لوکال ام) .

بعد دستور sudo tail /var/log/nginx/error.log میزنم تو سرور که اررور های nginx رو ببینم با این اررور مواجه شدم :‌

میدونید این برایه چیه ؟ و باید برای برطرف کردنش چیکار کنم ؟‌


#2

آدرسی سروری که به عنوان سرور آپستریم دادین غلظ هست. تنظیمات nginx رو بدین تا بگم چی باید باشه


#3


#4

خوب حالا سرور ریلز رو چجوری ران می کنی ؟


#5

تنظیمات پوما :‌

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

rails s -e production

اررور 500 هم که گفتم اینه :‌

اررور تو کنسوله پوما ام :‌


#6

همون جور که تو لاگ پوما مشخص هست ، ریلز نمی تونه به دیتا بیس وصل شه


#7

ارور کامل پوما اینه :

ActiveRecord::ConnectionTimeoutError (could not obtain a connection from the pool within 5.000 seconds (waited 5.000 seconds); all pooled connections were in use):

فکر نکنم مشکل اتصال داشته باشه، وضعیت ماگریت هام که تو کنسول گرفتم بهم داد اگر نمیتونست وصل بشه باید ارروری بهم میداد برای ماگریت هام


#8

داره می گه کانکشن خالی نداره . تنظیمات دیتا بیس رو هم بده لطفا


#9


#10

به احتمال خیلی زیاد تمام ۵ ترد رو چیزی پر کرده. تعداد کانکشن پول رو افزایش بده


#11

pool رو 6 کردم نشد ، حتی 10 هم کردم هم نشد و هم زمان لود کردن اش خیلی زیاد شد و connection time out داد :grin:


#12

اگه می تونی کد رو یجا پوش کن که تست کنم


#13

خصوصی براتون فرستادم


#14

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

bundle exec puma -e production -b unix:///tmp/requesthelper.sock -p 33402

استفاده بکنم جواب میده و این اررور 500 رو نمیده ولی موقعی که تو کنترلر redirect میکنم اون پورت رو موقع redirect کردن اعمال نمیکنه ، حالا با این حال میخوام با خوده دستور rails s -e production ران کنم که چیزی هم برای ران شدم از جا نیوفته ، ولی چون این اتفاق افتاده مشکل صد در صد از کانفیگ پوما است ولی نمیدونم کجاش رو کم نوشتم یا ننوشتم یا باید چی اضافه کنم به نظرتون ؟ :thinking:


#15

هنوز فرصت نکردم تست کنم. اما بجای unix سوکت از tcp سوکت استفاده کن


#16

bind رو اینجوری زدم :‌

"bind "tcp://0.0.0.0:33402

داخل nginx تو قسمت upstream هم همین حالت server unix:///tmp/requesthelper.sock بذارم باشه ؟ یا این هم باید tcp بزنم ؟


#17

باید فایل کانفیگ Puma رو عوض کنی که TCP ساپورت کنه و ادرس upstream server رو هم تو nginx تغییر بدی به یه چیزی تو این مایه ها:

server 127.0.0.1:3000

#18

داخل nginx :
127.0.0.1:33402 server زدم نشد یعنی وقتی nginx رو ریستارت میکنم اررور میده و طبیعتا هم ، وقتی به حالت
server unix:///tmp/requesthelper.sock بر میگردونم مشکلی پیش نمیاد و ریستارت میشه بدون مشکل


#19

puma رو بروز كردين؟
از چه ورژنى استفاده ميكنيد؟


#20

بله ، 3.9.1 هستش ،
با این دستور میاد بالا و اوکی هم میشه ولی دو تا مشکل داره :‌
bundle exec puma -e production -b unix:///tmp/requesthelper.sock -p 33402
مشکل اول اش اینه که فایل puma ریلز رو ران نمیکنه و مشکل دوم اش اینه که چون سایتمون رویه پورت خاصه واسه همین من تو ریلز اگر این دستور رو بزنم تو کنترلر اش redirect کنم با پورت redirect نمیکنه

حالا برای این مشکلات و اینکه کار درست تر انجام بشه میخوام از دستور rails s -e production استفاده کنم که فایل کانفیگ پوما هم ران شه ولی مشکلات بالا که ذکر کردم پیش میاد