OpenBSD كحل للتجارة الإلكترونية مع PrestaShop و Apache

المقدمة

يوضح هذا البرنامج التعليمي OpenBSD كحل للتجارة الإلكترونية باستخدام PrestaShop و Apache.

مطلوب Apache لأن PrestaShop له متطلبات معقدة لإعادة كتابة عناوين URL غير مدعومة من قبل خادم الويب المدمج لـ OpenBSD ، httpd. يستخدم هذا البرنامج التعليمي الشهادات الموقعة ذاتيا. الرجاء استخدام شهادة تم التحقق منها للإنتاج.

مهام التحضير

إنشاء مستخدم عادي يُسمح باستخدامه مؤقتًا doasبدون كلمة مرور. ستتم إزالة هذا الوصول بعد الإعداد.

user add -c "Example User" -m -G wheel -L staff auser
passwd auser
echo 'permit nopass keepenv :wheel' > /etc/doas.conf

أضف مستودع حزمة OpenBSD.

echo 'https://cdn.openbsd.org/pub/OpenBSD' > /etc/installurl

إعادة توجيه الحالة اليومية ورسائل البريد الإلكتروني الأمنية إلى عنوانك.

echo '[email protected]' > /root/.forward

قم بتعيين اسم مضيف الخادم.

echo 'www.example.com' > /etc/myname
hostname www.example.com

قم بإضافة عنوان FQDN وعنوان IP الخاص بخادمك إلى /etc/hosts.
استبدلها 192.0.2.1بعنوان IP الخاص بك Vultr.

127.0.0.1    localhost
::1          localhost
192.0.2.1    www.example.com

أضف الحزم المطلوبة لـ PrestaShop و Apache. اختر أحدث الإصدارات عندما يُطلب منك ذلك.

doas su
pkg_add apache-httpd php php-curl php-gd php-intl php-pdo_mysql php-zip mariadb-client mariadb-server wget unzip

إنشاء شهادة SSL موقعة ذاتيًا للاختبار. قم بتعيين الاسم الشائع على FQDN لخادمك ، على سبيل المثال www.example.com.

openssl req -x509 -new -nodes -newkey rsa:4096 -keyout /etc/ssl/private/example.com.key -out /etc/ssl/example.com.crt -days 3650 -sha256
chmod 0600 /etc/ssl/private/example.com.key

تنزيل واستخراج PrestaShop

حدد عنوان URL لأحدث إصدار من PrestaShop ، وقم بتنزيله /tmpواستخراجه إلى /var/www/htdocs/prestashop.

cd /tmp
wget <https://download.prestashop.com/download/releases/prestashop_1.7.6.4.zip>
unzip prestashop_1.7.6.4.zip -d /var/www/htdocs/prestashop
chown -R www:www /var/www/htdocs/prestashop

تكوين جدار حماية OpenBSD (pf)

قم بتكوين جدار الحماية لحظر كل حركة المرور الواردة باستثناء ssh و www و https .

عمل نسخة احتياطية من /etc/pf.conf.

cp /etc/pf.conf /etc/pf.conf.bak

تحرير /etc/pf.confكما هو موضح.

set skip on lo

block in
pass out  

pass in on egress inet proto tcp to port {ssh, www, https} \
    flags S/SA keep state

اختبار وتنشيط قواعد جدار الحماية.

doas pfctl -nf /etc/pf.conf
doas pfctl -f /etc/pf.conf

تكوين OpenSMTPD كمرحل للبريد الإلكتروني

نسخ ملفك /etc/mail/smtpd.confاحتياطيًا.

cp /etc/mail/smtpd.conf /etc/mail/smtpd.conf.bak

تحرير /etc/mail/smtpd.confكما هو موضح أدناه.

ملاحظات: * تعريف الجدول للأسرار يحمل اسم المستخدم وكلمة المرور لترحيل البريد. * يبحث الإجراء الصادر عن اسم المستخدم وكلمة المرور تحت التسمية prestashopفي /etc/mail/secretsترحيل البريد الإلكتروني من خلال خادم البريد الإلكتروني الخاص بك.

    table aliases file:/etc/mail/aliases
    table secrets file:/etc/mail/secrets

    listen on lo0

    action "local_mail" mbox alias <aliases>
    action "outbound" relay host smtp+tls://[email protected]:587 \
        tls no-verify auth <secrets>

    match from local for local action "local_mail"
    match from local for any action "outbound"

خلق /etc/mail/secrets

استبدل عنوان البريد الإلكتروني وكلمة المرور ببيانات الاعتماد التي تستخدمها لخادم بريدك الإلكتروني.

echo "prestashop [email protected]:password" > /etc/mail/secrets

تعيين الأذونات للتأمين /etc/mail/secrets

chmod 0600 /etc/secrets

اختبر ملف التكوين للأخطاء وأعد تشغيل برنامج smtpd.

smtpd -n
rcctl restart smtpd

تكوين بيئة PHP و PHP-FPM

قم بتكوين عملية PHP-FPM للاستماع على مقبس TCP بدلاً من مقبس مجال UNIX.

قم بإجراء التغيير التالي /etc/php-fpm.confللملف.

...
; If using a TCP port, never expose this to a public network.
;listen = /var/www/run/php-fpm.sock
listen = 127.0.0.1:9000

قم بإجراء بعض التغييرات الإضافية على بيئة PHP في /etc/php-7.3.ini. قد يتغير اسم الملف قليلاً إذا كان الإصدار أحدث من 7.3. هذه التغيرات:

  • اسمح بتحميل الملفات الأكبر حجمًا.
  • قم بتعطيل البيئة المتضخمة.
  • تكوين PHP لإرسال البريد الإلكتروني عبر sendmail.

    ; Default Value: not set
    ;chroot = /var/www
    ...
    ; Maximum allowed size for uploaded files.
    ; <http://php.net/upload-max-filesize>
    upload_max_filesize = 6M
    ...
    ; For Unix only.  You may supply arguments as well (default: "sendmail -t -i").
    ; <http://php.net/sendmail-path>
    ;sendmail_path =
    sendmail_path = /usr/sbin/sendmail -t -i
    ...
    ; Whether to allow the treatment of URLs (like <http://> or <ftp://)> as files.
    ; <http://php.net/allow-url-fopen>
    allow_url_fopen = On
    ...
    ; Maximum size of POST data that PHP will accept.
    ; Its value may be 0 to disable the limit. It is ignored if POST data reading
    ; is disabled through enable_post_data_reading.
    ; <http://php.net/post-max-size>
    post_max_size = 12M
    

    قم بتمكين مكونات PHP الإضافية.

    cp /etc/php-7.3.sample/* /etc/php-7.3/.

قم بتمكين برنامج PHP-FPM وبدء تشغيله. قد يكون اسم البرنامج الخفي مختلفًا قليلاً إذا كان الإصدار أحدث.

rcctl enable php73_fpm
rcctl start php73_fpm

تكوين MariaDB

يوفر MariaDB الواجهة الخلفية لقاعدة البيانات لـ PrestaShop. لأن MariaDB يحتاج إلى ملفات مفتوحة أكثر مما تسمح به الفئة الافتراضية ، قم بإنشاء فصل خاص فيه /etc/login.conf.

في نهاية الملف ، أضف الأسطر التالية:

mysqld:\
      :openfiles-cur=1024:\
      :openfiles-max=2048:\
      :tc=daemon:

قم بتثبيت MariaDB.

 doas su
 mysql_install_db
 rcctl enable mysqld
 rcctl start mysqld

تكوين أمان MariaDB.

 mysql_secure_installation

إنشاء قاعدة بيانات PrestaShop. استخدم كلمة مرور قوية.

mysql -u root
CREATE DATABASE prestashop;
GRANT ALL PRIVILEGES ON prestashop.* TO 'prestashop'@'localhost' IDENTIFIED BY 'password123';
FLUSH PRIVILEGES;
EXIT

تكوين أباتشي

دعم /etc/apache2/httpd2.conf

cp /etc/apache2/httpd2.conf /etc/apache2/httpd2.conf.bak

قم بإجراء التغييرات التالية على /etc/apache2/httpd2.conf، وذلك #لتمكين الوحدات النمطية وتعطيلها.

Listen 443
...
LoadModule mpm_event_module /usr/local/lib/apache2/mod_mpm_event.so
#LoadModule mpm_prefork_module /usr/local/lib/apache2/mod_mpm_prefork.so
LoadModule proxy_module /usr/local/lib/apache2/mod_proxy.so
LoadModule proxy_fcgi_module /usr/local/lib/apache2/mod_proxy_fcgi.so
LoadModule ssl_module /usr/local/lib/apache2/mod_ssl.so
LoadModule rewrite_module /usr/local/lib/apache2/mod_rewrite.so
...
ServerAdmin [email protected]
ServerName 192.0.2.1:80
  • /etc/apache2/httpd2.confتحدث عدة تغييرات أخرى في الجزء السفلي من الملف. إزالة #من عبارات التضمين المشار إليها.

  • أضف خطوط الاستضافة الافتراضية أخيرًا.

    # Server-pool management (MPM specific)
    Include /etc/apache2/extra/httpd-mpm.conf
    ...
    # Virtual Hosts
    IncludeOptional /etc/apache2/sites/*.conf
    

قم بإنشاء /etc/apache2/sitesالدليل.

mkdir /etc/apache2/sites

إنشاء /etc/apache2/sites/example.confبالمعلومات التالية:

<VirtualHost *:80>
  ServerName example.com
  ServerAlias www.example.com
  ServerAdmin [email protected]
  DocumentRoot "/var/www/htdocs/prestashop"

  <Directory "/var/www/htdocs/prestashop">
    Options -Indexes +Multiviews +FollowSymLinks
    AllowOverride All
    <Limit GET POST OPTIONS>
    </Limit>
    Require all granted
  </Directory>

</VirtualHost>

<VirtualHost *:443>
  ServerName example.com
  ServerAlias www.example.com
  ServerAdmin [email protected]
  DocumentRoot "/var/www/htdocs/prestashop"

  <Directory "/var/www/htdocs/prestashop">
    Options -Indexes +Multiviews +FollowSymLinks
    AllowOverride All
    <Limit GET POST OPTIONS>
    </Limit>
    Require all granted
  </Directory>

  SSLEngine On
  SSLCertificateFile "/etc/ssl/example.com.crt"
  SSLCertificateKeyFile "/etc/ssl/private/example.com.key"
  SSLCipherSuite HIGH:!aNULL

</VirtualHost>

تكوين وحدة وكيل أباتشي بإضافة ما يلي إلى /etc/apache2/sites/example.conf

<IfModule proxy_module>
  <IfModule dir_module>
    DirectoryIndex index.php
  </IfModule>
  <FilesMatch "\.php$">
    SetHandler "proxy:fcgi://127.0.0.1:9000"
  </FilesMatch>
</IfModule>

اختبر التكوين ، ثم قم بتمكين Apache وبدء تشغيله.

apachectl configtest
rcctl enable apache2
rcctl start apache2

تأكد من أن Apache يستمع على المنفذين 80 و 443.

netstat -ln -finet

Active Internet connections (only servers)
Proto   Recv-Q Send-Q  Local Address          Foreign Address        (state)
tcp          0      0  *.443                  *.*                    LISTEN
tcp          0      0  127.0.0.1.25           *.*                    LISTEN
tcp          0      0  *.22                   *.*                    LISTEN
tcp          0      0  *.80                   *.*                    LISTEN
tcp          0      0  127.0.0.1.3306         *.*                    LISTEN
tcp          0      0  127.0.0.1.9000         *.*                    LISTEN

قم بتثبيت PrestaShop

تصفح إلى موقع الويب الخاص بك في http://www.example.com. سيتم تشغيل معالج تثبيت PrestaShop.

بمجرد الانتهاء من التثبيت ، دوّن ملاحظة عن واجهة المتجر والروابط الإدارية واحذف الدليل /var/www/htdocs/prestashop/install.

تمكين SSL.

  • انقر فوق معلمات التسوق
  • انقر فوق عام
  • تمكين SSL لجميع أجزاء متجرك

قم بتغيير كلمة المرور الإدارية.

  • انقر فوق معلمات متقدمة
  • انقر فوق فريق
  • غير كلمة المرور الخاصة بك.

بعض المهام النهائية

النسخ الاحتياطي لمتجرك وقاعدة البيانات الخاصة به:

cd /var/www/htdocs
doas tar cvfz /home/auser/prestashop.tar.gz prestashop/
doas mysqldump -u prestashop -p prestashop | gzip -4 > /home/auser/prestashop.sql.tar.gz
doas chown auser:auser /home/auser/prestashop*

إزالة الوصول إلى doas لحساب المستخدم الخاص بك عن طريق إعادة إنشاء doas.confالملف.

echo 'permit keepenv :wheel' > /etc/doas.conf


Leave a Comment

نظرة ثاقبة على 26 أسلوبًا لتحليل البيانات الضخمة: الجزء الأول

نظرة ثاقبة على 26 أسلوبًا لتحليل البيانات الضخمة: الجزء الأول

نظرة ثاقبة على 26 أسلوبًا لتحليل البيانات الضخمة: الجزء الأول

6 أشياء شديدة الجنون حول نينتندو سويتش

6 أشياء شديدة الجنون حول نينتندو سويتش

يعرف الكثير منكم أن Switch سيصدر في مارس 2017 وميزاته الجديدة. بالنسبة لأولئك الذين لا يعرفون ، قمنا بإعداد قائمة بالميزات التي تجعل "التبديل" "أداة لا غنى عنها".

وعود التكنولوجيا التي لم يتم الوفاء بها بعد

وعود التكنولوجيا التي لم يتم الوفاء بها بعد

هل تنتظر عمالقة التكنولوجيا للوفاء بوعودهم؟ تحقق من ما تبقى دون تسليم.

وظائف طبقات معمارية مرجعية للبيانات الضخمة

وظائف طبقات معمارية مرجعية للبيانات الضخمة

اقرأ المدونة لمعرفة الطبقات المختلفة في بنية البيانات الضخمة ووظائفها بأبسط طريقة.

كيف يمكن للذكاء الاصطناعي نقل أتمتة العمليات إلى المستوى التالي؟

كيف يمكن للذكاء الاصطناعي نقل أتمتة العمليات إلى المستوى التالي؟

اقرأ هذا لمعرفة مدى انتشار الذكاء الاصطناعي بين الشركات الصغيرة وكيف أنه يزيد من احتمالات نموها ومنح منافسيها القدرة على التفوق.

CAPTCHA: ما هي المدة التي يمكن أن تظل تقنية قابلة للتطبيق للتميز بين الإنسان والذكاء الاصطناعي؟

CAPTCHA: ما هي المدة التي يمكن أن تظل تقنية قابلة للتطبيق للتميز بين الإنسان والذكاء الاصطناعي؟

لقد أصبح حل CAPTCHA صعبًا جدًا على المستخدمين في السنوات القليلة الماضية. هل ستكون قادرة على أن تظل فعالة في اكتشاف البريد العشوائي والروبوتات في المستقبل القريب؟

التفرد التكنولوجي: مستقبل بعيد للحضارة الإنسانية؟

التفرد التكنولوجي: مستقبل بعيد للحضارة الإنسانية؟

مع تطور العلم بمعدل سريع ، واستلام الكثير من جهودنا ، تزداد أيضًا مخاطر تعريض أنفسنا إلى تفرد غير قابل للتفسير. اقرأ ، ماذا يمكن أن يعني التفرد بالنسبة لنا.

التطبيب عن بعد والرعاية الصحية عن بعد: المستقبل هنا

التطبيب عن بعد والرعاية الصحية عن بعد: المستقبل هنا

ما هو التطبيب عن بعد والرعاية الصحية عن بعد وأثره على الأجيال القادمة؟ هل هو مكان جيد أم لا في حالة الوباء؟ اقرأ المدونة لتجد طريقة عرض!

هل تساءلت يومًا كيف يربح المتسللون الأموال؟

هل تساءلت يومًا كيف يربح المتسللون الأموال؟

ربما سمعت أن المتسللين يكسبون الكثير من المال ، لكن هل تساءلت يومًا كيف يجنون هذا النوع من المال؟ دعنا نناقش.

يتسبب التحديث الإضافي لنظام macOS Catalina 10.15.4 في حدوث مشكلات أكثر من حلها

يتسبب التحديث الإضافي لنظام macOS Catalina 10.15.4 في حدوث مشكلات أكثر من حلها

أصدرت Apple مؤخرًا macOS Catalina 10.15.4 تحديثًا تكميليًا لإصلاح المشكلات ولكن يبدو أن التحديث يتسبب في المزيد من المشكلات التي تؤدي إلى إنشاء أجهزة macOS. قراءة هذه المادة لمعرفة المزيد