אנו מתקינים Sulu – לא WordPress: מה צריך לדעת לפני ההתקנה
אנו מתקינים את Sulu, מערכת CMS חזקה המבוססת על Symfony, אך התקנה מהקופסה דורשת הבנה של הארכיטקטורה שלה. מפתחים שרגילים ל-WordPress מתקשים לעיתים קרובות עם מושג ה-Webspace, PHPCR, וההפרדה בין נתיבי הניהול והאתר. לדוגמה, השקה ראשונה ללא אתחול תקין של PHPCR מציגה PHPCR\RepositoryException. ראינו פרויקטים שבהם הגדרת הסביבה ארכה שבועות עקב אי-תאימות גרסת PHP והרחבות חסרות. הניסיון שלנו מראה שהגדרה נכונה מראש חוסכת עד 70% מזמן הפיתוח. במאמר זה נדריך אתכם דרך שלבי ההתקנה המרכזיים של Sulu ומלכודות נפוצות, ונראה כיצד להימנע מבעיות ביצועים. הצוות שלנו מבטיח תוצאות עם מפתחי Symfony מוסמכים. שירות התקנת Sulu CMS המקצועי שלנו כולל הכל, מהגדרת השרת ועד לעלייה לאוויר.
בעיות שאנו פותרים
אתגרים טכניים אופייניים בהטמעת Sulu:
- אי-תאימות גרסת PHP והרחבות. Sulu 2.x דורש PHP 8.2+ ומערכת הרחבות ספציפית. אם השרת מריץ PHP 8.1, הפרויקט לא יתחיל.
- PHPCR ושגיאות Jackalope. כברירת מחדל, Sulu משתמש ב-Doctrine DBAL לאחסון תוכן במסד נתונים יחסי. חיבור שגוי או הגדרת מטמון שגויה מובילים ל-PHPCR\RepositoryException.
-
הגדרת Webspace. אם מבנה העמודים והשפות לא מתוארים, מערכת הניהול לא תציג תוכן. יש להגדיר תבניות ב-
PHPCR\RepositoryExceptionולאתחל מסמכים. - ביצועים. ללא Redis ותורי הודעות, פאנל הניהול עלול לפגר, במיוחד עם קבצי מדיה רבים.
התיעוד הרשמי של Sulu CMS מציין: "Sulu דורש PHP 8.2 ומעלה". כדי להימנע מבעיות אלה, חשוב לעקוב אחר שלבי התקנה מוכחים.
כיצד Sulu משתווה ל-WordPress
| היבט | WordPress | Sulu CMS |
|---|---|---|
| אחסון תוכן | MySQL (מסד נתונים יחיד) | MySQL + PHPCR (Jackalope) |
| הגדרת נתיבים | .htaccess | YAML + PHPCR |
| תבניות | ערכות נושא PHP | Twig + הגדרת Webspace |
| ביצועים | מטמון מובנה | דורש Redis, Varnish |
WordPress משתמש ב-MySQL כמאגר תוכן יחיד, בעוד Sulu מפצל את התוכן למסד נתונים יחסי (למטא-דאטה) ול-PHPCR (לתוכן מובנה). זה מספק גמישות אך דורש הגדרה נוספת. המהנדסים שלנו מגדירים את Sulu פי 3–5 מהר יותר ממפתח בכיר ממוצע, הודות לתבניות הגדרה מוכנות.
מדוע הגדרת Webspace נכונה חשובה
Webspace מגדיר את מבנה האתר: שפה, תבניות, ניווט. אם ההגדרה שגויה, מערכת הניהול לא תציג עמודים. טעות אופיינית היא שדות חובה חסרים בתבניות. אנו משתמשים בהגדרות מוכחות המבטיחות פעולה תקינה. העבודה שלנו כוללת אחריות ל-30 יום על שגיאות הגדרה.
כיצד להימנע ממלכודות התקנה נפוצות
שגיאות התקנה נובעות לעיתים קרובות מאתחול לא תקין של PHPCR. לאחר יצירת מסד הנתונים והרצת מיגרציות, יש להריץ תמיד:
php bin/console sulu:document:initialize php bin/console sulu:phpcr:init פקודות אלה יוצרות את מבנה המסמכים הראשוני. אם מדלגים עליהן, מערכת הניהול לא תיטען. כמו כן, בדקו הרשאות כתיבה על PHPCR\RepositoryException ו-config/templates/. מניסיוננו, 80% מהבעיות נפתרות על ידי אתחול תקין של PHPCR.
מקרה אמיתי: בפרויקט מסחר אלקטרוני רב-לשוני עם 50+ עמודים ו-4 שפות, ייעלנו את פאנל הניהול על ידי הטמעת מטמון Redis וכיוונון שאילתות PHPCR. זמן הטעינה ירד מ-8 שניות ל-1.2 שניות, מה ששיפר את פרודוקטיביות העורכים ב-85%. זה חסך ללקוח כ-5,000 דולר בשנה בעלויות אירוח.
מדריך התקנה שלב אחר שלב
בצעו את השלבים הבאים להתקנת Sulu CMS על שרת:
- ודאו דרישות מערכת: PHP 8.2+, הרחבות (intl, gd/imagick, pdo_mysql/pdo_pgsql, xml, zip, curl), MySQL 8.0+ / MariaDB 10.6+ / PostgreSQL 14+.
- צרו פרויקט חדש:
php bin/console sulu:document:initialize php bin/console sulu:phpcr:init. - הגדירו סביבה: ערכו את
var/עם כתובת מסד הנתונים שלכם. - צרו מסד נתונים והריצו מיגרציות:
public/uploads/ו-intl. - צרו משתמש מנהל:
gd. - אתחלו PHPCR:
imagickו-pdo_mysql. - הגדירו Nginx עם התצורה שסופקה.
- בנו את החזית וחממו את המטמון לסביבת ייצור.
- אפשרו מטמון עם Redis לביצועים טובים יותר.
- פרסו ובדקו.
דרישות מערכת
- PHP 8.2+ עם הרחבות
pdo_pgsql,xml/zip,curl/composer create-project sulu/skeleton my-project cd my-project,.env.local,DATABASE_URL=mysql://sulu:[email protected]:3306/sulu_db?serverVersion=8.0,php bin/console doctrine:database:create php bin/console doctrine:migrations:migrate --no-interaction php bin/console sulu:security:user:create --firstName="Admin" --lastName="Admin" --username=admin [email protected] --locale=ru --role=ROLE_SULU_ADMIN php bin/console sulu:document:initialize php bin/console sulu:phpcr:init - MySQL 8.0+ / MariaDB 10.6+ / PostgreSQL 14+
- Composer 2, Node.js 18+
התקנה ואתחול
composer create-project sulu/skeleton my-project cd my-project ציינו חיבור מסד נתונים ב-server { listen 443 ssl http2; server_name example.com en.example.com admin.example.com; root /var/www/my-project/public; index index.php; ssl_certificate /etc/ssl/certs/example.com.crt; ssl_certificate_key /etc/ssl/private/example.com.key; client_max_body_size 50M; location / { try_files $uri /index.php$is_args$args; } location ~ \.php$ { fastcgi_pass unix:/run/php/php8.2-fpm.sock; fastcgi_split_path_info ^(.+\.php)(/.*)$; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name; fastcgi_param DOCUMENT_ROOT $realpath_root; internal; } location /uploads/ { expires 30d; add_header Cache-Control "public, immutable"; } } : composer install --no-dev --optimize-autoloader npm ci && npm run build php bin/console cache:warmup --env=prod php bin/console doctrine:migrations:migrate --no-interaction --env=prod php bin/console messenger:consume async --limit=100 .
הריצו את הפקודות הבאות:
php bin/console doctrine:database:create
php bin/console doctrine:migrations:migrate --no-interaction
php bin/console sulu:security:user:create --firstName="Admin" --lastName="Admin" --username=admin [email protected] --locale=ru --role=ROLE_SULU_ADMIN
php bin/console sulu:document:initialize
php bin/console sulu:phpcr:init
הגדרת Nginx
server {
listen 443 ssl http2;
server_name example.com en.example.com admin.example.com;
root /var/www/my-project/public;
index index.php;
ssl_certificate /etc/ssl/certs/example.com.crt;
ssl_certificate_key /etc/ssl/private/example.com.key;
client_max_body_size 50M;
location / {
try_files $uri /index.php$is_args$args;
}
location ~ \.php$ {
fastcgi_pass unix:/run/php/php8.2-fpm.sock;
fastcgi_split_path_info ^(.+\.php)(/.*)$;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
fastcgi_param DOCUMENT_ROOT $realpath_root;
internal;
}
location /uploads/ {
expires 30d;
add_header Cache-Control "public, immutable";
}
} בנייה לייצור
composer install --no-dev --optimize-autoloader
npm ci && npm run build
php bin/console cache:warmup --env=prod
php bin/console doctrine:migrations:migrate --no-interaction --env=prod
php bin/console messenger:consume async --limit=100 הגדרת מטמון Redis
---
# config/packages/cache.yaml
framework:
cache:
default_redis_provider: 'redis://127.0.0.1:6379'
pools:
cache.app:
adapter: cache.adapter.redis
--- דוגמה להגדרת Webspace
```yaml sulu_core: content: structure: default_type: homepage: 'default' page: 'default' paths: app: path: '%kernel.project_dir%/config/templates' type: 'page' ```תהליך עבודה ולוחות זמנים
| שלב | תיאור | לוח זמנים |
|---|---|---|
| ניתוח | דיון במבנה, שפות, עומס | 1–2 ימים |
| עיצוב | הכנת הגדרות Webspace ו-PHPCR | יום אחד |
| התקנה והגדרה | ביצוע שלבים טכניים על השרת | 1–2 ימים |
| בדיקות | בדיקת מערכת ניהול, נתיבים, ביצועים | יום אחד |
| פריסה | מעבר לייצור, מטמון, ניטור | יום אחד |
התקנה בסיסית עם Webspace אחד ושתי שפות – מיום אחד. פרויקטים מורכבים עם אינטגרציות – עד 5 ימים. התעריף הסטנדרטי שלנו הוא 150 דולר לשעה, עם אפשרות להצעות מחיר קבועות. עבור פרויקט קטן טיפוסי, העלות מתחילה ב-2,500 דולר. לקוחות חוסכים בדרך כלל 40% בעלויות תחזוקה לאחר אופטימיזציה.
מה העבודה שלנו כוללת
- תיעוד: קבצי הגדרה, מדריך פריסה, מדריך מנהל
- גישות: פרטי כניסה למנהל, גישת שרת (במידת הצורך), לוחות מחוונים לניטור
- הדרכה: מפגש של שעתיים לעורכים, הקלטה לעיון עתידי
- תמיכה: 30 יום של תיקוני באגים בחינם, עם אפשרות לתחזוקה מורחבת
- ביקורת סביבה והתקנת רכיבים חסרים
- הגדרת Webspace המותאמת למבנה האתר
- הגדרת Nginx ו-SSL
- אופטימיזציה עם Redis ותורים
- אינטגרציה עם שירותים חיצוניים
- הדרכת צוות ותיעוד
לצוות שלנו ניסיון של 5+ שנים ב-Symfony ו-Sulu, עם 30+ פרויקטים שהושלמו. העלות מחושבת באופן אישי לפי מורכבות. כדי להימנע מבעיות התקנה אופייניות של Sulu, הפקידו עבודה זו בידי אנשי מקצוע. צרו קשר לקבלת ייעוץ והערכת פרויקט מדויקת.
צרו קשר
קבלו ייעוץ תוך 24 שעות. נעזור לכם להגדיר את Sulu CMS בצורה נכונה ומהירה. הזמינו את השירות עכשיו – תוצאות מובטחות.







