How To Set Up a Remote Database to Optimize Site Performance with MySQL on Ubuntu 16.04

remote install mysql

نحوه تنظیم پایگاه داده از راه دور برای بهینه سازی عملکرد سایت با MySQL در اوبونتو ۱۶٫۰۴


How To Set Up a Remote Database to Optimize Site Performance with MySQL on Ubuntu 16.04

معرفی

همانطور که سایت و برنامه های تحت وب شما به روز می شوند ، به زودی به این نکته می رسید که تنظیمات سرور شما نیز باید برای بازدهی و امنیت بیشتر به روز شوند. برای این کار بهتر است که وب سرور و پایگاه داده را از یکدیگر جدا کنید و بر روی سرور های جداگانه قرار دهید ، البته اگر وب سرور و پایگاه داده شما بر روی یک سرور قرار داشته باشند. با این کار هم بار ترافیک کاربران بین سرور ها تقسیم می شود و سرعت پاسخ دهی افزایش می یابد و هم امنیت بیشتری را می توانید برای وب سرور و پایگاه داده خود فراهم کنید.

در این آموزش نحوه تنظیم یک پایگاه داده MySQL را از راه دور و اتصال وب سرور به این پایگاه داده را بیان می کنیم. در این آموزش از WordPress به عنوان یک نمونه از برنامه تحت وب برای اتصال به پایگاه داده از راه دور استفاده می کنیم ، البته آموزش های این مطلب به صورت جامع می باشد که شما می توانید این تنظیمات را بر روی برنامه های تحت وب دیگر نیز پیاده سازی کنید.

پیش نیاز ها

برای این آموزش به موارد زیر نیاز دارید :

  • دو سرور با سیستم عامل Ubuntu 1604 نسخه سرور با یک کاربر مجاز به دسترسی sudo ، که فایروال UFW نیز روی این سرور فعال باشد ، نحوه تنظیم این سرور در آموزش Initial Server Setup with Ubuntu 16.04 آورده شده است.
  • بر روی یکی از سرور ها باید LEMP (Linux, Nginx, MySQL, PHP) راه اندازی شده باشد. در آموزش How To Install Linux, Nginx, MySQL, PHP (LEMP stack) in Ubuntu 16.04 نحوه راه اندازی این سرویس آورده شده است. در این آموزش از مرحله دوم را برای نصب MySQL عبور کنید و آن را انجام ندهید زیرا در این آموزش MySQL را به شکل دیگری نصب می کنیم.
  • این قسمت اختیاری است و می توانید آن را انجام ندهید ، ولی به شما توصیه می کنیم که وب سرور خود را بوسیله گواهینامه های SSL امن کنید. شما برای این کار به یک نام دامنه نیاز دارید و می توانید طبق آموزش How To Secure Nginx with Let’s Encrypt on Ubuntu 16.04 گواهینامه SSL رایگان تهیه کنید.

مرحله اول – نصب MySQL بر روی سرور پایگاه داده

برای این که بهترین کارایی و تنظیمات یک پایگاه داده را داشته باشیم ، بهترین راه این است که سرور پایگاه داده را بر روی یک سرور جداگانه داشته باشیم. با جداسازی سرور پایگاه داده شما ساختار مورد نیاز برای انجام تقسیم بار درخواست های پایگاه داده فراهم کردید و همچنین در آینده هر زمان که نیاز شد زیرساخت پایگاه داده را براحتی گسترش دهید.

برای شروع ، بر روی سروری دیگری که روی آن LEMP را نصب نکرده ایم ، اقدام به نصب MySQL می کنیم. به سرور وارد شوید و پکیج ها سرور را بروز رسانی کرده سپس MySQL سرور را نصب کنید :

در حین نصب MySQL از شما رمز عبور کاربر root خواسته می شود و سپس باید وارد کردن مجدد این رمز آن را تایید کنید. رمز قوی و مناسبی را انتخاب کنید و این رمز را فراموش نکنید که بعدا به آن نیاز پیدا می کنیم.

برای بررسی وضعیت MySQL ، سرویس آن را با دستور systemctl بررسی می کنیم :

در خط Active: active (running) مشخص می شود که سرویس MySQL نصب و در حال اجرا است. در ادامه نصب برنامه را کمی امن می کنیم. با استفاده از این اسکریپت سیستم شما قفل می شود :

در اینجا رمز عبور کاربر root که برای MySQL تعیین کردید سئوال می شود، که این رمز را وارد کرده و Enter را بزنید. الان باید به یک سری سوالات با مقدار های yes و no باید پاسخ دهیم، که در ادامه آن ها را توضیح می دهیم :

در ابتدا سوال برای فعال کردن validate password plugin پرسیده می شود ، این افزونه برای فعال کردن رول اجبار در انتخاب رمز عبور قوی برای کاربرانی می باشد. تصمیم گیری برای فعال کردن این گزینه به سیاست ها امنیتی شما بستگی دارد و یک انتخاب دلخواه است. برای فعال کردن این گزینه حرف y را وارد کنید در غیر اینصورت کلید Enter را برای عبور از این قسمت فشار دهید. اگر این گزینه را فعال کردید در ادامه مقدار سختی رمز عبور از شما خواسته می شود که باید مقداری بین ۰ تا ۲ را وارد کنید.

در سوال دوم از شما برای تغییر رمز عبور کاربر root برنامه MySQL پرسیده می شود. از آنجایی که ما این رمز عبور را قبلا برای MySQL ایجاد کرده ایم به راحتی می توانیم با زدن کلید Enter از این مرحله بدون تعیین رمز عبور مجدد عبور کنیم.

برای سوالات باقی مانده بهتر است با پاسخ y از آنها عبور کنید. از شما برای حذف کاربر anonymous برنامه MySQL ، غیر فعال کردن ورود به سیستم برای کاربر root از راه دور ، حذف پایگاه داده test و بارگزاری مجدد مجوز های دسترسی جدول ها برای اعمال آخرین تغییرات انجام شده می باشد که بهتر است به این درخواست ها پاسخ مثبت y را بدهید.

بعد از پاسخ به همه سوال ها ، این اسکریپت بسته می شود. اکنون MySQL نصب شده و به صورت قابل قبولی امن شده است. در مرحله بعد ، MySQL را برای اجازه داده به دسترسی از راه دور پیکربندی می کنیم.

مرحله دوم – پیکربندی MySQL برای گوش دادن به درخواست های از راه دور

تا الان برنامه MySQL راه اندازی شده و در ادامه باید تغییراتی را در پیکربندی این برنامه برای فعال کردن دسترسی از راه دور به این برنامه انجام دهیم.

فایل پیکربندی MySQL را باز کنید :

این فایل قسمت های مختلفی دارد که با علامت براکت [] ، مشخص شده اند. قسمتی که با مقدار mysql مشخص شده است را پیدا کنید :

در این قسمت پارامتری با نام bind-address را پیدا کنید. این قسمت تعیین می کند که برنامه پایگاه داده به کدام آدرس شبکه برای برقراری ارتباط گوش کند.

در حال حاضر MySQL فقط برای ارتباطات محلی Local تنظیم شده است ، که ما باید این مقدار را به آدرس عمومی Public سروری که می خواهد به پایگاه داده متصل شود تغییر دهیم.

اگر سرورهای شما در یک دیتاسنتر با دسترسی به شبکه خصوصی قرار دارند ، از آدرس IP شبکه داخلی سرور استفاده کنید ، در غیر اینصورت از آدرس IP عمومی Public سرور استفاده کنید :

چون ارتباطات در بستر اینترنت انجام می شود برای امن کردن داده ها باید از رمزگذاری ارتباطات استفاده کنیم. اگر از ارتباطات رمز نشده استفاده کنید هر فردی می تواند به اطلاعات حساس شما که سرور و پایگاه داده جا به جا می شود از طریق گوش دادن Sniff دسترسی پیدا کند. بعد از خط bind-address خط زیر را به صورت زیر تغییر دهید :

در انتها این فایل را ذخیره کرده و خارج شوید.

برای این که ارتباطات SSL کار کنند باید مقداری کلید و گواهی را ایجاد کنیم. MySQL با یک دستور هر چیزی که نیاز باشد را راه اندازی می کند :

این دستور فایل های مورد نیاز را طوری که برای سرور MySQL قابل خواندن باشد ( –uid=mysql ) ایجاد می کند.

برای اعمال تغییرات پیکربندی در MySQL و خواندن اطلاعات SSL ، سرویس MySQL را مجددا راه اندازی می کنیم :

برای بررسی اینکه در حال حاضر سرور به چه آدرس هایی بر روی چه اینترفیس هایی گوش می کند از دستور netstat استفاده می کنیم :

دستور netstat آماری از شبکه سرور ما را نمایش می دهد. این خروجی نشان می دهد که پردازشی با نام mysql به آدرس db_server_ip و پورت ۳۳۰۶ که پورت پیش فرض MySQL می باشد متصل شده است.

اکنون باید در تنظیمات فایروال ، پورت MySQL را برای عبور از فایروال باز کنیم :

در مرحله بعد کاربرانی که باید به سرور پایگاه داده از راه دور دسترسی داشته باشند را تعیین می کنیم.

مرحله سوم – نصب پایگاه داده WordPress و مجوز های راه دور

با اینکه تنظیمات آدرس IP و انتظار درخواست در سرور MySQL انجام شده است ولی هنوز دسترسی راه دور برای کاربران و پایگاه داده ها فعال نشده است. در ادامه یک پایگاه داده برای WordPress و یک کاربر برای دسترسی به آن ایجاد می کنیم.

با اتصال به MySQL با دسترسی کاربر root شروع می کنیم :

از شما رمز عبور کاربر root خواسته می شود ، و در ادامه باید خط فرمان جدید که با <mysql شروع می شود را مشاهده کنید :

اکنون می توانیم یک پایگاه داده برای استفاده در WordPress ایجاد کنیم. نام اون رو wordpress قرار میدهیم که برای استفاده در آینده راحت تر باشیم :

نکته : در انتهای تمام دستورات SQL باید سمیکولون (;) قرار بگیرد. اگر شما دکمه ENTER را در MySQL وارد کنید ، در یک خط جدید مقدار خط فرمان را به صورت -> مشاهده می کنید و این به این معنی است که شما مقدار سمیکولون را وارد نکرده اید. کافیست در خط جدید شما فقط سمیکولون را وارد کرده و ENTER را بزنید.

اکنون پایگاه داده را ایجاد کردیم و الان باید یک کاربر ایجاد کنیم.ایجاد کاربر کمی پیچیدگی دارد ، به این صورت که باید دو کاربر با دو پروفایل که مشخص می کند کاربر از کجا متصل می شود ایجاد کنیم. یک کاربر روی سیستم محلی Local و یک کاربر برای ارتباط راه دور با آدرس IP سرور ایجاد می کنیم.

ابتدا کاربر محلی را با نام wordpressuser ایجاد کرده و آن را فقط برای ارتباطات محلی تنظیم می کنیم و در تعریف localhost قرار می دهیم :

در ادامه دسترسی کامل را به این کاربر برای پایگاه داده ایجاد شده می دهیم :

این کاربر الان دسترسی کامل به پایگاه داده wordpress دارد ، ولی از راه دور نمی تواند به پایگاه داده متصل شود و فقط از سیستم محلی و از روی همین سرور به پایگاه داده دسترسی دارد.

اکنون یک کاربر دیگر همراه با کاربر ایجاد شده ، ایجاد می کنیم که منحصرا به درخواست وب سرور پاسخ دهد. برای این کار باید آدرس IP سرور وب را داشته باشید. نام این کاربر را هر چیزی می توانید انتخاب کنید ، اما طبق تجربه و برای کارایی بهتر ، نام این کاربر را دقیقا مشابه کاربری که به تازگی ایجاد کردیم ، انتخاب می کنیم و این کاربر فقط برای قسمت میزبانی تعریف می شود.

آدرس IP سرور وب که قبلا در فایل mysqld.cnf تنظیم کردیم را به یاد داشته باشید. از هر آدرسی که استفاده کردید مجددا در این قسمت نیز باید استفاده کنید. به این معنی که اگر در تنظیمات mysqld.cnf از آدرس IP عمومی Public سرور استفاده شده در این جا هم از همین آدرس باید استفاده کنید و اگر از آدرس شبکه خصوصی استفاده کردید نیز در اینجا هم باید از همین آدرس استفاده کنید :

اکنون ما کاربر راه دور را داریم و باید دسترسی های لازم را به آن اضافه کنیم. دقیقا همان دسترسی ها را به این کاربر نیز می دهیم :

برای ذخیره تنظیمات در دیسک و استفاده از آنها از flush استفاده می کنیم :

سپس از محیط دستوری MySQL با دستور زیر خارج می شویم :

اکنون پایگاه داده و کاربر مربوطه را ایجاد کرده و الان باید ارتباط راه دور را تست و بررسی کنیم.

مرحله چهارم – تست و بررسی ارتباطات راه دور و محلی

قبل از اینکه به ادامه پیکربندی بپردازیم بهترین کار این است که اتصال به پایگاه داده را از هر دو سرور محلی و وب سرور با کاربر wordpressuser بررسی کنیم.

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

سپس رمز عبور تعیین شده برای این کاربر را وارد کنید.

اگر خط فرمان MySQL نمایش داده شد ، به این معنی است که اتصال محلی با موفقیت انجام شده است و شما می توانید خارج شوید :

به سرور وب وارد شوید تا اتصال راه دور را بررسی کنیم.

برای تست اتصال راه دور باید برخی ابزار های MySQL را برای دسترسی به پایگاه داده روی سرور نصب کنیم. پکیج های سرور را بروزرسانی کنید و ابزارهای زیر را نصب کنید :

با قالب دستوری زیر می توانیم به سرور پایگاه داده دسترسی پیدا کنیم :

مجددا ، در اینجا نیز دقت کنید آدرس IP را به درستی وارد کنید. آدرس IP باید همان آدرسی باشد که قبلا تنظیم کردیم ، اگر از آدرس IP عمومی استفاده می کنید همان آدرس را قرار دهید و اگر از آدرس IP شبکه خصوصی استفاده می کنیم از آدرس شبکه خصوصی استفاده کنید.

از شما رمز عبور کاربر wordpressuser خواسته می شود ، اگر همه چیز درست باشد بعد از وارد کردن رمز عبور باید خط فرمان MySQL را مشاهده کنید. با دستور زیر می توان از استفاده SSL در ارتباطات مطمئن شویم :

خط SSL: نشان می دهد که رمز SSL در حال استفاده است. اکنون که مطمئن شدید ارتباط راه دور به درستی کار می کند می توانید از محیط دستوری SQL خارج شوید :

برای بررسی بیشتر می توانید این کار را از یک سرور دیگر انجام دهید و مطمئن شوید که آن سرور دسترسی لازم برای اتصال به پایگاه داده را ندارد. شما اتصال محلی و راه دور را بررسی کردید ولی هنوز ارتباط از سرور های دیگر که نباید پذیرفته شوند را بررسی نکرده اید.

در ادامه همین روال تست را با یک سرور دیگه که تنظیمات آن را انجام نداده ایم و با همان کاربری که ایجاد کرده ایم انجام می دهیم. همچنین باید همان ابزاری که بالاتر نصب کردیم را نصب کنید :

خروجی این دستور نباید موفقیت آمیز باشد و خطایی مشابه به این را باید برگرداند :

این دقیقا همان چیزی هست که ما دنبال آن بودیم.

تا اینجا تست اتصال راه دور پایگاه داده با موفقیت انجام شده و ما می توانیم در ادامه به نصب WordPress بپردازیم.

مرحله پنجم – نصب WordPress

برای نشان دادن قابلیت های سرور جدید MySQL ما که قابلیت اتصال از راه دور را دارد ، WordPress را که یک پلتفورم محبوب است بر روی سرور وب نصب می کنیم. برای این کار لازم است که ابتدا برنامه را دانلود و استخراج کنیم ، سپس اطلاعات اتصال را پیکربندی کرده و در آخر نصب WordPress از طریق وب انجام دهیم.

در سرور وب ، آخرین نسخه WordPress را در مسیر home دانلود می کنیم :

فایل ها را استخراج می کنیم که یک دایرکتوری به نام wordpress ایجاد می کند :

WordPress حاوی یک فایل پیکربندی است که ما از آن به عنوان نقطه شروع استفاده می کنیم. یک کپی از این فایل تهیه می کنیم ، که با حذف -sample از نام فایل ، این فایل قابل استفاده در WordPress خواهد بود :

یک پیشنهادی که برای یک نصب امن و تجاری به شما می کنیم این است که از کلید های امنیتی برای نصب استفاده کنید. WordPress این مقادیر را به صورت اتوماتیک تولید می کند و نیازی به تولید این مقادیر توسط شما نیست. این مقادیر فقط برای استفاده داخلی هستند و به کارایی سیستم به خاطر داشتن مقادیر پیچیده صدمه ای نمی زنند.

برای گرفتن مقدار امنیتی salt از تولید کننده مقادری امنیتی WordPress دستور زیر را تایپ کنید :

مقداری تنظیمات نشان داده می شوند که این ها را باید کپی کرده و در فایل wp-config.php وارد کنید :

نکته : درخواست شما منحصر به فرد و تکرار نشدنی است و هر بار متن جدید تولید می شود. متن زیر یک نمونه است و نباید آن را کپی کنید.

متنی دریافتی را در حافظه موقت clipboard کپی کنید و فایل تنظیمات را در حالت ویرایش متنی باز کنید :

قسمتی که شامل تنظیمات ساختگی برای این قسمت هستند را پیدا کنید. این قسمت مشابه زیر است :

این خط ها را حذف کرده و مقادیر کپی شده از تولید کننده رمز WordPress را در اینجا بچسبانید.

در ادامه باید اطلاعات پایگاه داده راه دور را وارد کنیم. این اطلاعات در بالای فایل هستند ، که کمی بالاتر از کلید هایی که کپی کردیم هستند. به یاد داشته باشید که مقدار آدرس IP را همان مقداری که در مرحله تست وارد کردید ، قرار دهید :

در انتها نیز در هر قسمتی از فایل ، مقدار زیر را قرار دهید. این مقدار به WordPress می گوید که برای ارتباطات پایگاه داده از اتصال SSL استفاده کند:

این فایل را ذخیره کرده و خارج شوید.

در ادامه باید فایل ها و دایرکتوری ایجاد شده را به مسیر ریشه Nginx انتقال دهیم. برای این کار از گزینه -a برای نگهداری مجوز ها استفاده می کنیم :

الان همه فایل های ما در سرجای خود قرار گرفتند. تنها کاری باید انجام دهیم تغییر مالکیت فایل ها است. ما باید مالکیت تمام فایل های مسیر ریشه Nginx را به کاربر www-data انتقال دهیم :

WordPress نصب شده و فقط تنظیمات روتین تحت وب آن باقی مانده است که آن را در ادامه انجام می دهیم.

مرحله ششم – تنظیم WordPress از طریق وب

WordPress یک سری تنظیمات تحت وب روتین دارد که تعدادی سوال پرسیده و جدول های مربوطه را در پایگاه داده ایجاد می کند. نام دامنه یا آدرس IP عمومی سرور را در مرورگر وارد کنید :

http://example.com

نصب کننده WordPress ، صفحه انتخاب زبان دلخواه شما را نمایش می دهد که باید مقدار مناسب را انتخاب کنید و کلیک کنید تا صفحه نمایش اصلی نمایش داده شود :

wp-install

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

نتیجه گیری 

در این آموزش، ما یک پایگاه داده MySQL را برای پذیرفتن اتصالات محافظت شده SSL از نصب وردپرس و از راه دور ، راه اندازی کرده ایم.دستورالعمل ها و تکنیک های مورد استفاده ما برای هر برنامه ی وب که در هر زبان برنامه نویسی نوشته شده است، قابل استفاده است، اما جزئیات پیاده سازی خاص متفاوت خواهد بود که باید برای کسب اطلاعات بیشتر به مستندات پایگاه داده برنامه یا زبان خود مراجعه کنید.

Leave a Reply