جدول محتوایی

تبدیل لینوکس به هاست وردپرسی

تبدیل لینوکس به هاست وردپرسی فرآیندی قدرتمند و انعطاف‌پذیر است که به شما امکان می‌دهد یک سرور لینوکسی خام را به بستری حرفه‌ای برای میزبانی وب‌سایت‌های وردپرسی تبدیل کنید. این راهنما به‌صورت گام‌به‌گام مراحل تبدیل یک سرور لینوکسی به یک هاست وردپرسی بهینه‌شده را شرح می‌دهد. فرض می‌کنیم شما فقط به سرور لینوکسی با دسترسی SSH و یک سیستم‌عامل مانند Ubuntu 20.04 دسترسی دارید. با دنبال کردن این مراحل، می‌توانید سروری امن، سریع و آماده برای میزبانی سایت‌های وردپرسی و افزونه‌هایی مانند ووکامرس ایجاد کنید.

1 – آماده‌سازی اولیه سرور لینوکسی

اتصال به سرور via SSH :

از ابزارهایی مانند PuTTY (ویندوز) یا ترمینال (لینوکس/مک) استفاده کنید :

ssh root@your_server_ip

رمز عبور root را وارد کنید.

به‌روزرسانی سیستم :

برای Ubuntu :

apt update && apt upgrade -y

برای CentOS :

yum update -y

نصب ابزارهای پایه :

برای Ubuntu :

apt install -y vim nano wget curl unzip git

برای CentOS :

yum install -y vim nano wget curl unzip git

تنظیم فایروال :

برای Ubuntu (UFW) :

ufw allow 22
ufw allow 80
ufw allow 443
ufw enable

برای CentOS (Firewalld) :

firewall-cmd --permanent --add-service=ssh
firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-service=https
firewall-cmd --reload

2 – نصب و پیکربندی وب‌سرور (Apache یا Nginx)

نصب Apache :

برای Ubuntu :

apt install -y apache2
systemctl enable apache2
systemctl start apache2

برای CentOS :

yum install -y httpd
systemctl enable httpd
systemctl start httpd

نصب Nginx (جایگزین Apache، اختیاری):

برای Ubuntu :

apt install -y nginx
systemctl enable nginx
systemctl start nginx

برای CentOS :

yum install -y nginx
systemctl enable nginx
systemctl start nginx

پیکربندی وب‌سرور:

برای Apache، فایل تنظیمات دامنه را ایجاد کنید :

nano /etc/apache2/sites-available/yourdomain.com.conf

محتوای زیر را اضافه کنید :

<VirtualHost *:80>
    ServerName yourdomain.com
    ServerAlias www.yourdomain.com
    DocumentRoot /var/www/yourdomain.com/public_html
    <Directory /var/www/yourdomain.com/public_html>
        AllowOverride All
        Require all granted
    </Directory>
    ErrorLog /var/log/apache2/yourdomain.com-error.log
    CustomLog /var/log/apache2/yourdomain.com-access.log combined
</VirtualHost>

فعال‌سازی سایت و ماژول‌های موردنیاز :

a2ensite yourdomain.com
a2enmod rewrite
systemctl restart apache2

برای Nginx:

nano /etc/nginx/sites-available/yourdomain.com

محتوای زیر را اضافه کنید :

server {
    listen 80;
    server_name yourdomain.com www.yourdomain.com;
    root /var/www/yourdomain.com/public_html;
    index index.php index.html;
    location / {
        try_files $uri $uri/ /index.php?$args;
    }
    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php8.1-fpm.sock;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
}

فعال‌سازی و راه‌اندازی مجدد :

ln -s /etc/nginx/sites-available/yourdomain.com /etc/nginx/sites-enabled/
nginx -t
systemctl restart nginx

3 – نصب PHP و وابستگی‌ها

نصب PHP :

برای Ubuntu :

apt install -y php8.1 php8.1-fpm php8.1-mysql php8.1-curl php8.1-gd php8.1-mbstring php8.1-xml php8.1-zip php8.1-imagick

برای CentOS :

yum install -y epel-release
yum install -y php php-fpm php-mysqlnd php-curl php-gd php-mbstring php-xml php-zip php-imagick

پیکربندی PHP :

فایل php.ini را ویرایش کنید :

nano /etc/php/8.1/fpm/php.ini  # Ubuntu
nano /etc/php.ini              # CentOS

تنظیمات زیر را اعمال کنید :

memory_limit = 256M
max_execution_time = 300
upload_max_filesize = 64M
post_max_size = 64M
max_input_vars = 3000

راه‌اندازی مجدد PHP-FPM :

systemctl restart php8.1-fpm  # Ubuntu
systemctl restart php-fpm     # CentOS

4 – نصب و پیکربندی پایگاه داده (MySQL/MariaDB)

نصب MariaDB :

برای Ubuntu :

apt install -y mariadb-server
systemctl enable mariadb
systemctl start mariadb

برای CentOS :

yum install -y mariadb-server
systemctl enable mariadb
systemctl start mariadb

امن‌سازی MariaDB :

mysql_secure_installation

رمز root را تنظیم کنید.

گزینه‌های پیشنهادی (حذف کاربران ناشناس، غیرفعال کردن ورود root از راه دور، حذف دیتابیس تست) را تأیید کنید.

ایجاد پایگاه داده و کاربر :

وارد MySQL شوید:

mysql -u root -p

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

CREATE DATABASE wp_store;
CREATE USER 'wp_user'@'localhost' IDENTIFIED BY 'your_secure_password';
GRANT ALL PRIVILEGES ON wp_store.* TO 'wp_user'@'localhost';
FLUSH PRIVILEGES;
EXIT;

5 – نصب گواهینامه SSL (Let’s Encrypt)

نصب Certbot :

برای Ubuntu :

apt install -y certbot python3-certbot-apache  # یا python3-certbot-nginx

برای CentOS :

yum install -y certbot python3-certbot-apache  # یا python3-certbot-nginx

دریافت گواهینامه SSL :

برای Apache :

certbot --apache -d yourdomain.com -d www.yourdomain.com

برای Nginx :

certbot --nginx -d yourdomain.com -d www.yourdomain.com

گزینه هدایت خودکار HTTP به HTTPS را انتخاب کنید.

تمدید خودکار SSL:

یک cron job تنظیم کنید :

crontab -e

اضافه کنید:

0 0 * * * /usr/bin/certbot renew --quiet

6 – نصب وردپرس

دانلود وردپرس:

cd /var/www/yourdomain.com
mkdir public_html
cd public_html
wget https://wordpress.org/latest.tar.gz
tar -xvzf latest.tar.gz
mv wordpress/* .
rm -rf wordpress latest.tar.gz

تنظیم مجوزها:

chown -R www-data:www-data /var/www/yourdomain.com/public_html
chmod -R 755 /var/www/yourdomain.com/public_html

برای CentOS، از apache:apache به‌جای www-data:www-data استفاده کنید.

پیکربندی wp-config.php:

cp wp-config-sample.php wp-config.php
nano wp-config.php

اطلاعات پایگاه داده را وارد کنید:

define('DB_NAME', 'wp_store');
define('DB_USER', 'wp_user');
define('DB_PASSWORD', 'your_secure_password');
define('DB_HOST', 'localhost');

کلیدهای امنیتی را از https://api.wordpress.org/secret-key/1.1/salt/ کپی و جایگزین کنید.

نصب وردپرس:

    • به https://iranicaserver.com بروید.

    • فرم نصب را پر کنید (نام سایت، نام کاربری، رمز، ایمیل).

    • نصب را تکمیل کنید.

7 – نصب و پیکربندی ووکامرس

نصب ووکامرس:

وارد داشبورد وردپرس شوید (https://iranicaserver.com/wp-admin).

به Plugins > Add New بروید، WooCommerce را جستجو کنید، نصب و فعال کنید.

راه‌اندازی اولیه ووکامرس:

    • wizard تنظیمات ووکامرس ظاهر می‌شود:

      • Store Details: کشور (ایران)، ارز (ریال/تومان)، نوع محصولات (فیزیکی/دیجیتال).

      • Payment Methods: درگاه‌های ایرانی (بعداً تنظیم می‌شود) یا PayPal.

      • Shipping: مناطق ارسال (مثال: ایران) و هزینه (ثابت یا رایگان).

    • تنظیمات را ذخیره کنید.

      تنظیمات پیشرفته ووکامرس:

      • به WooCommerce > Settings بروید:

        • General: ارز (IRT/IRR)، مکان‌های فروش (ایران یا جهانی).

        • Products: مدیریت موجودی را فعال کنید.

        • Shipping: مناطق (تهران، سایر شهرها)، روش‌ها (پست پیشتاز، تیپاکس).

        • Emails: ایمیل‌های تأیید سفارش را تنظیم کنید.

          نمونه کد بهینه‌سازی ووکامرس:

          • فایل wp-content/themes/your-theme/functions.php را ویرایش کنید:

            // افزایش محدودیت سبد خرید
            add_filter('woocommerce_cart_item_limit', function() {
                return 100;
            });

8 – نصب قالب و افزونه‌های ضروری

نصب قالب:

به Appearance > Themes بروید.

قالب Storefront یا Astra را نصب کنید.

نصب افزونه‌ها:

به Plugins > Add New بروید:

      • LiteSpeed Cache: برای کش (اگر سرور LiteSpeed دارید).

      • Yoast SEO: برای سئو.

      • Wordfence Security: برای امنیت.

      • UpdraftPlus: برای پشتیبان‌گیری.

      • Smush: برای فشرده‌سازی تصاویر.

        پیکربندی LiteSpeed Cache (در صورت استفاده):

        • به LiteSpeed Cache > Cache بروید:

          • Enable Cache: فعال.

          • Cache Logged-in Users: غیرفعال.

          • Purge on Update: فعال.

9 – تنظیم درگاه پرداخت

نصب افزونه درگاه ایرانی:

افزونه WooCommerce Zarinpal را از مخزن وردپرس نصب کنید.

پیکربندی درگاه:

به WooCommerce > Settings > Payments بروید.

درگاه را فعال کنید و Merchant ID را وارد کنید.

حالت Sandbox را برای تست فعال کنید.

نمونه کد درگاه زرین‌پال:

به functions.php اضافه کنید:

function custom_zarinpal_gateway_init() {
    if (!class_exists('WC_Payment_Gateway')) return;
    class WC_Gateway_Zarinpal extends WC_Payment_Gateway {
        public function __construct() {
            $this->id = 'zarinpal';
            $this->method_title = 'زرین‌پال';
            $this->init_form_fields();
            $this->init_settings();
            $this->title = $this->get_option('title');
            $this->merchant_id = $this->get_option('merchant_id');
        }
        public function init_form_fields() {
            $this->form_fields = array(
                'enabled' => array('title' => 'فعال/غیرفعال', 'type' => 'checkbox'),
                'title' => array('title' => 'عنوان', 'type' => 'text', 'default' => 'پرداخت با زرین‌پال'),
                'merchant_id' => array('title' => 'Merchant ID', 'type' => 'text')
            );
        }
    }
}
add_action('plugins_loaded', 'custom_zarinpal_gateway_init');

10 – بهینه‌سازی و امنیت

امنیت سرور:

فایل‌های حساس را محدود کنید:

nano /var/www/yourdomain.com/public_html/.htaccess

اضافه کنید:

<FilesMatch "^(wp-config\.php|php\.ini|\.htaccess)">
    Order deny,allow
    Deny from all
</FilesMatch>

نصب Fail2Ban:

apt install -y fail2ban  # Ubuntu
yum install -y fail2ban  # CentOS
systemctl enable fail2ban
systemctl start fail2ban

بهینه‌سازی عملکرد:

نصب Redis برای کش:

apt install -y redis-server
systemctl enable redis
systemctl start redis

در وردپرس، افزونه Redis Object Cache را نصب کنید.

پشتیبان‌گیری:

اسکریپت پشتیبان‌گیری:

nano /root/backup.sh

اضافه کنید:

#!/bin/bash
mysqldump -u wp_user -p'your_secure_password' wp_store > /backup/wp_store_$(date +%F).sql
tar -czf /backup/public_html_$(date +%F).tar.gz /var/www/yourdomain.com/public_html

اجرا کنید:

chmod +x /root/backup.sh
crontab -e

اضافه کنید:

0 2 * * * /root/backup.sh

11 – آزمایش و راه‌اندازی

تست:

سایت (https://iranicaserver.com) و داشبورد وردپرس را بررسی کنید.

فرآیند خرید ووکامرس را تست کنید.

سرعت را با GTmetrix بررسی کنید.

رفع اشکالات:

لاگ‌های سرور را بررسی کنید:

tail -f /var/log/apache2/error.log  # یا /var/log/nginx/error.log

دیباگ وردپرس را فعال کنید:

define('WP_DEBUG', true);
define('WP_DEBUG_LOG', true);
define('WP_DEBUG_DISPLAY', false);
4رای - امتیاز 5 ممنون از امتیازی که دادید..!