زیرساخت ابری هایو

نصب وردپرس در Ubuntu 20.04 با ساختار LEMP

فهرست مطالب

نصب وردپرس در اوبونتو با ساختار LEMP آسونه اگر درست انجامش بدید.

تو این آموزش قرار نحوه نصب و راه اندازی سایت وردپرسی در ابونتو با رعایت تمام اصول و استانداردهای امنیتی داشته باشیم.

بعد از خوندن و اجرای پیشنیازهای این مقاله:

  • MySQL نصب خواهد شد
  • PHP نصب خواهد شد
  • Nginx نصب خواهد شد
  • دامین شما به وب سرور وصل خواهد شد
  • SSL نصب و فعال خواهد شد
  • WordPress نصب خواهد شد
  • سرور شما آماده میزبانی وب سایت شما خواهد بود

قبل از شروع بهتر بدونید: هایو یک سرور ابری وردپرسی برای شما آماده کرده که با 1 کلیک و بدون هیچ دردسری تمام تنظیمات وب سرور و وردپرس انجام شده و در نهایت یک سرور ابری کامل برای نصب وردپرس دریافت خواهید کرد.

برای دریافت سرور رایگان وردپرس کافی در هایو ثبت نام کنید و از طریق پیشخوان کاربری – سرور ابری – سرور ابری آماده (پلتفرم آماده) وردپرس رو انتخاب کنید تا سرور ساخته بشه.

(ساخت و تست اولین سرور ابری رایگان خواهد بود 🙂 )

 

پیش‌نیاز های نصب وردپرس در ابونتو 20.04

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

همچنین برای اینکه وردپرس رو با ساختار LEMP بتونید پیاده سازی بکنید نیاز هست که موارد گفته شده در آموزش های زیر رو نیز از قبل انجام داده باشید:

  • ساخت یک کاربر با دسترسی sudo در سرور

در این آموزش ما راه اندازی سرور وردپرسی رو با یک یوزر غیر root که دسترسی sudo داره انجام میدیم. اگر همچین کاربری تو سرورتون هنوز نساختید قبل از ادامه مقاله تنظیمات اولیه سرور Ubuntu 20.04 رو بخونید و دستورات گفته شده رو برای افزایش امنیت سرور انجام بدید.

  • نصب ساختار LEMP در سرور

برای راه اندازی وردپرس نیاز به وب سرور، دیتابیس و php داریم که هر 3 اینها رو میتونید در ساختار LEMP (Linux, Nginx, MySQL و PHP) داشته باشید.

پس برای اینکه تمام نیازمندی های مهم و اصلی رو داشته باشید مقاله نصب LEMP در سرور ابونتو 20.04 رو بخونید و تنظیمات مربوطه رو انجام بدید.

  • فعال سازی SSL در سرور

برای افزایش امنیت وب سایت وردپرسی تون نیاز هست که SSL رو روی دامنه خودتون در سرور ابونتو نصب و فعال کنید.

    • فعال سازی SSL روی دامین در سرور

اگر روی سرورتون دامین ست کردید میتونید از آموزش فعال سازی Let’s Encrypt در Nginx برای نصب و فعال سازی SSL استفاده کنید.

    • فعال سازی SSL اگر دامین ندارید

اگر سایت رو برای تست و روی آیپی بالا آوردید می تونید از آموزش فعال سازی Self-Signed SSL برای nginx برای فعال سازی SSL روی آیپی سرور استفاده کنید.

نکته: مد نظر داشته باشید که تو سرور وردپرسی آماده  هایو، مراحل نصب وردپرس رو چون نیاز به ورود اطلاعات وب سایت شما داره خودتون باید انجام بدید.

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

وقتی پیشنیاز های بالا رو تنظیم و آماده کردید با کاربر sudo وارد سرور بشید و مراحل زیر رو ادامه بدید.

ساخت یوزر دیتابیس در MySQL برای وردپرس

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

برای شروع به MySQL با کاربر root وارد بشید.

اگر MySQL شما تنظیم شده که از افزونه auth_socket برای اهراز هویت استفاده بکنه (بطور پیشفرض فعاله) میتونید با دستور زیر به عنوان کاربر روت به mysql وارد بشید:

sudo mysql

اما اگر متد ورود رو تغییر دادید تا از کاربر روت نیز پسورد دریافت کنید با کمک دستور زیر وارد mysql بشید:

mysql -u root -p

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

درنهایت وقتی وارد شدید، باید یک دیتابیس جدید برای وردپرس بسازید.

اسم دیتابیس رو هرچی که دوست دارید میتونید بزارید (ترجیحا یک عبارت تصادفی سخت بزارید) اما ما تو این آموزش برای ساده سازی اسم دیتابیس رو wordpress میزاریم.

برای ساخت دیتابیس دستور زیر رو وارد کنید:

CREATE DATABASE wordpress DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;

نکته: تمام دستورات MySQL باید با سمی کالون (;) تموم بشن. اگر احینا خطا دریافت کردید یا دستور اجرا نشد بررسی کنید که سمی کالون رو در آخر دستور گذاشته باشید.

حالا باید یک یوزر (کاربر) جدید برای مدیریت دیتابیسی که ساختیم بسازیم.

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

برای ساخت کاربر ما از نام wordpressuser استفاده میکنیم، اما همچنان شما مختار هستید که هر اسمی که دوست دارید رو استفاده کنید (ترجیحا یک اسم سخت و رندوم (تصادفی) بسازید).

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

CREATE USER 'wordpressuser'@'localhost' IDENTIFIED BY 'password';
 
GRANT ALL ON wordpress.* TO 'wordpressuser'@'localhost';

دقت داشته باشید که به جای عبارت password یک رمز سخت برای کاربر جدید انتخاب کنید.

خب، کارهای مربوط به دیتابیس تموم شد. حالا با دستور زیر از MySQL خارج بشید:

EXIT;

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

نصب افزونه (اکستنشن) های PHP برای وردپرس در ابونتو

بعد از اینکه LEMP رو تنظیم کردیم، نیاز داریم که یکسری PHP Extention یا افزونه php رو برای ارتباط بهتر با دیتابیس و وردپرس نصب و فعال بکنیم.

با کمک دستورات زیر اول یکبار ابونتو رو آپدیت میکنیم و بعد کاربردی ترین اکستنشن های PHP برای وردپرس رو نصب میکنیم:

sudo apt update

sudo apt install php-curl php-gd php-intl php-mbstring php-soap php-xml php-xmlrpc php-zip

نکته: بعضی از افزونه ها یا قالب های وردپرس گاها نیاز به یکسری اکستنشن php خاص دارند که معمولا در مستندات اونها یا بعد از نصب اونها به شما درموردش اطلاع داده میشه، برای نصب اکستنشن جدید در php میتونید مثل بالا از دستور apt استفاده کنید.

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

وقتی نصب extention ها تموم شد، PHP-FPM رو ری استارت کنید تا PHP متوجه مواردی که به تازگی نصب شده بشه و اونها رو اجرا کنه.

sudo systemctl restart php7.4-fpm

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

تنظیم کردن nginx برای راه اندازی وردپرس در ابونتو

خب، حالا لازمه تا یکم تنظیمات سفارشی برای وردپرس در nginx داشته باشیم. قاعدتا با توجه به پیشنیازهای این آموزش شما در nginx تنظیمات مربوط دامین ، آیپی و SSL رو در /etc/nginx/sites-available/ انجام دادید.

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

شما میتونید از همون فایل استفاده کنید و یا مثل ما یک فایل جدید با محتوای همون فایل و مواردی که در ادامه گفته شده داشته باشید.

اسم فایل کانفیگ وردپرس رو ما تو این آموزش wordpress میزاریم ولی شما میتونید هر اسمی که دوست دارید رو انتخاب کنید.

همچنین ما از مسیر /var/www/wordpress/ به عنوان مسیر اصلی (فولدر root) جهت نصب وردپرس استفاده میکنیم که دوباره شما مختار هستید اسم دیگه ای رو برای این فولدر انتخاب کنید.

نکته: این احتمال وجود داره که شما از تنظیمات و فایل های پیشفرض خود nginx برای راه اندازی وب سایت استفاده کرده باشید، یعنی فایل default برای کانفیگ و مسیر /var/www/html/ به عنوان فولدر روت.

اگر قراره که فقط یک وب سایت و یک پروژه با nginx داشته باشید مشکلی نداره و میتونید ادامه بدید، اما درغیر اینصورت توصیه میشه که برای هر پروژه حتما یک فایل تنظیمات جداگانه داشته باشید.

خب، فایل کانفیگ رو با دسترسی sudo باز کنید:

sudo nano /etc/nginx/sites-available/wordpress

دستورات پیشفرض کانفیگ رو به اون اضافه میکنیم، و بعد داخل بلاک server چندتا location جدید میخواهیم درست کنیم.

برای شروع از بلاک مسیر دهی دقیق برای درخواست هایی که به /favicon.ico و /robots.txt ختم می شن استفاده میکنیم که دیگه لاگ این درخواست ها رو ذخیره نکنیم.

همچنین از regex (Regular expression) یا همون عبارت قاعده مند! برای پیدا کردن فایل های استاتیک استفاده میکنیم که دوباره برای این موارد هم لاگ کردن رو خاموش کنیم و میگیم که اونها قابل کَش شدن هستند که سرعت بارگذاری سایت بالاتر بره.

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

server {
location = /favicon.ico { log_not_found off; access_log off; }
location = /robots.txt { log_not_found off; access_log off; allow all; }
location ~* \.(css|gif|ico|jpeg|jpg|js|png)$ {
expires max;
log_not_found off;
}
}

حالا داخل بلاک location / باید لیست try_files رو تنظیم کنیم. برای این کار خیلی راحت علامت # رو از جلوی اون بردارید تا از حالت کامنت خارج بشه و کار بکنه.

اینطوری به جای نمایش خطای 404 سیستم ابتدا فایل index.php رو با موارد درخواست شده توسط وردپرس رو اجرا میکنه.

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

server {
location / {
#try_files $uri $uri/ =404;
try_files $uri $uri/ /index.php$is_args$args;
}
}

وقتی کارتون تموم شد فایل رو ذخیره کنید و ببندیدش.

حالا باید چک کنیم ببینیم کدها و تنظیماتی که ذخیره کردیم درست هستند یا نه:

sudo nginx -t

اگر خطایی دریافت نکردید و syntax ok بود nginx رو ری‌لود کنید:

sudo systemctl reload nginx

دانلود وردپرس در اوبونتو

حالا که تنظیمات سرور آماده شده وقت این رسیده که وردپرس رو دانلود و نصب کنیم.

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

برای اینکار اول فولدری که داخلش هستیم رو به فولدر موقت سرور تغییر میدیم:

cd /tmp

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

curl -LO https://fa.wordpress.org/latest-fa_IR.tar.gz

نکته: عبارت LO- برای اینکه بتونیم مستقیما به فایل نهایی برسیم استفاده میشه، L برای اینکه مطمئن بشیم درصورت وجود ریدایرکت در لینک به فایل نهایی برسیم. و O برای این استفاده میشه که نام فایل دانلودی دقیقا مشابه فایلی که در لینک دانلود نوشته شده باشه.

حالا فایل فشرده ای که دانلود کردیم رو باید از حالت فشرده خارج کنیم:

tar xzvf latest.tar.gz

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

cp /tmp/wordpress/wp-config-sample.php /tmp/wordpress/wp-config.php

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

sudo cp -a /tmp/wordpress/. /var/www/wordpress

الان که فایل ها تو فولدر روت نشستن باید دسترسی لازم رو به کاربریه www-data بدیم تا Nginx بتونه فایل های وردپرس رو بخونه و اجرا بکنه.

sudo chown -R www-data:www-data /var/www/wordpress

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

تنظیم کردن فایل کانفیگ وردپرس در سرور اوبونتو

الان باید یکسری تغییرات تو فایل کانفیگ وردپرس اعمال بکنیم.

درقدم اول باید کلید های امنیتی وردپرس یا همون wordpress salts رو تغییر بدیم. برای salt های وردپرس حتما باید از یک عبارت کاملا رندوم و طولانی استفاده بکنیم تا امنیت سایت ما دو چندان بشه.

لذا برای اینکه مطمئن باشیم عبارت های ما امن هستیم از خود وردپرس میخواهیم که sal ها رو تولید کنه و برامون بفرسته تا بتونیم تو فایل wp-config ازشون استفاده کنیم.

برای اینکار دستور زیر رو اجرا کنید:

curl -s https://api.wordpress.org/secret-key/1.1/salt/

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

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

خروجی دستور بالا:
define('AUTH_KEY', '1jl/vqfs<XhdXoAPz9 این مقادیر را کپی نکنید c_j{iwqD^<+c9.k<J@4H');
define('SECURE_AUTH_KEY', 'E2N-h2]Dcvp+aS/p7X این مقادیر را کپی نکنید {Ka(f;rv?Pxf})CgLi-3');
define('LOGGED_IN_KEY', 'W(50,{W^,OPB%PB<JF این مقادیر را کپی نکنید 2;y&,2m%3]R6DUth[;88');
define('NONCE_KEY', 'll,4UC)7ua+8<!4VM+ این مقادیر را کپی نکنید #`DXF+[$atzM7 o^-C7g');
define('AUTH_SALT', 'koMrurzOA+|L_lG}kf این مقادیر را کپی نکنید  07VC*Lj*lD&?3w!BT#-');
define('SECURE_AUTH_SALT', 'p32*p,]z%LZ+pAu:VY این مقادیر را کپی نکنید  C-?y+K0DK_+F|0h{!_xY');
define('LOGGED_IN_SALT', 'i^/G2W7!-1H2OQ+t$3 این مقادیر را کپی نکنید t6**bRVFSD[Hi])-qS`|');
define('NONCE_SALT', 'Q6]U:K?j4L%Z]}h^q7 این مقادیر را کپی نکنید 1% ^qUswWgn+6&xqHN&%');

بعد از دریافت عبارت های مخصوص خودتون با دستور زیر فایل کانفیگ وردپرس رو باز کنید

sudo nano /var/www/wordpress/wp-config.php

تو این فایل بگردید دنبال بخش مرتبط به Salt های وردپرس تا سالت های خودتون رو جایگزینشون کنید. همچین چیزی رو باید پیدا کنید:

define('AUTH_KEY', ' مقادیر تولید شده خودتون رو اینجا جایگزین کنید');
define('SECURE_AUTH_KEY', ' مقادیر تولید شده خودتون رو اینجا جایگزین کنید');
define('LOGGED_IN_KEY', 'مقادیر تولید شده خودتون رو اینجا جایگزین کنید');
define('NONCE_KEY', 'مقادیر تولید شده خودتون رو اینجا جایگزین کنید');
define('AUTH_SALT', 'مقادیر تولید شده خودتون رو اینجا جایگزین کنید');
define('SECURE_AUTH_SALT', 'مقادیر تولید شده خودتون رو اینجا جایگزین کنید');
define('LOGGED_IN_SALT', 'مقادیر تولید شده خودتون رو اینجا جایگزین کنید');
define('NONCE_SALT', 'مقادیر تولید شده خودتون رو اینجا جایگزین کنید');

تمام این خطوط رو پاک کنید و مقادیر تولید شده مخصوص خودتون رو اینجا جایگزین کنید.

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

یه تکه کد دیگه هم آخر فایل کانفیگ اضافه میکنیم که متد تغییر و نوشتن بر روی فایل های وردپرس رو بصورت مستقیم اجرا کنه (درحالت پیشفرض وردپرس اطلاعات ftp رو مجدد از ما میخواد) و مشکلی پیش نیاد.

define( 'DB_NAME', 'wordpress' );

/** MySQL database username */
define( 'DB_USER', 'wordpressuser' );

/** MySQL database password */
define( 'DB_PASSWORD', 'password' );

. . .

define( 'FS_METHOD', 'direct' );

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

تکمیل نصب وردپرس از طریق وب

خب حالا که تمام تنظیمات سمت سرور کامل شده ما آماده این هستیم که وردپرس رو از طریق مرورگر نصب کنیم و سایت خودمون رو راه اندازی کنیم.

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

http://آدرس_سایت_یا_آیپی/wordpress

ادامه رو هم که مطمئنا میدونید باید چیکار کنید.

مراحل نصب وردپرس مثل همیشه برای شما بازخواهد شد (منهای بخش ورود اطلاعات دیتابیس، چون قبلا اونها رو تو فایل کانفیگ مشخص کردیم).

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

جمع بندی

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

البته پیشنهاد میشه همین ابتدای کار به تنظیمات – پیوندهای یکتا برید و گزینه نام نوشته رو انتخاب کنید و تنظیمات رو ذخیره کنید.

در آخر اگر دنبال دردسر نیستید و میخواهید خیلی سریعتر سایت وردپرسی تون بیاد بالا توصیه میکنم از سرور آماده وردپرسی هایو استفاده کنید.

ساخت اولین سرور در هایو رایگان هست، کافیه تو هایو ثبت نام کنید و از بخش ویرا ابر سرور یا پلتفرم آماده رو انتخاب کنید و سرور وردپرسی خودتون رو راه اندازی کنید.

نیاز به راهنمایی بیشتر دارید؟
عجله دارید؟ 02156218439
رایگان آموزش ببین - آموزش کار با سرویس های هایو

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *