فصل دوم: آمادهسازی میدان نبرد: راهاندازی محیط توسعه Nextcloud¶
هدف فصل: شروع یک ماجراجویی برنامهنویسی¶
تصور کنید که میخواهید یک فضای ابری قدرتمند و سفارشی بسازید که قلب پروژه شما خواهد بود! در این فصل، شما را با راهاندازی محیط توسعه برای Nextcloud ۳۲.۰.۰ (آخرین نسخه پایدار تا اکتبر ۲۰۲۵) همراهی میکنیم. از کلون کردن ریپازیتوریهای کلیدی تا تنظیم سرور محلی و آمادهسازی ابزارها، این بخش شما را برای سفری هیجانانگیز در دنیای توسعه Nextcloud آماده میکند. هدف؟ یک محیط توسعه سریع، پایدار و آماده برای فارسیسازی و جلالیسازی پروژه!
۲.۱ کلون کردن پروژهها: جمعآوری ابزارهای اصلی¶
اولین قدم در ساخت فضای ابری سفارشی، جمعآوری کدهای منبع است. ما هسته Nextcloud، اپلیکیشنهای Calendar و Talk (که با نام Spreed شناخته میشود)، و کلاینت دسکتاپ را کلون میکنیم. با این کار، تمام قطعات پازل پروژه در دسترس شما قرار میگیرد.
۲.۱.۱ سرور و اپلیکیشنها: قلب پروژه¶
بیایید ریپازیتوریهای اصلی را با سرعت و دقت کلون کنیم. از گزینه --depth 1 استفاده میکنیم تا فقط آخرین نسخهها را بکشیم و فضای دیسک را بهینه کنیم.
# هسته Nextcloud: مغز متفکر پروژه
git clone --depth 1 -b v32.0.0 https://github.com/nextcloud/server.git
cd server
make composer-install # نصب وابستگیهای PHP با Composer
cd ..
# اپلیکیشن Calendar: تقویم هوشمند پروژه
git clone --depth 1 https://github.com/nextcloud/calendar.git
cd calendar
git checkout stable-4.8 # نسخه سازگار با سرور ۳۲.۰.۰
cd ..
# اپلیکیشن Talk (Spreed): پیامرسان ابری
git clone --depth 1 https://github.com/nextcloud/spreed.git
cd spreed
git checkout stable-19.0 # نسخه پایدار برای ارتباط بیدرنگ
cd ..
# کلاینت دسکتاپ: پل ارتباطی با کاربران
git clone --depth 1 -b v3.17.3 https://github.com/nextcloud/desktop.git
نکته حرفهای: اگر با خطای "Repository not found" مواجه شدید، مطمئن شوید که URL درست است (مثلاً spreed به جای talk). برای دسترسی امنتر، از SSH یا Personal Access Token استفاده کنید.
۲.۱.۲ انتقال اپلیکیشنها: مرتبسازی قطعات پازل¶
اپلیکیشنها باید در پوشه apps/ سرور قرار گیرند تا Nextcloud آنها را شناسایی کند:
mv calendar server/apps/
mv spreed server/apps/
چک سریع: مطمئن شوید پوشههای calendar و spreed حالا در server/apps/ هستند:
ls server/apps/
# خروجی: calendar spreed
۲.۲ راهاندازی محیط محلی: روشن کردن موتور پروژه¶
حالا که کدهای منبع را داریم، وقت آن است که سرور را راهاندازی کنیم. دو مسیر پیش رو داریم: Docker برای سرعت و سادگی، یا نصب دستی برای کنترل کامل. هر دو روش را با جزئیات توضیح میدهیم.
۲.۲.۱ استفاده از Docker: سریع و بدون دردسر¶
Docker مانند یک جعبه جادویی است که همه چیز را آماده میکند. با یک فایل تنظیمات ساده، سرور و دیتابیس شما در چند دقیقه آماده است.
- فایل
docker-compose.ymlرا در ریشه پروژه بسازید:
version: '3'
services:
app:
image: nextcloud:32
ports:
- "8080:80" # دسترسی از localhost:8080
volumes:
- ./server:/var/www/html # اتصال کدهای محلی
environment:
- MYSQL_HOST=db
- MYSQL_DATABASE=nextcloud
- MYSQL_USER=nextcloud
- MYSQL_PASSWORD=secret
depends_on:
- db
db:
image: mariadb:latest
environment:
- MYSQL_ROOT_PASSWORD=secret
- MYSQL_DATABASE=nextcloud
- MYSQL_USER=nextcloud
- MYSQL_PASSWORD=secret
volumes:
- db_data:/var/lib/mysql
volumes:
db_data:
- اجرا کنید:
docker-compose up -d
- نصب اولیه Nextcloud:
- به
http://localhost:8080بروید. - با نام کاربری
adminو رمزadmin123لاگین کنید. - تنظیمات اولیه را کامل کنید (دیتابیس، کاربر ادمین).
چرا Docker؟ سریع، قابلتکرار، و بدون نیاز به نصب دستی وابستگیها. فقط کافی است Docker و Docker Compose روی سیستم داشته باشید.
۲.۲.۲ نصب دستی: کنترل کامل در دستان شما¶
اگر عاشق کنترل دقیق هستید، نصب دستی به شما اجازه میدهد هر جزء را شخصیسازی کنید.
- نصب وابستگیها (برای اوبونتو/دبیان):
sudo apt update
sudo apt install -y php8.2 php8.2-mysql php8.2-gd php8.2-curl php8.2-mbstring \
php8.2-xml php8.2-zip php8.2-intl nodejs npm mariadb-server redis-server
- تنظیم MariaDB:
mysql -u root -p
CREATE DATABASE nextcloud CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
GRANT ALL ON nextcloud.* TO 'nextcloud'@'localhost' IDENTIFIED BY 'secret';
EXIT;
- نصب Nextcloud:
cd server
php occ maintenance:install --database mysql --database-name nextcloud \
--database-user nextcloud --database-pass secret \
--admin-user admin --admin-pass admin123
- فعالسازی حالت دیباگ:
فایل
config/config.phpرا ویرایش کنید:
<?php
$CONFIG = [
'debug' => true,
'loglevel' => 0, // لاگهای کامل
'log_type' => 'file',
'logfile' => 'nextcloud.log',
'trusted_domains' => ['localhost'],
'memcache.local' => '\OC\Memcache\Redis',
'redis' => [
'host' => 'localhost',
'port' => 6379,
],
];
- اجرای سرور تست:
php -S localhost:8080
۲.۲.۳ نصب وابستگیهای توسعه¶
برای توسعه، به ابزارهای JavaScript و PHP نیاز داریم:
cd server
npm install # نصب پکیجهای Node.js (مثل Webpack)
make npm-install # نصب ابزارهای توسعه
composer install # نصب وابستگیهای PHP
چک کنید: فایل package.json و composer.json را بررسی کنید:
npm list
composer show
۲.۳ فورک و استراتژی برنچ: مدیریت کد مثل یک حرفهای¶
برای سفارشیسازی پروژه، باید کد را تحت کنترل خودمان بیاوریم و یک استراتژی ورژنکنترل تمیز داشته باشیم.
- فورک ریپازیتوریها:
- به GitHub بروید و ریپازیتوریهای
server,calendar,spreed, وdesktopرا فورک کنید. - یا با GitHub CLI:
gh repo fork nextcloud/server --clone=false
gh repo fork nextcloud/calendar --clone=false
gh repo fork nextcloud/spreed --clone=false
gh repo fork nextcloud/desktop --clone=false
- ایجاد برنچ توسعه:
cd server
git checkout -b feature/persian-jalali
cd ../calendar
git checkout -b feature/persian-jalali
cd ../spreed
git checkout -b feature/persian-jalali
cd ../desktop
git checkout -b feature/persian-jalali
- تنظیم CI با GitHub Actions:
فایل:
.github/workflows/ci.yml(درserver):
name: Continuous Integration
on:
push:
branches: [feature/persian-jalali]
pull_request:
branches: [main]
jobs:
php-lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Setup PHP
uses: shivammathur/setup-php@v2
with:
php-version: '8.2'
- run: composer install
- run: make php-lint
js-build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Setup Node.js
uses: actions/setup-node@v3
with:
node-version: '20'
- run: npm install
- run: make npm-build
۲.۴ تست محیط: لحظه حقیقت!¶
حالا وقت آن است که مطمئن شویم همه چیز درست کار میکند.
- بررسی اپلیکیشنهای فعال:
cd server
php occ app:list
خروجی باید شامل calendar, spreed, و اپهای پیشفرض باشد.
- تست سرور:
curl http://localhost:8080
- باید صفحه لاگین Nextcloud را ببینید.
-
در مرورگر به
http://localhost:8080بروید و لاگین کنید. -
چک لاگها:
cat nextcloud.log
نکته حرفهای: از ngrok برای تست خارجی استفاده کنید:
ngrok http 8080
نکات حرفهای برای موفقیت¶
- ذخیرهسازی امن: فایل
config.phpرا به.gitignoreاضافه کنید. - بکآپ: از دیتابیس بکآپ بگیرید:
mysqldump -u nextcloud -p nextcloud > backup.sql
- مانیتورینگ: با
htopیاdocker statsمنابع را بررسی کنید.