راهنمای مطالعه
وردپرس محبوبترین سیستم مدیریت محتوا (CMS) در اینترنت است. این سیستم شمارا قادر میسازد بهآسانی وبلاگها و وبسایتهای خود را با پردازش PHP بر بکاند MySQL راهاندازی کنید. کاربران وردپرس هرروز در حال افزایش هستند و همچنین انتخاب بسیار مناسبی برای راهاندازی سریع وبسایت و وبلاگ به شمار میرود. پس از راهاندازی وبسایت وردپرسی تقریباً همه تنظیمات مدیریتی را میتوان در بخش فرانتاند وب انجام داد.
در این راهنما قصد داریم یک نمونه وبسایت وردپرسی را با LAMP stack (لینوکس، Nginx، MySQL و PHP) روی سرور اوبونتو ۱۸.۰۴ (Ubuntu) راهاندازی کنیم.
پیشنیازها
برای تکمیل این راهنمای آموزشی باید به سرور اوبونتو ۱۸.۰۴ دسترسی داشته باشید.
همچنین پیش از آغاز عملیاتی کردن این راهنما باید پیشنیازهای زیر را مهیا کنید:
- یک کاربر sudo روی سرور خود ایجاد کنید: در این راهنما همه مرحلهها را با استفاده از کاربر non-root با مزیت sudo تکمیل میکنیم.
- استک LEMP نصب کنید: وردپرس برای عملکرد صحیح به سرور وب، پایگاه داده و PHP نیاز دارد. راهاندازی و تنظیم استک LEMP (لینوکس، Nginx، MySQL و PHP) پاسخ مناسبی به همه این نیازمندیها است.
- وبسایت خود را با SSL امن کنید: وردپرس محتوای دینامیک به کار میگیرد و تأیید هویت و مجاز بودن کاربران را هم مدیریت میکند. TLS/SSL همان تکنولوژی است که شمارا قادر میسازد ترافیک وبسایت خود را در جهت حفظ امنیت رمزگذاری کنید. نحوه تنظیم و راهاندازی SSL به این موضوع بستگی دارد که نام دامنه برای وبسایت خود در اختیاردارید یا خیر.
- اگر نام دامنهدارید: سادهترین روش برای افزایش امنیت استفاده از روش Let’s Encrypt است که مجوزهای مطمئن و رایگان فراهم میکند.
- اگر نام دامنه ندارید: و البته از این پیکربندی صرفاً برای آزمودن یا استفاده شخصی استفاده میکنید، میتوانید از مجوز خود امضا بهره ببرید. این نوع مجوز همان نوع رمزگذاری را اما بدون تأیید دامنه امکانپذیر میکند.
وقتی مراحل راهاندازی و اجرا را به پایان رساندید، با کاربری sudo وارد سرور شوید و مراحل زیر را دنبال کنید.
مرحله اول – ایجاد پایگاه داده و کاربر MySQL برای وردپرس
اولین مرحله کاملاً مقدماتی و ساده است. وردپرس از MySQL برای مدیریت و ذخیرهسازی اطلاعات کاربران استفاده میکند. ما MySQL را نصبکردهایم، اما همچنین باید برای وردپرس یک کاربر و پایگاه دادهها هم ایجاد کنیم.
برای شروع وارد حساب کاربری اصلی (Administrator) در روت (ریشه) MySQL شوید. اگر MySQL طوری پیکربندیشده که از پلاگین تأیید هویت پیشفرض auth_socket استفاده کند، میتوانید با استفاده از sudo وارد حساب اصلی مدیریت MySQL شوید:
sudo mysql
اگر روش تأیید هویت را به استفاده از رمز ورود برای حساب کاربری روت MySQL تغییر دادهاید، باید از این قالب استفاده کنید:
mysql -u root -p
حالا اعلان برای دریافت رمز عبوری ظاهر میشود که برای حساب کاربری روت MySQL تعیین کرده بودید.
در ابتدا میتوانیم یک پایگاه داده مجزا ایجاد کنیم که وردپرس بتواند آن را کنترل کند. شما میتوانید این پایگاه داده را به روش دلخواهتان نامگذاری کنید اما در این راهنما برای سهولت بیشتر آن را wordpress مینامیم. با افزودن این کدها میتوانید پایگاه دادههای وردپرس را ایجاد کنید:
CREATE DATABASE wordpress DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;
نکته: گزاره MySQL باید حتماً با نقطهویرگول (؛) پایان یابد.
سپس یک کاربر مجزای MySQL ایجاد میکنیم تا از آن منحصراً برای اجرا روی پایگاه دادههای تازه استفاده کنیم. از دیدگاه مدیریتی و امنیتی ایجاد پایگاه دادههای تک کاربردی راهکار مناسبی است. در این راهنما از نام wordpressuser استفاده میکنیم اما شما میتوانید آن را تغییر دهید.
ما در ادامه این حساب کاربری را ایجاد میکنیم؛ برای آن رمز عبور تعیین میکنیم و همچنین اجازه ورود آن را به پایگاه دادههایی که ایجاد کرده بودیم، صادر میکنیم. کافی است دستور زیر را تایپ کنیم. حتماً باید رمز عبور قدرتمندی را برای کاربر پایگاه دادههای خود انتخاب کنید:
GRANT ALL ON wordpress.* TO 'wordpressuser'@'localhost' IDENTIFIED BY 'password';
حالا یک کاربر و پایگاه دادهها دارید که مخصوصاً برای وردپرس ایجادشدهاند. حالا باید کاری کنیم تا نمونه فعلی MySQL تغییراتی که اعمال کردهایم را شناسایی کند:
FLUSH PRIVILEGES;
با تایپ این دستور از MySQL خارج شوید:
EXIT;
با خروج از MySQL به پوسته معمول لینوکس بازمیگردید.
مرحله دوم – نصب افزونههای PHP
در هنگام تنظیم استک LEMP تنها تعداد محدودی افزونه نصب کردیم تا PHP با MySQL ارتباط برقرار کند. وردپرس و بسیاری از پلاگینهای آن از مزایای افزونههای اضافی 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 آن چیست.
وقتی افزونهها را نصب کردید، روند پردازش PHP-FPM را مجدداً راهاندازی کنید تا پردازنده فعال PHP بتواند از مزایای قابلیتهایی که تازه نصبکردهاید، بهره ببرد:
sudo systemctl restart php7.2-fpm
حالا همه افزونههای ضروری PHP را روی سرور نصبکردهایم.
مرحله سوم – پیکربندی Nginx
در این مرحله به تنظیم و دستکاری جزئی فایلهای بلوکی سرور Nginx میپردازیم. بر اساس راهنماهای پیشنیاز باید یک فایل پیکربندی برای وبسایت در دایرکتوری /etc/nginx/sites-available/ برای پاسخدهی به نام دامنه سرور یا آدرس IP داشته باشید که با مجوز TLS/SSL هم محافظت شود. در این راهنما از نمونه مثال /etc/apache2/sites-available/wordpress استفاده میکنیم، اما شما باید در موقعیت لازم حتماً مسیر فایل پیکربندی خودتان را با آن جایگزین کنید.
علاوه بر این، از /var/www/wordpress بهعنوان دایرکتوری روت نصب وردپرس خود استفاده میکنیم. شما باید از روت وب مخصوص در پیکربندی خودتان استفاده کنید.
نکته: ممکن است از پیکربندی پیشفرض /etc/nginx/sites-available/default استفاده کنید. استفاده از آن درصورتیکه تنها از یک وبسایت میزبانی کنید بلامانع است، اما در غیر این صورت بهتر است که پیکربندی را جدا کنید.
فایل بلوک سرور وبسایت خود را با مقادیر کاربر sudo بازکنید:
sudo nano /etc/nginx/sites-available/wordpress
درون بلوک اصلی server باید چند بلوک معدود location اضافه کنیم.
کار خود را با افزودن بلوکهای کاملاً مطابق با درخواست /faveicon.ico و /robots.txt آغاز کنید.
از یک عبارت لوکیشن کاملاً رایج استفاده میکنیم تا با هرگونه درخواست فایلهای استاتیک هماهنگ باشد. همچنین دوباره باید لاگینگ را برای این درخواستها غیرفعال کنیم و آنها را بهعنوان «قابلیت بالای کش شدن» علامتگذاری کنیم؛ زیرا معمولاً از نوع منابع گران شمرده میشوند. شما میتوانید فهرست این فایلهای استاتیک را بهگونهای تغییر دهید تا شامل هر افزونهای شوند که وبسایت شما از آن استفاده میکند:
/etc/nginx/sites-available/wordpress 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 را تنظیم و تعدیل کنیم تا کنترل بهجای نمایش خطای رایج ۴۰۴ به فایل index.php انتقال یابد.
این تغییر باید به شکل زیر دیده شود:
/etc/nginx/sites-available/wordpress server { . . . location / { #try_files $uri $uri/ =404; try_files $uri $uri/ /index.php$is_args$args; } . . . }
وقتی تغییرات به پایان رسید، فایل را ذخیره کنید و ببندید.
حالا میتوانیم با تایپ کردن دستور زیر خطاهای درونمتن پیکربندی را پیدا کنیم:
sudo nginx -t
اگر هیچ خطایی وجود نداشت، Nginx را دوباره بارگذاری کنید:
sudo systemctl reload nginx
در مرحله بعدی وردپرس را دانلود و راهاندازی میکنیم.
مرحله چهارم – دانلود کردن وردپرس
حالا که پیکربندی نرمافزار سرور پایانیافته است، میتوانیم وردپرس را دانلود و نصب کنیم. بهتر است بهمنظور حفظ موارد امنیتی همواره آخرین و تازهترین نسخه وردپرس را از وبسایت سازنده دریافت کنید.
به یک دایرکتوری قابلویرایش بروید و کد زیر را اضافه کنید:
cd /tmp curl -LO https://wordpress.org/latest.tar.gz
فایل فشرده را استخراجکنید تا ساختار دایرکتوری وردپرس شکل بگیرد:
tar xzvf latest.tar.gz
این فایلها را بهصورت موقتی به سند روت انتقال میدهیم. البته پیش از آن میتوانیم فایل نمونه پیکربندی را در نام فایل که وردپرس آن را میخواند کپی کنیم:
cp /tmp/wordpress/wp-config-sample.php /tmp/wordpress/wp-config.php
حالا میتوانیم همه محتوای درون دایرکتوری را به سند روت کپی کنیم. همچنین از پرچم –a استفاده میکنیم تا مطمئن شویم که همه مجوزها همچنان باقی هستند. علاوه بر این در انتهای منبع دایرکتوری نقطه میگذاریم تا نشان دهیم که همهچیز درون دایرکتوری حتی فایلهای پنهانشده هم باید کپی شوند:
sudo cp -a /tmp/wordpress/. /var/www/wordpress
حالا که فایلهایمان جایگزین شدند، مالکیت آنها را به کاربر و گروه www-data تغییر میدهیم. Nginx روی این کاربر و گروه اجرا میشود و Nginx همچنین باید بتواند فایلهای وردپرس را بخواند و بنویسد تا با وبسایت شما هماهنگ شود و بهروزرسانیهای خودکار را به اجرا درآورد.
sudo chown -R www-data:www-data /var/www/wordpress
فایلها حالا در سند روت سرور هستند و مالکیت صحیحشان هم مشخصشده است، اما همچنان لازم است برخی تنظیمات دیگر را هم تکمیل کنیم.
مرحله پنجم – تنظیم و راهاندازی فایل پیکربندی وردپرس
در این مرحله لازم است تغییراتی را در فایل اصلی پیکربندی وردپرس اعمال کنیم.
وقتی این فایل را باز میکنیم، ابتدا باید برخی کلیدهای مخفی را تنظیم کنیم تا وردپرس نصبشدهمان امنیت بیشتری داشته باشد. وردپرس قادر است بهطور خودکار مقادیری را برای این منظور تولید کند تا شما مجبور به ایجاد آنها نباشید. البته این مقادیر تنها بهصورت درون برنامهای مورداستفاده قرار میگیرند و به همین خاطر پیچیدگیشان اهمیتی ندارد.
برای دریافت مقادیر امن از سازنده کلید مخفی وردپرس این کد را اضافه کنید:
curl -s https://api.wordpress.org/secret-key/1.1/salt/
در پاسخ مقادیر یکتایی دریافت میکنید که به این شکل دیده میشوند:
نکته مهم: حتماً باید هر بار مقادیر تازهای درخواست کنید. مقادیر زیر را کپی نکنید!
Output define('AUTH_KEY', '1jl/vqfs<XhdXoAPz9 DO NOT COPY THESE VALUES c_j{iwqD^<+c9.k<J@4H'); define('SECURE_AUTH_KEY', 'E2N-h2]Dcvp+aS/p7X DO NOT COPY THESE VALUES {Ka(f;rv?Pxf})CgLi-3'); define('LOGGED_IN_KEY', 'W(50,{W^,OPB%PB<JF DO NOT COPY THESE VALUES 2;y&,2m%3]R6DUth[;88'); define('NONCE_KEY', 'll,4UC)7ua+8<!4VM+ DO NOT COPY THESE VALUES #`DXF+[$atzM7 o^-C7g'); define('AUTH_SALT', 'koMrurzOA+|L_lG}kf DO NOT COPY THESE VALUES 07VC*Lj*lD&?3w!BT#-'); define('SECURE_AUTH_SALT', 'p32*p,]z%LZ+pAu:VY DO NOT COPY THESE VALUES C-?y+K0DK_+F|0h{!_xY'); define('LOGGED_IN_SALT', 'i^/G2W7!-1H2OQ+t$3 DO NOT COPY THESE VALUES t6**bRVFSD[Hi])-qS`|'); define('NONCE_SALT', 'Q6]U:K?j4L%Z]}h^q7 DO NOT COPY THESE VALUES 1% ^qUswWgn+6&xqHN&%');
این مقادیر پیکربندی را باید مستقیماً درون فایل پیکربندی خود کپی کنیم تا کلیدهای امن تنظیم شوند.
حالا فایل پیکربندی وردپرس را بازکنید:
sudo nano /var/www/wordpress/wp-config.php
بخشی را که شامل مقادیر پیشفرض آن تنظیمات میشود پیدا کنید. این مقادیر باید به شکل زیر دیده شوند:
/var/www/wordpress/wp-config.php . . . define('AUTH_KEY', 'put your unique phrase here'); define('SECURE_AUTH_KEY', 'put your unique phrase here'); define('LOGGED_IN_KEY', 'put your unique phrase here'); define('NONCE_KEY', 'put your unique phrase here'); define('AUTH_SALT', 'put your unique phrase here'); define('SECURE_AUTH_SALT', 'put your unique phrase here'); define('LOGGED_IN_SALT', 'put your unique phrase here'); define('NONCE_SALT', 'put your unique phrase here'); . . .
این مقادیر را حذف کرده و مقادیری که کپی کرده بودید را در این محل جایگزین کنید:
/var/www/wordpress/wp-config.php . . . define('AUTH_KEY', 'VALUES COPIED FROM THE COMMAND LINE'); define('SECURE_AUTH_KEY', 'VALUES COPIED FROM THE COMMAND LINE'); define('LOGGED_IN_KEY', 'VALUES COPIED FROM THE COMMAND LINE'); define('NONCE_KEY', 'VALUES COPIED FROM THE COMMAND LINE'); define('AUTH_SALT', 'VALUES COPIED FROM THE COMMAND LINE'); define('SECURE_AUTH_SALT', 'VALUES COPIED FROM THE COMMAND LINE'); define('LOGGED_IN_SALT', 'VALUES COPIED FROM THE COMMAND LINE'); define('NONCE_SALT', 'VALUES COPIED FROM THE COMMAND LINE'); . . .
سپس باید برخی تنظیمات ارتباطی پایگاه دادهها را در ابتدای فایل اصلاح کنیم. شما باید نام پایگاه دادهها، کاربر پایگاه دادهها و رمز ورود مرتبطی که در MySQL تعیین کردیم را اصلاح کنید.
تغییر لازم بعدی تنظیم روشی است که وردپرس باید با استفاده از آن filesystem را بنویسد. ازآنجاکه به سرور وب اجازه دادهایم بتواند هر جا لازم است بنویسد، میتوانیم روش filesystem را صریحاً direct تعریف کنیم. اگر این تغییر را اعمال نکنید، ممکن است باعث شود درحالیکه میخواهیم فعالیتی را به اجرا درآوریم، وردپرس درخواست برای اعتبارات FTP را اجرا کند. این تنظیمات را میتوان زیر تنظیمات ارتباطی پایگاه دادهها یا هر جای دیگری در این فایل اضافه کرد:
/var/www/wordpress/wp-config.php . . . define('DB_NAME', 'wordpress'); /** MySQL database username */ define('DB_USER', 'wordpressuser'); /** MySQL database password */ define('DB_PASSWORD', 'password'); . . . define('FS_METHOD', 'direct');
وقتی این تغییرات تمام شد، فایل را ذخیره کنید و ببندید.
مرحله ششم – تکمیل نصب از طریق رابط کاربری وب
حالا که پیکربندی سرور به پایان رسیده است، میتوانیم روند نصب را از رابط کاربری وب پایان دهیم.
در مرورگر وب خود به آدرس عمومی IP یا نام دامنه سرور بروید:
http://server_domain_or_IP
زبانی موردنظرتان را انتخاب کنید:
سپس وارد صفحه اصلی تنظیمات خواهید شد.
نام مناسب برای وبسایت وردپرسی خود را تعیین و همچنین نام کاربری را انتخاب کند. بهتر است بهمنظور حفظ امنیت وبسایت نام کاربری admin را انتخاب نکنید. یک رمز عبور قوی بهصورت خودکار ایجاد میشود. این رمز عبور را ذخیره یا در صورت تمایل یک رمز عبور دیگر ایجاد کنید.
آدرس ایمیل خود را وارد کرده و دقیقاً تعیین کنید که مایل هستید موتورهای جستجو صفحههای شما را برای نمایش در نتایج ایندکس کنند یا خیر:
وقتی صفحه را تکمیل کردید، پنجره تازهای ظاهر میشود که از شما میخواهد با نام کاربری و رمز عبورتان وارد شوید:
بهمحض ورود به داشبورد مدیریت وردپرس راهنمایی خواهید شد:
کلام آخر
روند نصب و استفاده از وردپرس باید آسان و سریع باشد. برخی از سایر مراحل رایج بعدی شامل انتخاب لینکهای دائمی (permalink) برای پستهای شما میشود که میتوانید آن را در settings و سپس منوی permalinks مشاهده کنید. همچنین میتوانیم به امکان انتخاب تم تازه در منوی Appearance و سپس Theme اشارهکنیم. اگر در محیط وردپرس تازهکار هستید، با رابط کاربری آن کارکنید و بیشتر با CMS تازهتان آشنا شوید.