התקנה והגדרה של OpenCart חדש מסתיימות לעתים קרובות בשגיאת 500 או חושפות את תיקיית האחסון מהדפדפן. אלה תוצאות אופייניות של הגדרה סטנדרטית, אותן אנו מתקנים בתוך השעה הראשונה של העבודה.
לאחרונה, לקוח פנה אלינו עם חנות OpenCart שרצה על MySQL 5.6 ו-PHP 7.4. לאחר שדרוג ל-OpenCart 4, החנות המשיכה לקרוס עם שגיאת 500. זיהינו תוספים לא תואמים ו-opcache חסר. לאחר הגדרת PHP 8.2 עם opcache ומעבר ל-MariaDB 10.6, החנות רצה מהר פי שניים. הלקוח חסך כ-2,000 דולר בהפסדי הכנסה מהשבתה ונמנע מתיקון חירום בעלות 500 דולר.
OpenCart היא אחת ממערכות ה-CMS הפופולריות ביותר למסחר אלקטרוני, אך ההתקנה המוגדרת כברירת מחדל משאירה פרצות אבטחה ובעיות ביצועים. במאמר זה, אסביר כיצד לבצע התקנת OpenCart נכונה והגדרת שרת כדי להפוך את פלטפורמת המסחר האלקטרוני שלכם למהירה ומאובטחת. לצוות שלנו יש 10 שנות ניסיון עם OpenCart: עזרנו להשיק מעל 50 חנויות מקוונות על CMS זה. OpenCart 4 מהירה פי 2 מ-Magento 2 ב-TTFB וצורכת חצי מהזיכרון. לקוחות שמזמינים התקנה סוהר חוסכים עד 40% מזמן ההשקה ונמנעים מטעויות נפוצות של מתחילים.
דרישות שרת
OpenCart 4.x דורשת:
| רכיב | מינימום | מומלץ |
|---|---|---|
| PHP | 8.0 | 8.2+ |
| MySQL | 5.7 | 8.0 |
| MariaDB | - | 10.6+ |
| שרת אינטרנט | Apache / nginx | nginx |
| תוספי PHP | curl, zip, zlib, gd, mysqli, mbstring | + opcache, redis |
| זיכרון PHP | 128 MB | 256 MB+ |
התיעוד הרשמי של OpenCart ממליץ על פרמטרים אלה.
מקור: מסמכים רשמיים של OpenCart
כיצד להגדיר PHP עבור OpenCart?
קובץ php.ini או הוראה ב-nginx.conf:
memory_limit = 256M
upload_max_filesize = 64M
post_max_size = 64M
max_execution_time = 300
max_input_vars = 10000
date.timezone = Europe/Minsk
opcache.enable = 1
opcache.memory_consumption = 256
opcache.max_accelerated_files = 20000
opcache.revalidate_freq = 60memory_limit = 256M upload_max_filesize = 64M post_max_size = 64M max_execution_time = 300 max_input_vars = 10000 date.timezone = Europe/Minsk opcache.enable = 1 opcache.memory_consumption = 256 opcache.max_accelerated_files = 20000 opcache.revalidate_freq = 60 הוא חובה עבור טפסים גדולים (הגדרת אפשרויות מוצר).
הגדרת nginx
לחצו להגדרת nginx מפורטת עם הסבר
server {
listen 443 ssl http2;
server_name myshop.by www.myshop.by;
root /var/www/myshop/public_html;
index index.php;
ssl_certificate /etc/letsencrypt/live/myshop.by/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/myshop.by/privkey.pem;
location / {
try_files $uri $uri/ @opencart;
}
location @opencart {
rewrite ^/(.+)$ /index.php?_route_=$1 last;
}
location ~ ^/(system|admin/config\.php|config\.php) {
deny all;
}
location ~ \.php$ {
fastcgi_pass unix:/run/php/php8.2-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_read_timeout 300;
}
location ~* \.(jpg|jpeg|png|gif|ico|css|js|woff2)$ {
expires 30d;
add_header Cache-Control "public, no-transform";
}
}
server {
listen 80;
server_name myshop.by www.myshop.by;
return 301 https://myshop.by$request_uri;
}הגדרה זו אוכפת HTTPS, חוסמת גישה לנתיבים רגישים, ומגדירה מטמון אגרסיבי לנכסים סטטיים.
כיצד להעביר את האחסון מחוץ לשורש האינטרנט?
העברת האחסון מחוץ לשורש האינטרנט מבטלת את האפשרות לגישה ישירה לקבצי יומן ומטמון דרך כתובת URL. אנו ממליצים להעביר את התיקייה מיד לאחר ההתקנה.
הורידו ופרקו את ההפצה, העתיקו קבצים לתיקייה הציבורית. צרו מסד נתונים ומשתמש. לאחר מכן העבירו את תיקיית האחסון מחוץ לשורש האינטרנט.
cd /var/www/myshop
wget https://github.com/opencart/opencart/releases/download/4.0.2.3/opencart-4.0.2.3.zip
unzip opencart-4.0.2.3.zip
cp -r upload/* public_html/
cd public_html
cp config-dist.php config.php
cp admin/config-dist.php admin/config.php
chmod 775 system/storage/cache/ system/storage/logs/ system/storage/download/ system/storage/upload/ image/ image/cache/
chmod 664 config.php admin/config.php
chown -R www-data:www-data /var/www/myshop/public_html/
# Создание БД
mysql -e "CREATE DATABASE opencart CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;"
mysql -e "CREATE USER 'opencart_user'@'localhost' IDENTIFIED BY 'strong_password';"
mysql -e "GRANT ALL PRIVILEGES ON opencart.* TO 'opencart_user'@'localhost'; FLUSH PRIVILEGES;"
# Перенос storage
mv public_html/system/storage/ /var/www/myshop/storage/ב-max_input_vars = 10000 וב-server { listen 443 ssl http2; server_name myshop.by www.myshop.by; root /var/www/myshop/public_html; index index.php; ssl_certificate /etc/letsencrypt/live/myshop.by/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/myshop.by/privkey.pem; location / { try_files $uri $uri/ @opencart; } location @opencart { rewrite ^/(.+)$ /index.php?_route_=$1 last; } location ~ ^/(system|admin/config\.php|config\.php) { deny all; } location ~ \.php$ { fastcgi_pass unix:/run/php/php8.2-fpm.sock; fastcgi_index index.php; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_read_timeout 300; } location ~* \.(jpg|jpeg|png|gif|ico|css|js|woff2)$ { expires 30d; add_header Cache-Control "public, no-transform"; } } server { listen 80; server_name myshop.by www.myshop.by; return 301 https://myshop.by$request_uri; } :
define('DIR_STORAGE', '/var/www/myshop/storage/'); מדוע חשוב להגדיר הרשאות?
לאחר ההתקנה, מחקו את תיקיית ההתקנה: cd /var/www/myshop wget https://github.com/opencart/opencart/releases/download/4.0.2.3/opencart-4.0.2.3.zip unzip opencart-4.0.2.3.zip cp -r upload/* public_html/ cd public_html cp config-dist.php config.php cp admin/config-dist.php admin/config.php chmod 775 system/storage/cache/ system/storage/logs/ system/storage/download/ system/storage/upload/ image/ image/cache/ chmod 664 config.php admin/config.php chown -R www-data:www-data /var/www/myshop/public_html/ # Создание БД mysql -e "CREATE DATABASE opencart CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;" mysql -e "CREATE USER 'opencart_user'@'localhost' IDENTIFIED BY 'strong_password';" mysql -e "GRANT ALL PRIVILEGES ON opencart.* TO 'opencart_user'@'localhost'; FLUSH PRIVILEGES;" # Перенос storage mv public_html/system/storage/ /var/www/myshop/storage/ . הרשאות שגויות הן גורם נפוץ לשגיאות 500. ודאו של-config.php ול-admin/config.php יש 664, ולתיקיות הניתנות לכתיבה יש 775. הרשאות 664 על config.php מונעות שינויי הגדרות מקריים דרך האינטרנט.
כיצד לאבטח את ניהול OpenCart?
- שנו את שם
config.phpלשם בלתי צפוי (לדוגמה,admin/config.php). - הגדירו אימות HTTP Basic על תיקיית הניהול.
- עדכנו נתיבים ב-
define('DIR_STORAGE', '/var/www/myshop/storage/');. - הוסיפו בלוק nginx
rm -rf public_html/install/. - התקינו תוסף אימות דו-שלבי.
- הפעילו captcha בדף הכניסה.
כיצד אנו מתקינים OpenCart ביום אחד (דוגמה אמיתית)
אחד הפרויקטים האחרונים שלנו היה השקת חנות אלקטרוניקה מקוונת עם קטלוג של 5000 מוצרים. הלקוח סיפק שרת ייעודי עם nginx ו-MySQL. ביצענו:
- ביקורת שרת (גילינו גרסת MySQL מיושנת).
- הגדרת PHP 8.2 עם opcache ו-redis.
- התקנת OpenCart 4.0.2.3.
- העברת אחסון מחוץ לשורש האינטרנט.
- שינוי שם הניהול והגדרת אימות HTTP Basic.
- הגדרת SSL דרך Let's Encrypt.
- אופטימיזציית מהירות: gzip, מטמון, Redis.
התהליך כולו ארך יום אחד. לאחר ההשקה, החנות הציגה LCP של 1.5 שניות, ועמדה בדרישות Core Web Vitals. הלקוח חסך כ-3,000 דולר בעלויות פיתוח בהשוואה לשכירת מומחים נפרדים.
מה כלול
- ביקורת שרת נוכחי (או סיוע בבחירת אחסון).
- הגדרת PHP 8.2+ עם opcache ו-redis.
- הגדרת Nginx עם תעודת SSL (Let's Encrypt).
- התקנת OpenCart 4.x עם העברת מסד נתונים.
- העברת אחסון מחוץ לשורש האינטרנט.
- אמצעי אבטחה בסיסיים (שינוי שם ניהול, אימות HTTP Basic).
- אופטימיזציית מהירות: gzip, מטמון, Redis.
- מסירת תיעוד עם גישה והוראות.
- שעת הדרכה מקוונת על עבודה עם לוח הניהול.
- שבועיים של תמיכה לאחר ההשקה (ייעוץ בנושא תוכן).
העלות האופיינית להתקנה סוהר זו היא 500 דולר, וחוסכת לכם עד 200 דולר בהשוואה להגדרת רכיבים בנפרד.
השוואה בין OpenCart ל-Magento 2
| פרמטר | OpenCart 4 | Magento 2 |
|---|---|---|
| TTFB | ~200 ms | ~300 ms |
| צריכת זיכרון | 128 MB | 256 MB+ |
| מורכבות תמיכה | נמוכה | גבוהה |
| עלות אחזקה | נמוכה | גבוהה |
צרו קשר כדי לקבל ייעוץ על התקנת OpenCart סוהר. אנו מבטיחים פעולה יציבה של החנות שלכם לאחר ההגדרה. הזמינו התקנה — קבלו חנות מוכנה לתוכן תוך 1–2 ימים. העלות מחושבת באופן אישי לאחר ביקורת שרת.







