راهنمای جامع نصب و پیکربندی سیستم مدیریت VPS برای OrderHost.net

مرحله ۱: به‌روزرسانی سیستم و نصب پیش‌نیازها

ابتدا باید سیستم عامل خود را به‌روز کنید و بسته‌های مورد نیاز را نصب نمایید. ترمینال را باز کرده و دستورات زیر را با دسترسی کاربر root یا با استفاده از sudo اجرا کنید:

#!/bin/bash
sudo apt update && sudo apt upgrade -y
sudo apt install -y python3 python3-pip git nginx curl

در اینجا، python3 و pip3 برای اجرای برنامه Flask مورد نیاز هستند. همچنین git برای مدیریت نسخه کدها و nginx به عنوان یک وب سرور استفاده خواهد شد.

مرحله ۲: نصب فریم‌ورک Flask

Flask یک فریم‌ورک سبک برای توسعه برنامه‌های وب با پایتون است. برای نصب آن از دستور زیر استفاده کنید:

pip3 install Flask

همچنین توصیه می‌کنیم که یک محیط مجازی (Virtual Environment) برای پروژه خود ایجاد کنید:

sudo apt install -y python3-venv
python3 -m venv venv
source venv/bin/activate
pip install Flask

مرحله ۳: ایجاد ساختار پروژه

حالا دایرکتوری مورد نیاز برای پروژه خود را ایجاد می‌کنیم:

sudo mkdir -p /var/www/orderhost
sudo chown $USER:$USER /var/www/orderhost
cd /var/www/orderhost
mkdir templates static scripts

در اینجا، templates برای فایل‌های HTML، static برای فایل‌های استاتیک مانند CSS و JavaScript، و scripts برای اسکریپت‌های Bash مربوط به مدیریت VPS قرار داده شده‌اند.

مرحله ۴: ایجاد برنامه Flask

فایل اصلی برنامه Flask را به نام app.py ایجاد کنید:

cat <<'EOF'> app.py
from flask import Flask, render_template, redirect, url_for, request
import subprocess
import os

app = Flask(__name__)

@app.route('/')
def index():
    return render_template('index.html')

@app.route('/create_vps', methods=['POST'])
def create_vps():
    server_name = request.form.get('server_name', 'new_vps')
    try:
        subprocess.check_output(['bash', 'scripts/create_vps.sh', server_name])
        return redirect(url_for('index'))
    except subprocess.CalledProcessError as e:
        return f"Error: {e.output.decode('utf-8')}"

@app.route('/install_cpanel', methods=['POST'])
def install_cpanel():
    server_ip = request.form.get('server_ip')
    if not server_ip:
        return "IP سرور ضروری است."
    try:
        subprocess.check_output(['bash', 'scripts/install_cpanel.sh', server_ip])
        return redirect(url_for('index'))
    except subprocess.CalledProcessError as e:
        return f"Error: {e.output.decode('utf-8')}"

@app.route('/install_directadmin', methods=['POST'])
def install_directadmin():
    server_ip = request.form.get('server_ip')
    license_key = request.form.get('license_key')
    host_name = request.form.get('host_name')
    if not all([server_ip, license_key, host_name]):
        return "تمامی فیلدها ضروری هستند."
    try:
        subprocess.check_output(['bash', 'scripts/install_directadmin.sh', server_ip, license_key, host_name])
        return redirect(url_for('index'))
    except subprocess.CalledProcessError as e:
        return f"Error: {e.output.decode('utf-8')}"

if __name__ == '__main__':
    # تولید فایل ضبط دسترسی‌ها برای امنیت بیشتر
    app.run(host='0.0.0.0', port=5000)

این برنامه چهار مسیر اصلی دارد:

مرحله ۵: ایجاد قالب HTML

فایل قالب اصلی را در دایرکتوری templates ایجاد کنید:

cat <<'EOF'> templates/index.html



    
    مدیریت VPS
    


    

مدیریت سرورهای VPS

ایجاد VPS جدید

نصب cPanel

نصب DirectAdmin

EOF

این صفحه شامل سه فرم مستقل است که به ترتیب برای ایجاد VPS جدید، نصب cPanel و نصب DirectAdmin استفاده می‌شوند. همچنین، فیلدهای لازم برای وارد کردن اطلاعات مورد نیاز نیز در هر فرم فراهم شده است.

مرحله ۶: ایجاد فایل CSS

فایل استایل برای ظاهر بهتر وب‌سایت را در دایرکتوری static ایجاد کنید:

cat <<'EOF'> static/style.css
/* 1. استفاده از CSS Variables برای مدیریت تم */
:root {
    --primary-color: #3498db;
    --secondary-color: #2c3e50;
    --accent-color: #e74c3c;
    --background-color: #f0f2f5;
    --text-color: #333333;
    --light-gray: #ecf0f1;
    --dark-gray: #95a5a6;
}

/* 2. طراحی واکنش‌گرا با Flexbox */
body {
    font-family: 'Roboto', sans-serif;
    direction: rtl;
    background-color: var(--background-color);
    margin: 0;
    padding: 0;
    color: var(--text-color);
}

header {
    background-color: var(--primary-color);
    padding: 20px;
    text-align: center;
    color: white;
    box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
}

header h1 {
    margin: 0;
    font-size: 2em;
}

.container {
    display: flex;
    flex-direction: column;
    align-items: center;
    padding: 40px 20px;
    max-width: 1200px;
    margin: auto;
}

.section {
    background-color: white;
    border-radius: 8px;
    box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
    padding: 30px;
    margin-bottom: 30px;
    width: 100%;
    max-width: 800px;
    transition: transform 0.3s ease, box-shadow 0.3s ease;
}

.section:hover {
    transform: translateY(-5px);
    box-shadow: 0 10px 15px rgba(0, 0, 0, 0.2);
}

.section h2 {
    color: var(--secondary-color);
    margin-bottom: 15px;
    position: relative;
}

.section h2::after {
    content: '';
    width: 50px;
    height: 3px;
    background-color: var(--primary-color);
    position: absolute;
    bottom: -10px;
    left: 0;
    border-radius: 2px;
}

form {
    display: flex;
    flex-direction: column;
}

form label {
    margin-bottom: 5px;
    font-weight: 700;
    color: var(--secondary-color);
}

form input[type="text"],
form input[type="password"],
form input[type="email"] {
    padding: 10px;
    margin-bottom: 15px;
    border: 1px solid var(--dark-gray);
    border-radius: 4px;
    transition: border-color 0.3s ease;
}

form input[type="text"]:focus,
form input[type="password"]:focus,
form input[type="email"]:focus {
    border-color: var(--primary-color);
    outline: none;
}

button {
    padding: 12px 20px;
    background-color: var(--primary-color);
    color: white;
    border: none;
    border-radius: 4px;
    font-size: 1em;
    cursor: pointer;
    transition: background-color 0.3s ease, transform 0.2s ease;
}

button:hover {
    background-color: var(--secondary-color);
    transform: scale(1.05);
}

/* 3. استفاده از انیمیشن‌ها */
.note, .warning, .success {
    padding: 15px;
    border-left: 5px solid;
    margin-bottom: 20px;
    border-radius: 4px;
    animation: fadeIn 1s ease-in-out;
}

.note {
    background-color: #fff3cd;
    border-color: #ffeeba;
    color: #856404;
}

.warning {
    background-color: #f8d7da;
    border-color: #f5c6cb;
    color: #721c24;
}

.success {
    background-color: #d4edda;
    border-color: #c3e6cb;
    color: #155724;
}

@keyframes fadeIn {
    from { opacity: 0; }
    to { opacity: 1; }
}

/* 4. استفاده از آیکون‌ها */
.icon {
    margin-left: 10px;
    color: var(--accent-color);
    font-size: 1.2em;
}

/* 5. طراحی واکنش‌گرا برای دستگاه‌های مختلف */
@media (max-width: 768px) {
    .container {
        padding: 20px 10px;
    }

    .section {
        padding: 20px;
    }

    header h1 {
        font-size: 1.5em;
    }
}

این استایل‌ها به صفحه شما ظاهر حرفه‌ای و جذابی می‌دهند و با استفاده از ویژگی‌های پیشرفته CSS، تجربه کاربری بهتری را فراهم می‌کنند.

مرحله ۷: ایجاد اسکریپت‌های مدیریت VPS

در دایرکتوری scripts اسکریپت‌های Bash مورد نیاز را ایجاد می‌کنیم.

۱. ایجاد VPS جدید:

این اسکریپت از API سرویس‌دهنده VPS (مثل DigitalOcean) برای ایجاد یک Droplet جدید استفاده می‌کند.

cat <<'EOF'> scripts/create_vps.sh
#!/bin/bash

API_TOKEN="YOUR_DIGITALOCEAN_API_TOKEN"  # توکن API خود را اینجا وارد کنید
SERVER_NAME="$1"
REGION="nyc3"  # منطقه مورد نظر، می‌توانید آن را تغییر دهید
SIZE="s-1vcpu-1gb"  # اندازه سرور
IMAGE="ubuntu-20-04-x64"  # ایمیج سیستم عامل

if [ -z "$SERVER_NAME" ]; then
    echo "نام سرور را وارد کنید."
    exit 1
fi

response=$(curl -s -X POST "https://api.digitalocean.com/v2/droplets" \
    -H "Authorization: Bearer $API_TOKEN" \
    -H "Content-Type: application/json" \
    -d '{
        "name":"'${SERVER_NAME}'",
        "region":"'${REGION}'",
        "size":"'${SIZE}'",
        "image":"'${IMAGE}'",
        "ssh_keys": [],
        "backups": false,
        "ipv6": true,
        "user_data": null,
        "private_networking": null,
        "tags": ["web"]
    }')

echo "$response"
EOF

توضیح: حتماً مقدار YOUR_DIGITALOCEAN_API_TOKEN را با توکن API معتبر از سرویس‌دهنده VPS جایگزین کنید.

۲. نصب cPanel:

این اسکریپت با استفاده از wget آخرین نسخه نصب cPanel را دانلود و اجرا می‌کند.

cat <<'EOF'> scripts/install_cpanel.sh
#!/bin/bash

SERVER_IP="$1"

if [ -z "$SERVER_IP" ]; then
    echo "IP سرور را وارد کنید."
    exit 1
fi

echo "به‌روزرسانی سیستم..."
yum update -y

echo "نصب wget..."
yum install -y wget

echo "دانلود اسکریپت نصب cPanel..."
cd /home && wget -N https://securedownloads.cpanel.net/latest

echo "اجرای اسکریپت نصب cPanel..."
sh latest

echo "نصب cPanel به پایان رسید."
EOF

توجه: نصب cPanel روی سیستم‌های مبتنی بر Debian/Ubuntu توصیه نمی‌شود. این اسکریپت برای سیستم‌های مبتنی بر RHEL (مثل CentOS) طراحی شده است.

۳. نصب DirectAdmin:

این اسکریپت DirectAdmin را با وارد کردن IP، کلید لایسنس و نام میزبان نصب می‌کند.

cat <<'EOF'> scripts/install_directadmin.sh
#!/bin/bash

SERVER_IP="$1"
LICENSE_KEY="$2"
HOST_NAME="$3"

if [ -z "$SERVER_IP" ] || [ -z "$LICENSE_KEY" ] || [ -z "$HOST_NAME" ]; then
    echo "تمامی پارامترها ضروری هستند: IP، کلید لایسنس، نام میزبان."
    exit 1
fi

echo "به‌روزرسانی سیستم..."
apt-get update -y && apt-get upgrade -y

echo "نصب wget..."
apt-get install -y wget

echo "دانلود اسکریپت نصب DirectAdmin..."
wget -O setup.sh https://www.directadmin.com/setup.sh

echo "اجرا کردن اسکریپت نصب DirectAdmin..."
bash setup.sh auto $LICENSE_KEY $HOST_NAME

echo "نصب DirectAdmin به پایان رسید."
EOF

توجه: باید مقادیر LICENSE_KEY و HOST_NAME را مطابق با لایسنس و تنظیمات خود وارد کنید.

مرحله ۸: اعطای مجوز اجرایی به اسکریپت‌ها

برای اجرای اسکریپت‌ها باید مجوز اجرایی به آن‌ها بدهید:

chmod +x scripts/*.sh

همچنین مطمئن شوید که مالکیت فایل‌ها صحیح تنظیم شده باشد:

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

مرحله ۹: پیکربندی سرویس Systemd برای برنامه Flask

یک سرویس Systemd برای مدیریت برنامه Flask ایجاد می‌کنیم:

sudo bash -c 'cat <<EOF > /etc/systemd/system/orderhost.service
[Unit]
Description=OrderHost Flask App
After=network.target

[Service]
User=www-data
Group=www-data
WorkingDirectory=/var/www/orderhost
Environment="PATH=/var/www/orderhost/venv/bin"
ExecStart=/var/www/orderhost/venv/bin/python3 app.py
Restart=always
RestartSec=3

[Install]
WantedBy=multi-user.target
EOF'

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

sudo systemctl daemon-reload
sudo systemctl start orderhost
sudo systemctl enable orderhost

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

مرحله ۱۰: پیکربندی Nginx به عنوان پروکسی معکوس

فایل پیکربندی Nginx را برای هدایت ترافیک به برنامه Flask ایجاد کنید:

sudo bash -c 'cat <<EOF > /etc/nginx/sites-available/orderhost
server {
    listen 80;
    server_name your_domain.com;  # دامنه خود را اینجا وارد کنید

    location / {
        proxy_pass http://127.0.0.1:5000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}
EOF'

اطمینان حاصل کنید که your_domain.com را با دامنه خود جایگزین کنید. سپس لینک سمبولیک ایجاد کرده و تنظیمات پیش‌فرض را حذف نمایید:

sudo ln -s /etc/nginx/sites-available/orderhost /etc/nginx/sites-enabled/
sudo rm /etc/nginx/sites-enabled/default
sudo nginx -t  # برای بررسی صحت تنظیمات
sudo systemctl restart nginx

این دستورات تنظیمات جدید Nginx را فعال و سرویس Nginx را مجدداً راه‌اندازی می‌کنند.

مرحله ۱۱: اطمینان از نصب درست سیستم

پس از انجام تمامی مراحل، مرورگر خود را باز کرده و به آدرس سرور خود (مثلاً http://your_domain.com) بروید. باید صفحه مدیریت VPS با سه فرم برای ایجاد VPS، نصب cPanel و نصب DirectAdmin را مشاهده کنید.

فرم‌های موجود به شما امکان وارد کردن اطلاعات موردنیاز مانند نام سرور جدید، IP سرور برای نصب cPanel و DirectAdmin، کلید لایسنس و نام میزبان را می‌دهند.

نکات همراه

نتیجه‌گیری

با انجام مراحل فوق، شما یک سیستم مدیریت VPS کامل با امکانات نصب خودکار cPanel و DirectAdmin را برای شرکت OrderHost.net راه‌اندازی کرده‌اید. این سیستم به شما امکان مدیریت سرورهای VPS، نصب نرم‌افزارهای مدیریتی و انجام کارهای مربوط به لایسنس‌ها را به صورت خودکار و آسان فراهم می‌کند.

در صورت بروز هرگونه مشکل، حتماً لاگ‌های سیستم و برنامه Flask را بررسی کنید و از منابع معتبر برای رفع اشکال استفاده نمایید. همچنین، توصیه می‌شود که این سیستم را ابتدا در محیط‌های تستی امتحان کنید تا از عملکرد صحیح آن اطمینان حاصل شود.

موفق باشید!

— تیم آموزش‌دهنده قم سرور

موفقیت! سیستم مدیریت VPS شما با موفقیت نصب و پیکربندی شده است.
هشدار: نصب cPanel و DirectAdmin نیاز به منابع سرور کافی و مجوزهای معتبر دارد. مطمئن شوید که این موارد را قبل از اجرای اسکریپت‌ها بررسی کرده‌اید. همچنین، اجرای اسکریپت‌ها با دسترسی root می‌تواند خطرات امنیتی به همراه داشته باشد، پس از امنیت سرور خود اطمینان حاصل کنید.

نکات همراه

نتیجه‌گیری

با انجام مراحل فوق، شما یک سیستم مدیریت VPS کامل با امکانات نصب خودکار cPanel و DirectAdmin را برای شرکت OrderHost.net راه‌اندازی کرده‌اید. این سیستم به شما امکان مدیریت سرورهای VPS، نصب نرم‌افزارهای مدیریتی و انجام کارهای مربوط به لایسنس‌ها را به صورت خودکار و آسان فراهم می‌کند.

در صورت بروز هرگونه مشکل، حتماً لاگ‌های سیستم و برنامه Flask را بررسی کنید و از منابع معتبر برای رفع اشکال استفاده نمایید. همچنین، توصیه می‌شود که این سیستم را ابتدا در محیط‌های تستی امتحان کنید تا از عملکرد صحیح آن اطمینان حاصل شود.

موفق باشید!

— تیم آموزش‌دهنده قم سرور

توجه: اطمینان حاصل کنید که تمامی متغیرهای جایگزین شده (مثل YOUR_DIGITALOCEAN_API_TOKEN، LICENSE_KEY و HOST_NAME) مقداردهی صحیح داشته باشند تا اسکریپت‌ها به درستی اجرا شوند.
هشدار: نصب cPanel و DirectAdmin نیاز به منابع سرور کافی و مجوزهای معتبر دارد. مطمئن شوید که این موارد را قبل از اجرای اسکریپت‌ها بررسی کرده‌اید. همچنین، اجرای اسکریپت‌ها با دسترسی root می‌تواند خطرات امنیتی به همراه داشته باشد، پس از امنیت سرور خود اطمینان حاصل کنید.
موفقیت! سیستم مدیریت VPS شما با موفقیت نصب و پیکربندی شده است. اکنون می‌توانید از امکانات آن برای مدیریت سرورهای خود استفاده کنید.