در مورد مشکلاتی که با nginx داشتم و مهاجرت به https

اول این‌که عنوان دو بخش جدا داره: مشکلاتم با nginx و مهاجرت به https. خوشبختانه در مورد مهاجرت به https تا الان مشکلی نداشتم و امیدوارم Let’s Encrypt که این رو برام ممکن کرد پایدار بمونه تا در آینده هم مشکلی نداشته باشم.

در مورد مهاجرت به https خیلی ساده با این آموزش جلو رفتم و برای همین توضیح بیشتری در موردش نمی‌دم (و یجورایی برای مراجعه‌ی شخصی در آینده این‌جا می‌ذارمش)

بزرگ‌ترین مشکلم با Nginx سر اجرا کردن وردپرس و اسکریپت‌های دیگه‌ای که با PHP نوشته شدن توی یه زیر پوشه بود. (مثل همین بلاگ که توی زیرپوشه‌ی blog توی دامین ahmadalli.net قرار داره) و در نهایت هم از مواضع خودم عقب‌نشیتی کردم و برای این‌که سایت درست و حسابی کار کنه بیخیال آدرس‌های خوشگل (مثل /Page/2 و اینا) شدم.

در واقع مشکلم اینه که قواعد دامنه‌ها توی انجین‌ایکس توی بلاک‌های server و به شکل مجزا تعیین می‌شه و برای من راحت‌تر بود که به nginx بفهمونم که همه‌ی آدرس‌های دامنه‌ی دو برنامه‌نویس رو تحویل وردپرسش بده و بذار اون مدیریت کنه که چی باید به کاربر نمایش داده بشه ولی تلاشم برای فهموندن مفهوم مشابه راجع به درخواست‌هایی که به بلاگ خودم مربوط بود (یعنی مثلن ahmadalli.net/blog/aaa) با کلی آزمون و خطا با شکست مواجه شد و راهنمایی‌هایی که توی انجمن‌های مختلف بود هم کمکی بهم نکرد.

در نهایت به منتقل کردن اسکریپت‌های دیگه‌م به زیردامنه‌های دیگه (که می‌تونستن بلاک server مجزا برای خودشون داشته باشن) و آدرس‌های زشت توی بلاگم (یکی از نکات امیدبخش این بود که آدرس‌های وبلاگ محمدرضا شعبانعلی هم مدت‌ها زشت بود :-D) رضایت دادم تا کارم راه بیوفته.

چجوری فایل‌های سروری که با SSH بهش وصل می‌شیم رو توی VS Code ویرایش کنیم

VS Code واقعن ویرایشگر خوبیه و به نظرم مجموعه افزونه‌هایی که داره باعث می‌شه خیلی خوب و کاربردی بشه.

ما اخیرن از یه سرور ویندوز به یه سرور لینوکسی مهاجرت کردیم و من مسئولیت راه‌اندازی وب‌سرور رو به عهده گرفتم و چون کنجکاو بودم ببینم NGINX چیه و چجوری باید باهاش کار کرد و فقط به همین دلیل تصمیم گرفتم از NGINX به‌جای آپاچی استفاده کنم. برای مهدی البته مهم بود که دات‌نت کُر روی وب‌سرور قابل اجرا باشه و برای من خبر خوبی بود که توی مستندات رسمی مایکروسافت اجرا کردن برنامه روی وب‌سرور انجین‌ایکس آموزش داده شده بود.

اوایل کار برای ویرایش فایل‌های تنظیمات از nano و mcedit استفاده می‌کردم. نانو خیلی پرطرفداره و ویرایشگر خوبی هم هست ولی چون قبلش می‌دونستم که mcedit قابلیت جست‌وجو توی متن داره (و نمی‌دونم نانو این قابلیت رو داره یا نه) زمانی که لازم بود چیزی رو ویرایش کنم از اون استفاده می‌کردم.

اگر تجربه‌ی ویرایش متن توی کنسول و توی ssh رو داشته باشید می‌دونید کار آسونی نیست چون همه‌ی عملیات توی سرور انجام می‌شه و برای همین وقتی من دکمه‌ی اسپیس رو می‌زنم، کمی طول می‌کشه تا اون توی متن نوشته بشه و این قضیه برای من خیلی اعصاب خورد کن بود. برای همین دنبال راه‌حل جایگزین گشتم و با توجه به این‌که افزونه‌های متنوعی برای VS Code دیده بودم، حدس زدم که شاید راه‌حلی برای مشکل من هم توش پیدا بشه. و راه‌حل رو پیدا کردم!

آموزش استفاده ازش توی همون صفحه هست و توضیح بیشتری نمی‌دم. چندتا نکته که تجربه کردم رو می‌گم:

  • چیزی که فهمیدم اینه که این پروتوکل امکان ویرایش فایل‌های متنی رو برامون فراهم می‌کنه و بسته‌ی rmate هم برای همین لازمه روی سرور نصب بشه.
  • من اول نسخه‌ی روبی و بعد نسخه‌ی بش rmate رو امتحان کردم. نسخه‌ی روبی جواب نیازم رو نداد چون با sudo کار نکرد و وقت بیشتری هم روش نذاشتم تا بفهمم چرا کار نمی‌کنه.
  • اگه چند نفری می‌خواید روی سرور کار کنید و از rmate استفاده کنید، از پورت‌های مختلفی باید استفاده کنید. توی آموزشی که توی اون صفحه گفته از پورت ۵۲۶۹۸ استفاده کرده.
  • من وقتی می‌خوام تعداد زیادی فایل رو ویرایش کنم، از دو تا ssh session استفاده می‌کنم و توی یه سشن فقط دستور rmate رو نگه می‌دارم و تو یه سشن دیگه کارهای دیگه‌م (مثل ریست کردن سرویس‌ها و …) رو انجام می‌دم. در این حالت توی سشن دوم وقتی ssh می‌زنم این خطا رو می‌ده که پورت ۵۲۶۹۸ در حال استفاده‌ست چون اولین سشن sshتون داره از اون پورت استفاده می‌کنه ولی توی سشن دوم هم می‌شه از rmate استفاده کرد و اطلاعات از طریق کانکشنی که توی سشن اول بازه منتقل می‌شه ولی اگه سشن اول رو ببندید (مثلن logout کنید) دیگه نمی‌تونید توی سشن دوم از rmate استفاده کنید.
  • تا زمانی که همه‌ی فایل‌های ریموت روی توی vscode نبندید، ssh به صورت طبیعی ارتباطش رو قطع نمی‌کنه. و اگه logout رو زدید و ارتباط‌تون قطع نشد به اینترنت یا سرور یا Bash on Windowsتون فحش ندید 😀 منظورم از به صورت طبیعی اینه که مثلن اگه سرورتون رو ریبوت کنید که طبیعی محسوب نمی‌شه ارتباط خود به خود قطع می‌شه.

پی‌نوشت ۱: این توییت به نظرم مرتبط با نوشته‌ی قواعد نوشتاری‌م بود و از کاری که می‌کنه خوشم اومد:

پی‌نوشت ۲: در مورد مصائبم با NGINX (که هنوز هم ادامه داره) احتمالن نوشته‌های دیگه‌ای می‌نویسم.