PrestaShop 및 Apache를 사용한 전자 상거래 솔루션으로서의 OpenBSD

소개

이 튜토리얼은 PrestaShop 및 Apache를 사용한 전자 상거래 솔루션으로서 OpenBSD를 보여줍니다.

PrestaShop에는 OpenBSD의 내장 웹 서버 httpd에서 지원하지 않는 복잡한 URL 재 작성 요구 사항이 있기 때문에 Apache가 필요합니다. 이 학습서는 자체 서명 된 인증서를 사용합니다. 생산을 위해 확인 된 인증서를 사용하십시오.

준비 작업

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. Vultr IP 주소로
교체하십시오 192.0.2.1.

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에 대한 URL을 찾아 다운로드하여 /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 , wwwhttps를 제외한 모든 인바운드 트래픽을 차단하도록 방화벽을 구성 하십시오 .

의 백업 사본을 만듭니다 /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 환경 구성

UNIX 도메인 소켓 대신 TCP 소켓에서 수신하도록 PHP-FPM 프로세스를 구성하십시오.

/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 이상인 경우이 파일 이름이 약간 변경 될 수 있습니다. 이러한 변경 사항 :

  • 더 큰 파일을 업로드 할 수 있습니다.
  • chroot 환경을 비활성화하십시오.
  • sendmail을 통해 이메일을 보내도록 PHP를 구성하십시오.

    ; 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파일 맨 아래로 몇 가지 더 많은 변경이 발생합니다. #표시된 include 문에서 제거하십시오 .

  • 마지막으로 가상 호스팅 라인을 추가하십시오.

    # 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 사용

관리 비밀번호를 변경하십시오.

  • 고급 매개 변수를 클릭하십시오.
  • 클릭
  • 비밀번호를 변경하십시오.

마지막 작업

상점 및 해당 데이터베이스를 백업하십시오.

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

AI가 랜섬웨어 공격의 증가와 싸울 수 있습니까?

AI가 랜섬웨어 공격의 증가와 싸울 수 있습니까?

랜섬웨어 공격이 증가하고 있지만 AI가 최신 컴퓨터 바이러스를 처리하는 데 도움이 될 수 있습니까? AI가 답인가? AI boone 또는 bane인지 여기에서 읽으십시오.

ReactOS: 이것이 Windows의 미래입니까?

ReactOS: 이것이 Windows의 미래입니까?

오픈 소스이자 무료 운영 체제인 ReactOS가 최신 버전과 함께 제공됩니다. 현대 Windows 사용자의 요구 사항을 충족하고 Microsoft를 무너뜨릴 수 있습니까? 이 구식이지만 더 새로운 OS 환경에 대해 자세히 알아보겠습니다.

WhatsApp 데스크톱 앱 24*7을 통해 연결 유지

WhatsApp 데스크톱 앱 24*7을 통해 연결 유지

Whatsapp은 마침내 Mac 및 Windows 사용자용 데스크톱 앱을 출시했습니다. 이제 Windows 또는 Mac에서 Whatsapp에 쉽게 액세스할 수 있습니다. Windows 8 이상 및 Mac OS 10.9 이상에서 사용 가능

AI는 어떻게 프로세스 자동화를 다음 단계로 끌어올릴 수 있습니까?

AI는 어떻게 프로세스 자동화를 다음 단계로 끌어올릴 수 있습니까?

인공 지능이 소규모 회사에서 어떻게 인기를 얻고 있으며 어떻게 인공 지능이 성장할 가능성을 높이고 경쟁자가 우위를 점할 수 있는지 알아보려면 이 기사를 읽으십시오.

macOS Catalina 10.15.4 추가 업데이트로 인해 해결보다 더 많은 문제가 발생함

macOS Catalina 10.15.4 추가 업데이트로 인해 해결보다 더 많은 문제가 발생함

최근 Apple은 문제를 해결하기 위해 macOS Catalina 10.15.4 추가 업데이트를 출시했지만 이 업데이트로 인해 Mac 컴퓨터의 브릭킹으로 이어지는 더 많은 문제가 발생하는 것 같습니다. 자세히 알아보려면 이 기사를 읽어보세요.

빅데이터의 13가지 상용 데이터 추출 도구

빅데이터의 13가지 상용 데이터 추출 도구

빅데이터의 13가지 상용 데이터 추출 도구

저널링 파일 시스템이란 무엇이며 어떻게 작동합니까?

저널링 파일 시스템이란 무엇이며 어떻게 작동합니까?

우리 컴퓨터는 모든 데이터를 저널링 파일 시스템이라고 하는 체계적인 방식으로 저장합니다. 검색을 누르는 즉시 컴퓨터에서 파일을 검색하고 표시할 수 있는 효율적인 방법입니다.https://wethegeek.com/?p=94116&preview=true

기술적 특이점: 인류 문명의 먼 미래?

기술적 특이점: 인류 문명의 먼 미래?

과학이 빠른 속도로 발전하고 우리의 많은 노력을 인수함에 따라 설명할 수 없는 특이점에 처할 위험도 높아집니다. 특이점이 우리에게 무엇을 의미할 수 있는지 읽어보십시오.

26가지 빅 데이터 분석 기법에 대한 통찰: 1부

26가지 빅 데이터 분석 기법에 대한 통찰: 1부

26가지 빅 데이터 분석 기법에 대한 통찰: 1부

2021년 의료 분야에서 인공 지능의 영향

2021년 의료 분야에서 인공 지능의 영향

의료 분야의 AI는 지난 수십 년 동안 큰 도약을 했습니다. 따라서 의료 분야에서 AI의 미래는 여전히 나날이 성장하고 있습니다.