ابتدا باید سیستم عامل خود را بهروز کنید و بستههای مورد نیاز را نصب نمایید. ترمینال را باز کرده و دستورات زیر را با دسترسی کاربر 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 یک فریمورک سبک برای توسعه برنامههای وب با پایتون است. برای نصب آن از دستور زیر استفاده کنید:
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 را به نام 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)
این برنامه چهار مسیر اصلی دارد:
فایل قالب اصلی را در دایرکتوری templates
ایجاد کنید:
cat <<'EOF'> templates/index.html
مدیریت VPS
مدیریت سرورهای VPS
ایجاد VPS جدید
نصب cPanel
نصب DirectAdmin
EOF
این صفحه شامل سه فرم مستقل است که به ترتیب برای ایجاد VPS جدید، نصب cPanel و نصب DirectAdmin استفاده میشوند. همچنین، فیلدهای لازم برای وارد کردن اطلاعات مورد نیاز نیز در هر فرم فراهم شده است.
فایل استایل برای ظاهر بهتر وبسایت را در دایرکتوری 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، تجربه کاربری بهتری را فراهم میکنند.
در دایرکتوری scripts
اسکریپتهای Bash مورد نیاز را ایجاد میکنیم.
این اسکریپت از 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 جایگزین کنید.
این اسکریپت با استفاده از 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 را با وارد کردن 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 ایجاد میکنیم:
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 را برای هدایت ترافیک به برنامه 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 را برای شرکت OrderHost.net راهاندازی کردهاید. این سیستم به شما امکان مدیریت سرورهای VPS، نصب نرمافزارهای مدیریتی و انجام کارهای مربوط به لایسنسها را به صورت خودکار و آسان فراهم میکند.
در صورت بروز هرگونه مشکل، حتماً لاگهای سیستم و برنامه Flask را بررسی کنید و از منابع معتبر برای رفع اشکال استفاده نمایید. همچنین، توصیه میشود که این سیستم را ابتدا در محیطهای تستی امتحان کنید تا از عملکرد صحیح آن اطمینان حاصل شود.
موفق باشید!
— تیم آموزشدهنده قم سرور
YOUR_DIGITALOCEAN_API_TOKEN
، LICENSE_KEY
و HOST_NAME
) مقداردهی صحیح داشته باشند تا اسکریپتها به درستی اجرا شوند.