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با آدرس Vultr IP خود را.

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 را بارگیری و استخراج کنید

نشانی اینترنتی جدیدترین نسخه 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

فایل پیکربندی برای خطاها را انجام دهید و Daemon smtpd را مجدداً راه اندازی کنید.

smtpd -n
rcctl restart smtpd

محیط PHP و PHP-FPM را پیکربندی کنید

فرایند PHP-FPM را تنظیم کنید تا به جای سوکت دامنه یونیکس ، به سوکت TCP گوش دهید.

تغییر زیر را برای /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 باشد این نام پرونده ممکن است کمی تغییر کند. این تغییرات:

  • اجازه می دهد تا پرونده های بزرگتر بارگذاری شود.
  • محیط نادرست را غیرفعال کنید.
  • پی اچ پی را ارسال کنید تا ایمیل از طریق 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 را فعال کرده و شروع کنید. اگر نسخه جدیدتر باشد ممکن است نام Daemon کمی متفاوت باشد.

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

پیکربندی Apache

پشتیبان گیری /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>

با افزودن موارد زیر ماژول پروکسی Apache را پیکربندی کنید /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 را برای همه قسمتهای فروشگاه خود فعال کنید

رمزعبور اداری خود را تغییر دهید.

  • بر روی Advanced Parameters کلیک کنید
  • روی تیم کلیک کنید
  • رمزعبور خود را تغییر دهید.

برخی از وظایف نهایی

از فروشگاه و بانک اطلاعاتی خود نسخه پشتیبان تهیه کنید:

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.confپرونده ، دسترسی doas را برای حساب کاربری خود حذف کنید.

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


Leave a Comment

نحوه نصب بستر سبد خرید LiteCart در اوبونتو 16.04

نحوه نصب بستر سبد خرید LiteCart در اوبونتو 16.04

LiteCart یک بستر سبد خرید آزاد و منبع باز است که به زبان های PHP ، jQuery و HTML 5 نوشته شده است. این نرم افزار ساده ، سبک و با کاربرد آسان است.

نحوه نصب Anchor CMS بر روی یک VPS Fedora 26 LAMP

نحوه نصب Anchor CMS بر روی یک VPS Fedora 26 LAMP

با استفاده از یک سیستم متفاوت؟ Anchor CMS یک سیستم مدیریت محتوا (CMS) بسیار ساده و بسیار سبک ، بسیار آزاد و آزاد است.

اشتراک NFS را در Debian تنظیم کنید

اشتراک NFS را در Debian تنظیم کنید

NFS یک سیستم فایل مبتنی بر شبکه است که به رایانه ها اجازه می دهد تا از طریق شبکه رایانه ای به فایلها دسترسی پیدا کنند. این راهنما توضیح می دهد که چگونه می توانید پوشه ها را روی NF قرار دهید

نحوه بروزرسانی CentOS 7 ، Ubuntu 16.04 و Debian 8

نحوه بروزرسانی CentOS 7 ، Ubuntu 16.04 و Debian 8

هنگام راه اندازی سرور جدید لینوکس ، به روزرسانی سیستم های هسته و سایر بسته ها تا آخرین نسخه پایدار یک روش توصیه شده است. در این مقاله

نحوه نصب Matomo Analytics در Fedora 28

نحوه نصب Matomo Analytics در Fedora 28

با استفاده از یک سیستم متفاوت؟ Matomo (سابقا پیویک) یک بستر تحلیلی منبع باز است ، یک جایگزین باز برای Google Analytics. منبع Matomo میزبان o

یک سرور TeamTalk را در لینوکس تنظیم کنید

یک سرور TeamTalk را در لینوکس تنظیم کنید

TeamTalk یک سیستم کنفرانس است که به کاربران امکان می دهد مکالمات صوتی / تصویری با کیفیت بالا ، چت متنی ، انتقال فایل ها و صفحه های به اشتراک بگذارند. من

با استفاده از کلید SSH خود برای ورود به کاربران غیر ریشه استفاده کنید

با استفاده از کلید SSH خود برای ورود به کاربران غیر ریشه استفاده کنید

Vultr یک ویژگی را فراهم می کند که به شما امکان می دهد با ایجاد یک نمونه جدید ، کلیدهای SSH را از قبل نصب کنید. این اجازه می دهد تا به کاربر root دسترسی داشته باشید ، با این حال ، th

نحوه نصب انجمن NodeBB در FreeBSD 12

نحوه نصب انجمن NodeBB در FreeBSD 12

با استفاده از یک سیستم متفاوت؟ NodeBB یک نرم افزار انجمن مبتنی بر Node.js است. از سوکت های وب برای تعامل فوری و اعلامیه های زمان واقعی استفاده می کند. NodeB

نصب و راه اندازی ZNC در اوبونتو

نصب و راه اندازی ZNC در اوبونتو

ZNC یک پیشرانه پیشرفته شبکه IRC است که تمام وقت بهم متصل می شود تا مشتری IRC بتواند بدون از دست دادن جلسه گپ قطع یا وصل شود.

نحوه نصب Ranger Terminal File Manager در لینوکس

نحوه نصب Ranger Terminal File Manager در لینوکس

رنجر یک مدیر فایل مبتنی بر خط فرمان است که دارای کلیدهای اتصال VI است. این برنامه یک رابط لعنتی مینیمالیستی و زیبا با نمای سلسله مراتب فهرست ارائه می دهد