میزبانی وردپرس در سرور مجازی ابونتو 20.04
با گسترش اینترنت و رشد نیازهای وبسایتها، انتخاب یک بستر میزبانی مناسب برای وبسایت وردپرس به یکی از چالشهای مهم صاحبان کسبوکارهای آنلاین تبدیل شده است. در حالی که میزبانیهای اشتراکی به دلیل هزینههای پایینتر، گزینهای رایج هستند، بسیاری از صاحبان وبسایتهای پربازدید و حرفهای به سمت راهکارهای قدرتمندتر مانند سرور مجازی خصوصی (VPS) حرکت میکنند. میزبانی در سرور مجازی به شما کنترل بیشتری بر منابع سرور، امنیت و عملکرد سایت میدهد، که این امر برای کسبوکارهایی که به دنبال افزایش کارایی و امنیت سایت خود هستند، بسیار حائز اهمیت است.
در این مقاله، به شما نشان خواهیم داد که چگونه میتوانید میزبانی وردپرس در سرور مجازی خود را بهطور کامل و حرفهای در یک سرور مجازی میزبانی کنید. از نصب و پیکربندی اولیه وبسرور آپاچی گرفته تا نصب پایگاه داده MySQL و phpMyAdmin، به تمامی مراحل نصب و راهاندازی خواهیم پرداخت. همچنین، نکاتی درباره بهینهسازی عملکرد سرور و افزایش امنیت آن ارائه خواهیم داد تا بتوانید از وبسایت خود به بهترین نحو محافظت کنید و کارایی آن را افزایش دهید.
وردپرس چیست؟
وردپرس به عنوان یکی از محبوبترین سیستمهای مدیریت محتوا، انعطافپذیری بالایی دارد و به همین دلیل نیاز به زیرساختهای مناسب برای میزبانی دارد تا بتواند از قابلیتهای خود بهرهبرداری کامل کند. انتخاب یک سرور مجازی خصوصی، این امکان را فراهم میکند که بهطور کامل محیط سرور خود را مدیریت و شخصیسازی کنید و با دسترسی به منابع اختصاصی، به بهینهسازی و سفارشیسازی وبسایت خود بپردازید. برخلاف میزبانیهای اشتراکی که منابع سرور بین چندین کاربر تقسیم میشود، با یک سرور مجازی خصوصی، شما به منابع اختصاصی دسترسی دارید که میتواند برای افزایش سرعت و کاهش زمان بارگذاری صفحات سایت بسیار مفید باشد.
با اجرای این راهنما، میتوانید وردپرس را بهطور کامل بر روی سرور مجازی خود نصب و پیکربندی کنید و از مزایای این نوع میزبانی، از جمله بهبود عملکرد، افزایش امنیت، و دسترسی بیشتر به منابع اختصاصی، بهرهمند شوید. فرقی نمیکند که شما یک وبسایت شخصی، یک وبلاگ یا یک فروشگاه آنلاین داشته باشید؛ میزبانی وردپرس بر روی VPS میتواند بهترین انتخاب برای حرفهایتر شدن حضور آنلاین شما باشد.
چرا میزبانی وردپرس در سرور مجازی؟
میزبانی یا هاست وردپرس همواره دارای فراز و نشیب هایی است که از دید کاربران پنهان است , این فراز و نشیب ها در میزبانی سایت ها بستگی به چند مورد دارد که همیشه جز نکاتی است که کاربران به آن توجه نمیکنند. برای مثال در یک سرور اختصاصی که کنترل پنل دایرکت ادمین یا cPanel در آن نصب شده همیشه منابع آن در حالت OverLoad در حال کار کردن است.
با توجه به بازدید و کوئری های این چند وبسایت درصد پردازش زیادی را به پایگاه داده MYSQL اختصاص میدهد که با هر بازدید و هر ریکوست به سایت پایگاه داده دچار صف های طولانی از درخواست ها میشود.
این درخواست ها در زمان های پیک مصرف و بازدید زیاد به 1 دقیقه نیز میرسد که با وجود منابع خوبی که این سرور دارد باز هم جوابگو نبوده و سایت ها دچار اختلال و کندی میشوند.1 دقیقه برای پردازش یک ریکویست یا ارسال ریسپانس ها چه در tcp و چه در api عدد خیلی زیادی است . برای اینگونه از سایت ها استفاده از هاست اشتراکی یا هاست اختصاصی پیشنهاد نمیشود زیرا منابع زیادی را شامل میشود که صرف اقتصادی ندارد.
وبسایت هایی که محصولات زیادی را پشتیبانی میکنند و یا پست های زیادی دارند معمولا منابع بیشتری را مصرف میکنند زیرا بازدید آنها نیز بیشتر از وبسایت های عادی است.
به این دلیل است که برای وبسایت های پربازدید فیچر های خاصی ارایه میشود ولی وبسایت هایی که پایگاه داده سنگینی دارند مانند این وبسایت ها ( 4 گیگ ) و پست و محصولات زیادی را شامل میشود استفاده از هاست پیشنهاد نمیشود.
در این آموزش به میزبانی وردپرس در سرور مجازی میپردازیم و تمامیه موارد مورد نیاز این وبسایت را در سرور مجازی پیاده سازی میکنیم. با ما همراه باشید.
میزبانی وردپرس در سرور مجازی
میزبانی وردپرس بر روی سرور مجازی (VPS) انتخابی مناسب برای افرادی است که به دنبال افزایش کارایی، امنیت و انعطافپذیری در وبسایت خود هستند. برخلاف میزبانیهای اشتراکی، که منابع بین چندین وبسایت تقسیم میشوند، VPS به کاربران اجازه میدهد تا از منابع اختصاصی بهرهمند شوند و سرور را بهطور کامل مدیریت کنند. این امر به صاحبان وبسایتهای وردپرس این امکان را میدهد تا بهینهسازیهای دقیقتری برای بارگذاری سریعتر صفحات، مدیریت بهتر ترافیک، و امنیت بالاتر انجام دهند. علاوه بر این، میزبانی وردپرس بر روی VPS به کاربران امکان میدهد تا محیط سرور را بهدلخواه سفارشی کنند و کنترل کاملی بر تنظیمات و پیکربندیهای سیستم داشته باشند.
پیش نیاز ها :
برای راه اندازی وردپرس در سرور مجازی / سرور اختصاصی به چند پیش نیاز , نیاز است:
- سرور مجازی یا سرور اختصاصی
- سیستم عامل اوبونتو 20.04 یا بالاتر
- دامنه برای ایجاد رکورد های dns اختصاصی
- دسترسی sudo یا root
بصورت کلی برای میزبانی از یک وبسایت وردپرسی در یک سرور به این موارد نیاز است:
- سرور مجازی یا سرور اختصاصی
- دامنه و رکورد های DNS اختصاصی
- WebServer
- DATABASE
- PHPMYADMIN
- BIND DNS
- PHP
- SSL
راهاندازی سرور اوبونتو برای میزبانی وبسایت وردپرس
برای شروع به سرور مجازی یا سرور اختصاصی , از طریق SSH با نرم افزار های واسط مانند putty متصل میگردیم و ادامه مراحل را طی میکنیم:
ما به یک دامنه برای اختصاص دادن dns اختصاصی و راه اندازی آن نیاز داریم که میتوانید از دامنه اصلی نیز استفاده کنید. برای اینکار به وبسایت ثبت کننده دامنه مراجعه کنید و اقدام به تعریف dns اختصاصی کنید.
ما در این مقاله از یک دامنه .ir استفاده میکنیم با نام 15c.ir , که در پنل نیک باید 2 رکورد اختصاصی dns با نام های ns1.15c.ir و ns2.15c.ir را به آیپی سرور اختصاص دهیم تا در ادامه بتوانیم این دامنه و رکورد ها را به سرور مجازی متصل کنیم, مانند تصویر زیر.
1: بروزرسانی و آمادهسازی سرور
ابتدا سیستم را بروزرسانی کنید:
sudo apt update sudo apt upgrade -y
2: نصب Apache
برای نصب Apache از دستور زیر استفاده کنید:
sudo apt install apache2 -y
پس از نصب وبسرور آپاچی با دستورات زیر پروسه سرویس آپاچی را استارت سپس فعال میکنیم تا بعد از راه اندازی مجدد سرور (ریستارت سرور) بصورت خودکار فعال شود:
sudo systemctl start apache2 sudo systemctl enable apache2
3: نصب MySQL
MySQL را نصب و پیکربندی کنید:
sudo apt install mysql-server -y
پس از نصب پایگاه داده MYSQL در اوبونتو با دستور زیر تنظیمات امنیتی اولیه آن را انجام میدهیم:
sudo mysql_secure_installation
بعد از اجرای این دستور از شما سوالاتی مبتنی بر حذف اکانت تست , دسترسی با اکانت root و … سوال میشود که با n به معنی (عدم تایید) و y به معنی (تایید) پاسخ دهید.
4: نصب PHP و اکستنشنهای مورد نیاز
برای نصب PHP 7.4 و اکستنشنهای ضروری:
نصب php 7.4:
sudo apt install php7.4 -y
در صورتی که به ورژن های دیگر نیاز دارید میتوانید ورژن آن را تغییر دهید مانند :
sudo apt install php8.1 -y
sudo apt install php7.4 php7.4-cli php7.4-soap php7.4-json php7.4-iconv php7.4-mbstring php7.4-dom php7.4-simplexml php7.4-mysql libapache2-mod-php7.4 -y
پس از نصب موفق یکبار وبسرور apache را با دستور زیر ریستارت میکنیم:
sudo systemctl restart apache2
برای اطمینان از نصب میتوانید با دستور :
php -v
از نصب موفق آن در سرور مجازی خود آگاه شوید.
5: نصب phpMyAdmin
phpMyAdmin را برای مدیریت پایگاه داده نصب کنید:
sudo apt install phpmyadmin -y
در حین نصب، گزینه Apache2 را انتخاب کرده و مراحل را تکمیل کنید و کلمه عبور در مرحله آخر برای phpmyadmin وارد کنید, سپس فایل زیر را باز کرده و پیکربندی phpMyAdmin را اضافه کنید:
sudo nano /etc/apache2/apache2.conf
پیکربندی زیر را در انتهای کانفیگ دستور بالایی قرار دهید:
Include /etc/phpmyadmin/apache.conf
سپس Apache را ریستارت کنید:
sudo systemctl restart apache2
6: ساخت دایرکتوری برای وبسایت
یک دایرکتوری جدید برای وبسایت خود ایجاد کنید. به عنوان مثال، برای دامنه 15c.ir
:
sudo mkdir -p /var/www/15c.ir
این دستور دایرکتوری 15c.ir
را در /var/www
ایجاد میکند.
7: ایجاد پایگاه داده و کاربر برای وردپرس
1-وارد MySQL شوید:( بعد از دستور زیر از شما رمز عبور به mysql را سوال میکند که رمز پیشفرض root در سرور میباشد)
sudo mysql -u root -p
2-در محیط MySQL، پایگاه داده و کاربر جدید را ایجاد کنید:
-- ایجاد پایگاه داده dbname CREATE DATABASE dbname; -- ایجاد کاربر username با رمز عبور CREATE USER 'username'@'localhost' IDENTIFIED BY 'your_password_here'; -- دادن دسترسی کامل به پایگاه داده dbname برای کاربر username GRANT ALL PRIVILEGES ON dbname.* TO 'username'@'localhost'; -- اعمال تغییرات FLUSH PRIVILEGES;
واژه های dbname و username و password را با انتخاب خود جایگزاری کنید. برای مثال ما از واژه های دیگری بصورت پیشفرض و برای حفظ امنیت استفاده میکنیم که دستور آن مانند دستورات زیر هستند:
CREATE DATABASE famaserver-15c; CREATE USER 'username-15c'@'localhost' IDENTIFIED BY 'famaserver123456'; GRANT ALL PRIVILEGES ON famaserver-15c.* TO 'username-15c'@'localhost'; FLUSH PRIVILEGES;
3-با دستور زیر از محیط MySQL خارج شوید:
EXIT;
8: پیکربندی Apache برای دامنه و SSL
فایل پیکربندی Virtual Host برای دامنه خود را ایجاد کنید:
sudo nano /etc/apache2/sites-available/15c.ir.conf
محتوای زیر را اضافه کنید:
<VirtualHost *:80> ServerAdmin admin@15c.ir ServerName 15c.ir ServerAlias www.15c.ir DocumentRoot /var/www/15c.ir ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined RewriteEngine on RewriteCond %{SERVER_NAME} =15c.ir [OR] RewriteCond %{SERVER_NAME} =www.15c.ir RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent] </VirtualHost> <VirtualHost *:443> ServerAdmin admin@15c.ir ServerName 15c.ir ServerAlias www.15c.ir DocumentRoot /var/www/15c.ir # SSLEngine on # SSLCertificateFile /etc/letsencrypt/live/15c.ir/fullchain.pem # SSLCertificateKeyFile /etc/letsencrypt/live/15c.ir/privkey.pem # Include /etc/letsencrypt/options-ssl-apache.conf </VirtualHost>
9: نصب BIND و پیکربندی DNS
نصب BIND:
sudo apt install bind9 bind9utils bind9-doc -y
پیکربندی Zone برای دامنه 15c.ir
:
- فایل
named.conf.local
را باز کنید:
sudo nano /etc/bind/named.conf.local
2-تنظیمات زیر را اضافه کنید:
zone "15c.ir" { type master; file "/etc/bind/zones/db.15c.ir"; }; zone "235.113.93.in-addr.arpa" { type master; file "/etc/bind/zones/db.93.113.235"; };
3-دایرکتوری zones
را ایجاد کنید:
sudo mkdir /etc/bind/zones
4-فایل Zone برای دامنه 15c.ir
را ایجاد کنید:
sudo nano /etc/bind/zones/db.15c.ir
5-محتوای زیر را به فایل اضافه کنید:
$TTL 604800 @ IN SOA ns1.15c.ir. admin.15c.ir. ( 2 ; Serial 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 604800 ) ; Negative Cache TTL ; @ IN NS ns1.15c.ir. @ IN NS ns2.15c.ir. @ IN A 93.113.235.214 www IN A 93.113.235.214 ns1 IN A 93.113.235.214 ns2 IN A 93.113.235.214
6-فایل Zone برای رکورد معکوس:
sudo nano /etc/bind/zones/db.93.113.235
محتوای زیر را در فایل اضافه کنید:
$TTL 604800 @ IN SOA ns1.15c.ir. admin.15c.ir. ( 2 ; Serial 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 604800 ) ; Negative Cache TTL ; @ IN NS ns1.15c.ir. @ IN NS ns2.15c.ir. 214 IN PTR 15c.
7-سرویس BIND را فعال و تست کنید:
sudo named-checkconf sudo named-checkzone 15c.ir /etc/bind/zones/db.15c.ir sudo named-checkzone 235.113.93.in-addr.arpa /etc/bind/zones/db.93.113.235 sudo systemctl restart bind9
در صورتی که با خطا مواجه شدید به مراحل قبلتر رفته و از جایگزینی و جایگزاری دامنه خود با 15c.ir و آیپی سرور مطمن شوید.
10: تنظیمات فایروال
sudo ufw allow 53 sudo ufw allow 80 sudo ufw allow 443 sudo ufw allow 3306 sudo ufw allow 22 sudo ufw enable
11: تنظیمات PHP
برای افزایش اندازه آپلود فایل و تنظیمات دیگر:
sudo nano /etc/php/7.4/apache2/php.ini
تنظیمات زیر را تغییر دهید:(متناسب با نیاز )
upload_max_filesize = 128M post_max_size = 50M max_execution_time = 300 max_input_time = 300 memory_limit = 256M max_input_vars = 2000
12: فعالسازی هاست مجازی
برای فعالسازی هاست مجازی جدید، از دستور زیر استفاده کنید:
sudo a2ensite 15c.ir.conf
اگر هاست مجازی پیشفرض فعال است, (000-default.conf) را غیرفعال کنید:
sudo a2dissite 000-default.conf
سپس پیکربندی Apache را تست کنید:
sudo apache2ctl configtest
و Apache را راهاندازی مجدد کنید:
sudo systemctl restart apache2
بعد از جابجایی اطلاعات سایت یا آپلود فایل نصبی وردپرس اقدام به درخواست SSL میکنیم.
13: نصب Certbot برای SSL
Certbot را برای صدور گواهینامه SSL نصب کنید:
sudo apt install certbot python3-certbot-apache -y
سپس با دستور زیر درخواست نصب ssl را وارد میکنیم:
sudo certbot --apache -d 15c.ir -d www.15c.ir
با اجرای دستور فوق از شما یک ایمیل فعال دریافت میکند و بعد از آن گزینه هایی برای باز شدن سایت و هدایت تمامیه درخواست ها از https که گزینه 2 را باید بزنید تا تمامیه درخواست ها از htps عبور کند و هیچ لینکی در سرور با http باز نشود.
سپس 4 خط کدی که در مرحله 8 کامنت کردیم را با اجرای دستور زیر از کامنت خارج میکنیم:
sudo nano /etc/apache2/sites-available/15c.ir.conf
در پنجره باز شده گزینه های زیر را از حالت کامنت خارج میکنیم با حذف کردن علامت #:
SSLEngine on SSLCertificateFile /etc/letsencrypt/live/15c.ir/fullchain.pem SSLCertificateKeyFile /etc/letsencrypt/live/15c.ir/privkey.pem Include /etc/letsencrypt/options-ssl-apache.conf
14:حل مشکل 404 بعد از جابجایی وردپرس
در اکثر سرور ها که از وب سرور آپاچی استفاده میکنند بعد از نصب یا راه اندازی وردپرس یا انتقال سایت به سرور جدید تمامیه محصولات و پست ها ارور 404 دریافت میکنند. این مشکل به دلیل ست نشدن htaccess و دایرکتوری های پیشفرض میباشد و راه حل آن ساده میباشد.
2 مرحله برای اینکار وجود دارد که باید انجام شود تا مشکل ارور 404 در وردپرس حل شود.
مرحله اول: ابتدا به پیشخوان وردپرس مراجعه کنید و روی گزینه تنظیمات -> سپس تنظیمات پیوند یکتا کلیک کنید و تنظیمات را یکبار ذخیره کنید.
مرحله دوم:در صورتی که مشکل برطرف نشد دستور زیر را وارد کنید تا وارد تنظیمات apache در سرور مجازی شوید:
sudo nano /etc/apache2/apache2.conf
سپس کد های زیر را درون فایل باز شده قرار دهید فقط در نظر داشته باشید که آدرس وبسایت در پوشه /var/www را وارد کنید:
<Directory /var/www/15c.ir> AllowOverride All </Directory>
و ماژول mod_rewrite
را فعال کنید:
sudo a2enmod rewrite
و در آخر سرویس آپاچی را یکبار ریستارت میکنیم:
sudo systemctl restart apache2
کار تمام است و با کلیک بر روی پست جدید یا محصولات دیگر با ارور 404 مواجعه نخواهید شد.
15:دسترسی فایل ها و owner در سرور
در صورتی که بعد از انجام مراحل بالا امکان آپلود فایل در وردپرس و نصب افزونه جدید یا … را ندارید با دستورات زیر این مشکل برطرف میگردد. وجود این مشکل به این دلیل است که دسترسی فایلها با owner root میباشد و وردپرس اجازه آپلود یا تغییر و ایجاد فایل ها را ندارد.این مورد را میتوان بعد از آپلود فایل ها توسط ssh ایجاد کرد که سرور در ایجاد فایل htaccess نیز دچار مشکل نشود.
sudo chown -R www-data:www-data /var/www/15c.ir sudo chmod -R 755 /var/www/15c.ir
نتیجهگیری
میزبانی حرفهای وردپرس بر روی سرور مجازی انتخابی هوشمندانه برای افرادی است که به دنبال امنیت بالا، سرعت بهینه و کنترل کامل بر وبسایت خود هستند. با نصب و پیکربندی صحیح وبسرور، پایگاه داده، و ابزارهایی مانند phpMyAdmin، کاربران میتوانند بهراحتی وبسایت وردپرسی خود را مدیریت کنند و تجربهای سریع و پایدار برای بازدیدکنندگان فراهم آورند.
یکی از مزایای اصلی استفاده از سرور مجازی این است که به کاربران اجازه میدهد منابعی مانند CPU، حافظه و پهنای باند را بهصورت اختصاصی مدیریت کنند. این ویژگی بهویژه برای وبسایتهای پرترافیک یا سایتهای تجارت الکترونیک اهمیت دارد، زیرا با استفاده از سرور مجازی میتوان حجم بالای بازدیدکنندگان و تراکنشها را بهخوبی پاسخ داد.
بهطور کلی، انتخاب یک سرور مجازی برای میزبانی وردپرس نهتنها امنیت و انعطافپذیری بیشتری نسبت به هاست اشتراکی فراهم میکند، بلکه امکان افزایش سرعت و عملکرد سایت را نیز بهبود میبخشد. این عوامل میتوانند تجربه کاربری بهتری ایجاد کنند و در رشد و موفقیت سایت نقش مؤثری ایفا نمایند.
چرا باید وردپرس را روی سرور مجازی میزبانی کنم؟
میزبانی وردپرس بر روی سرور مجازی امنیت، سرعت، و پایداری بیشتری نسبت به هاست اشتراکی فراهم میکند و به شما امکان کنترل کامل بر منابع را میدهد.
آیا سرور مجازی برای سایتهای کوچک و تازهکار مناسب است؟
سرور مجازی معمولاً برای سایتهای پرترافیک یا کسانی که نیاز به منابع اختصاصی دارند مناسب است، اما اگر بودجه اجازه دهد، حتی سایتهای کوچک نیز میتوانند از مزایای آن بهرهمند شوند.
آیا برای میزبانی وردپرس در سرور مجازی نیاز به دانش فنی دارم؟
بله، برای مدیریت سرور مجازی و نصب وردپرس نیاز به دانش اولیهای در مورد سرورهای لینوکس و نحوه نصب و پیکربندی نرمافزارها دارید.
چگونه میتوانم عملکرد وردپرس را بر روی سرور مجازی بهینه کنم؟
برای بهینهسازی، استفاده از کشهای سرور، ابزارهای امنیتی، و بهروزرسانی منظم وردپرس و پلاگینها توصیه میشود.
آیا نصب وردپرس در سرور مجازی به تفاوت عملکردی زیادی منجر میشود؟
بله، به دلیل دسترسی به منابع اختصاصی و تنظیمات سفارشی، سایت وردپرسی شما عملکرد بهتری در سرور مجازی نسبت به هاست اشتراکی خواهد داشت.
آیا میتوانم چندین وبسایت وردپرسی را روی یک سرور مجازی میزبانی کنم؟
بله، سرور مجازی به شما اجازه میدهد چندین وبسایت را روی یک سرور میزبانی کنید، اما باید منابع کافی برای هر سایت در نظر بگیرید.
مرحله 6 این مقاله ساخت vhost پاسخ این سوال است.
آیا امکان مقیاسپذیری در سرور مجازی وجود دارد؟
بله، با استفاده از سرور مجازی میتوانید منابع را با توجه به نیاز خود افزایش یا کاهش دهید و بهراحتی سایت خود را مقیاسپذیر کنید.
فاماسرور
ممنون از مقاله خوبتون
من یک سایت دارم که اتصالات زیادی داره و هر بازدید از صفحه اول برای فراخوان از پایگاه داده ریکوست های زیادی میزنه به دیتابیس و رو هر هاستی هم میبرمش بعد از 1 هفته هزینه های زیادی رو تقاضا میکنند.
الان به ناچار روی یک سرور اختصاصی دایرکت ادمین نصب کردم و میزبانی میکنم ولی باز هم پردازشم رو 90 درصد هست.
آیا من میتونم سایتم رو منتقل کنم رو یه سرور مجازی با این آموزش و توابع سواپ و iconv و ioncube و sorsgardian را نصب کنم؟
سلام. بله میتونید .
در سرور مجازی میتونید هر وبسرور و هر افزونه ای که نیاز دارید رو نصب کنید.
دقیقا مثل همین آموزش اگر پیش برید مشکلتون حل میشه فقط باید ioncube و sourcegardian رو نصب کنید.
دقت داشته باشید که اگر از وردپرس استفاده میکنید حتما افزونه query monitor رو نصب کنید تا شاید مشکل درگیر شدن پایگاه داده شما حل بشه.