웹사이트 검색

Debian 9에 PrestaShop을 설치하는 방법


이 튜토리얼은 다음 OS 버전에 대해 존재합니다.

  • 데비안 11(불스아이)
  • 데비안 9(스트레치)

이 페이지에서

  1. 요구 사항\n
  2. 초기 구성
  3. PrestaShop 설치

이 가이드에서는 무료 온라인 장바구니를 만들기 위해 Debian 9.1 릴리스에 최신 버전의 Prestashop을 설치하고 구성하는 방법을 보여줍니다.

Prestashop은 Apache/Nginx 웹 서버, PHP 및 MySQL/MariaDB 데이터베이스 관리 시스템에서 Linux에 배포되는 PHP 프로그래밍 언어로 작성된 무료 오픈 소스 전자 상거래 콘텐츠 관리 플랫폼입니다. Prestashop CMS는 오늘날 다양한 비즈니스를 위한 온라인 상점을 만들고 서비스 및 상품을 광고하고 판매하는 데 많이 사용됩니다.

요구 사항

  • 베어 메탈 머신 또는 가상 사설 서버에 Debian 9 최소 설치.
  • 시스템 네트워크 인터페이스 카드 중 하나에 대해 구성된 고정 IP 주소입니다.\n
  • 로컬 또는 원격 계정에 대한 sudo 루트 권한 또는 루트 계정에 대한 직접 액세스.\n
  • 적절한 DNS 레코드가 구성된 배포에 따라 프라이빗 또는 퍼블릭 도메인 이름.\n

초기 구성

자체 서버의 소스에서 Prestashop 설치 및 구성을 시작하기 전에 먼저 시스템이 애플리케이션 컴파일 및 설치를 위한 모든 소프트웨어 요구 사항을 충족하는지 확인하십시오. 첫 번째 단계에서 아래 명령을 실행하여 시스템 리포지토리 및 소프트웨어 패키지를 업데이트합니다.

apt update
apt upgrade

다음 단계에서 다음 명령을 실행하여 명령줄에서 시스템을 추가로 관리하는 데 사용할 필수 유틸리티를 설치합니다.

apt install wget bash-completion zip unzip

그런 다음 다음 명령을 실행하여 시스템 이름을 설정하십시오. 그에 따라 호스트 이름 변수를 바꾸십시오.

hostnamectl set-hostname shop

아래 명령을 실행하여 시스템 호스트 이름과 호스트 파일을 확인합니다.

hostnamectl
cat /etc/hostname
hostname –s
hostname –f

마지막으로 커널 업데이트를 적용하고 호스트 이름이 올바르게 변경되도록 Debian 서버를 재부팅합니다.

systemctl reboot

Prestashop은 주로 PHP 서버 측 프로그래밍 언어로 작성된 웹 기반 CMS 전자 상거래 플랫폼입니다. Prestashop PHP 파일 스크립트를 실행하려면 Apache HTTP 서버와 같은 웹 서버와 PHP 처리 게이트웨이가 서버에 설치되어 작동해야 합니다. Prestashop이 올바르게 실행하는 데 필요한 모든 필수 PHP 모듈과 함께 Apache 웹 서버 및 PHP 인터프리터를 설치하려면 서버 콘솔에서 다음 명령을 실행하십시오.

apt install apache2 libapache2-mod-php7.0 php7.0 php7.0-xml php7.0-gd php7.0-json php7.0-zip php7.0-intl php7.0-mcrypt php7.0-curl php7.0-intl php7.0-opcache

Apache 및 PHP를 설치한 후 루트 권한으로 다음 명령을 실행하여 웹 서버가 실행 중이고 포트 80에서 네트워크 연결을 수신하는지 테스트합니다.

netstat –tlpn

데비안 시스템에 netstat 네트워크 유틸리티가 기본적으로 설치되어 있지 않은 경우 아래 명령을 실행하여 설치하십시오.

apt install net-tools

netstat 명령 출력을 검사하면 Apache 웹 서버가 포트 80에서 들어오는 네트워크 연결을 수신 대기하고 있음을 알 수 있습니다. 동일한 작업을 위해 Debian 9에 기본적으로 자동 설치되는 ss 명령을 사용할 수도 있습니다.

ss -tlpn

UFW 방화벽 애플리케이션과 같이 시스템에 방화벽이 활성화된 경우 다음 명령을 실행하여 HTTP 트래픽이 방화벽을 통과하도록 허용하는 새 규칙을 추가해야 합니다.

ufw allow WWW

또는

ufw allow 80/tcp

iptables 원시 규칙을 사용하여 Debian 서버에서 방화벽 규칙을 관리하는 경우 방문자가 Prestashop 온라인 상점을 탐색할 수 있도록 방화벽에서 포트 80 인바운드 트래픽을 허용하는 다음 규칙을 추가하십시오.

apt-get install -y iptables-persistent
iptables -I INPUT -p tcp --destination-port 80 -j ACCEPT
systemctl iptables-persistent save
systemctl iptables-persistent reload

다음으로 아래 명령을 실행하여 Prestashop CMS가 올바르게 실행하는 데 필요한 다음 Apache 모듈을 활성화하고 적용합니다.

a2enmod rewrite
systemctl restart apache2

마지막으로 아래 이미지와 같이 HTTP 프로토콜을 통해 데비안 컴퓨터 IP 주소 또는 도메인 이름 또는 서버 FQDN을 방문하여 클라이언트 브라우저에 Apache 웹 서버 기본 웹 페이지를 표시할 수 있는지 테스트합니다. 컴퓨터 IP 주소를 모르는 경우 ifconfig 또는 ip a 명령을 실행하여 서버의 IP 주소를 확인하십시오.

http://your_domain.tld

클라이언트의 트래픽을 보호하는 HTTPS 프로토콜을 통해 지원되는 Prestashop 웹 관리자 패널과 프런트엔드 웹사이트를 설치하고 액세스하려면 다음 명령을 실행하여 Apache 웹 서버 SSL 모듈 및 SSL 사이트 구성 파일을 활성화하십시오.

a2enmod ssl
a2ensite default-ssl.conf

다음으로 텍스트 편집기로 Apache 기본 SSL 사이트 구성 파일을 열고 아래 샘플과 같이 DocumentRoot 지시문 뒤에 다음 코드 줄을 추가하여 URL 재작성 규칙을 활성화합니다.

nano /etc/apache2/sites-enabled/default-ssl.conf

SSL 사이트 구성 파일 발췌:

<Directory /var/www/html>
  Options +FollowSymlinks
  AllowOverride All
  Require all granted
</Directory>

또한 아래 발췌문에 표시된 것처럼 VirtualHost 행을 다음과 같이 변경합니다.

        <VirtualHost *:443>

SSL Apache 파일을 닫고 편집을 위해 /etc/apache2/sites-enabled/000-default.conf 파일을 열고 SSL 구성 파일과 동일한 URL 재작성 규칙을 추가합니다. 아래 예제와 같이 DocumentRoot 문 뒤에 코드 줄을 삽입합니다.

<Directory /var/www/html>
  Options +FollowSymlinks
  AllowOverride All
  Require all granted
</Directory>

마지막으로 Apache 데몬을 다시 시작하여 지금까지 구성된 모든 규칙을 적용하고 HTTP 프로토콜을 통해 도메인을 방문합니다. 설치 시 Apache에서 발급한 자동 자체 서명 인증서 쌍을 사용하고 있기 때문에 브라우저에 오류 경고가 표시되어야 합니다. 계속하려면 경고를 수락하고 Apache 기본 웹 페이지로 리디렉션하십시오.

systemctl restart apache2

https://yourdomain.tld

UFW 방화벽 애플리케이션이 HTTPS 포트로 들어오는 네트워크 연결을 차단하는 경우 다음 명령을 실행하여 HTTPS 트래픽이 방화벽을 통과하도록 허용하는 새 규칙을 추가해야 합니다.

ufw allow 'WWW Full'

또는

ufw allow 443/tcp

iptables가 네트워크 수준에서 Debian 시스템을 보호하기 위해 설치된 기본 방화벽 응용 프로그램인 경우 방문자가 도메인 이름을 검색할 수 있도록 방화벽에서 포트 443 인바운드 트래픽을 허용하는 다음 규칙을 추가합니다.

iptables -I INPUT -p tcp --destination-port 443 -j ACCEPT
systemctl iptables-persistent save
systemctl iptables-persistent reload

다음 단계에서는 다음 PHP 변수가 활성화되고 PHP 시간대 설정이 올바르게 구성되고 시스템 지리적 위치와 일치하도록 PHP 기본 구성 파일을 추가로 변경해야 합니다. 편집을 위해 /etc/php/7.0/apache2/php.ini 파일을 열고 다음 줄이 다음과 같이 설정되어 있는지 확인합니다. 또한 처음에는 PHP 구성 파일을 백업하십시오.

cp /etc/php/7.0/apache2/php.ini{,.backup}
nano /etc/php/7.0/apache2/php.ini

php.ini 구성 파일에서 다음 변수를 검색, 편집 및 변경합니다.

file_uploads = On
allow_url_fopen = On
memory_limit = 128 M
upload_max_file_size = 64M
date.timezone = Europe/London

대용량 파일 첨부를 지원하기에 적합하도록 memory_limit 변수를 늘리고 다음 링크 http://php에서 PHP 문서가 제공하는 표준 시간대 목록을 참조하여 실제 시간에 따라 time.zone 변수를 대체하십시오. net/manual/en/timezones.php

PHP7에서 사용할 수 있는 OPCache 플러그인을 통해 웹사이트 페이지의 로드 속도를 높이려면 아래 설명된 대로 PHP 인터프리터 구성 파일 하단에 다음 OPCache 설정을 추가하십시오.

opcache.enable=1 
opcache.enable_cli=1
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=10000
opcache.memory_consumption=128
opcache.save_comments=1
opcache.revalidate_freq=1

php.ini 구성 파일을 닫고 아래 명령을 실행하여 변수가 올바르게 추가되었는지 확인하려면 PHP 구성 파일의 끝을 확인하십시오.

tail /etc/php/7.0/apache2/php.ini

위에서 설명한 모든 변경을 수행한 후 다음 명령을 실행하여 Apache 데몬을 다시 시작하여 새 변경 사항을 적용합니다.

systemctl restart apache2

마지막으로 다음 명령어를 실행하여 PHP info 파일을 생성하고 아래 이미지와 같이 브라우저에서 다음 URL의 PHP info 스크립트 파일을 방문하여 PHP 시간대가 올바르게 설정되었는지 확인합니다. 날짜 설정까지 아래로 스크롤하여 PHP 시간대 구성을 확인합니다.

echo '<?php phpinfo(); ?>'| tee /var/www/html/info.php

https://domain.tld/info.php

Prestashop은 사용자, 세션, 연락처, 제품, 카탈로그 등과 같은 다양한 구성을 RDBMS 데이터베이스에 저장합니다. 이 가이드에서는 MariaDB 데이터베이스를 백엔드로 사용하도록 Prestashop을 구성합니다. 아래 명령을 실행하여 MariaDB 데이터베이스와 mysql 데이터베이스에 액세스하는 데 필요한 PHP 모듈을 설치합니다.

apt install mariadb-server php7.0-mysql

MariaDB를 설치한 후 데몬이 실행 중이고 netstat 명령을 실행하여 localhost, 포트 3306에서 연결을 수신하는지 확인합니다.

netstat –tlpn | grep mysql

그런 다음 MySQL 콘솔에 로그인하고 다음 명령을 실행하여 MariaDB 루트 계정을 보호합니다.

mysql -h localhost
use mysql;
update user set plugin='' where user='root';
flush privileges;
exit

다음 단계에서는 Debian 확장 저장소의 설치 패키지에서 제공하는 mysql_secure_installation 스크립트를 실행하여 MariaDB를 보호합니다. 실행하는 동안 스크립트는 MySQL 루트 암호 변경, 익명 사용자 제거, 원격 루트 로그인 비활성화 및 테스트 데이터베이스 삭제와 같은 MariaDB 데이터베이스 보안을 위해 설계된 일련의 질문을 합니다. 아래 명령을 실행하여 스크립트를 실행하고 MySQL 데몬을 완전히 보호하기 위해 묻는 모든 질문에 예를 입력했는지 확인하십시오. 가이드를 제외하고 아래 스크립트 출력을 사용하십시오.

sudo mysql_secure_installation
NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
      SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!
 
In order to log into MariaDB to secure it, we'll need the current
password for the root user.  If you've just installed MariaDB, and
you haven't set the root password yet, the password will be blank,
so you should just press enter here.
 
Enter current password for root (enter for none):
OK, successfully used password, moving on...
 
Setting the root password ensures that nobody can log into the MariaDB
root user without the proper authorisation.
 
You already have a root password set, so you can safely answer 'n'.
 
Change the root password? [Y/n] y
New password:
Re-enter new password:
Password updated successfully!
Reloading privilege tables..
 ... Success!
 
 
By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them.  This is intended only for testing, and to make the installation
go a bit smoother.  You should remove them before moving into a
production environment.
 
Remove anonymous users? [Y/n] y
 ... Success!
 
Normally, root should only be allowed to connect from 'localhost'.  This
ensures that someone cannot guess at the root password from the network.
 
Disallow root login remotely? [Y/n] y
 ... Success!
 
By default, MariaDB comes with a database named 'test' that anyone can
access.  This is also intended only for testing, and should be removed
before moving into a production environment.
 
Remove test database and access to it? [Y/n] y
 - Dropping test database...
 ... Success!
 - Removing privileges on test database...
 ... Success!
 
Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.
 
Reload privilege tables now? [Y/n] y
 ... Success!
 
Cleaning up...
 
All done!  If you've completed all of the above steps, your MariaDB
installation should now be secure.
 
Thanks for using MariaDB!

MariaDB 보안을 테스트하려면 루트 비밀번호 없이 콘솔에서 데이터베이스에 로그인하십시오. 루트 계정에 암호가 제공되지 않으면 데이터베이스에 대한 액세스가 거부되어야 합니다. 암호가 제공되면 아래 스크린샷과 같이 로그인 프로세스가 MySQL 콘솔에 부여되어야 합니다.

mysql -h localhost -u root
mysql -h localhost -u root –p

다음으로, MariaDB 데이터베이스 콘솔에 로그인하고 다음 명령을 실행하여 Prestashop 데이터베이스를 관리하는 데 사용할 비밀번호가 있는 사용자와 Prestashop용 데이터베이스를 생성합니다. 그에 따라 PrestaShop 데이터베이스 이름, 사용자 및 비밀번호를 교체하십시오.

mysql –u root -p
create database my_shop;
grant all privileges on my_shop.* to 'shop_user' identified by 'shop_password';
flush privileges;
exit

지금까지의 모든 변경 사항을 적용하려면 MySQL 및 Apache 데몬을 다시 시작하고 다음 명령을 실행하여 데몬이 실행 중인지 확인합니다.

systemctl restart mysql apache2
systemctl status mysql apache2

프레스타샵 설치

전자상거래 온라인 상점 설치를 위한 모든 시스템 요구 사항이 충족되면 GitHub https://github.com/PrestaShop/PrestaShop/releases 의 Prestashop 릴리스 페이지를 방문하고 다음과 같이 wget 유틸리티를 실행하여 최신 zip 패키지 압축 아카이브를 다운로드합니다. 다음 샘플에 설명되어 있습니다.

wget https://github.com/PrestaShop/PrestaShop/releases/download/1.7.2.3/prestashop_1.7.2.3.zip

zip 아카이브 다운로드가 완료되면 Prestashop zip 아카이브를 웹 서버 문서 루트에 직접 추출하고 아래 명령을 실행하여 추출된 파일을 나열합니다. 또한 webroot 경로에 Apache 웹 서버에서 설치한 기본 index.html 파일을 제거하고 앞서 생성한 info.php 파일도 삭제합니다.

rm /var/www/html/index.html
rm /var/www/html/info.php
unzip prestashop_1.7.2.3.zip -d /var/www/html/
ls /var/www/html/

다음으로 Apache 런타임 사용자에게 웹 루트 경로에 대한 전체 쓰기 권한을 부여하기 위해 아래 명령을 실행합니다. ls 명령을 사용하여 /var/www/html/ 디렉터리에 있는 Prestashop 설치 파일에 대한 권한을 나열합니다.

chown -R www-data:www-data /var/www/html/
ls –al /var/www/html/

브라우저를 열어 Prestashop CMS 설치를 진행하고 HTTPS 프로토콜을 통해 서버의 IP 주소 또는 도메인 이름을 탐색합니다. 첫 번째 설치 화면에서 Prestashop 설치 스크립트는 아래 이미지와 같이 웹 서버의 웹 루트 경로에서 prestashop.zip 파일의 내용을 펼칩니다.

https://yourdomain.tld

추출이 완료되면 명령줄로 전환하고 /var/www/html/ 디렉토리의 내용을 나열하여 모든 Prestashop 추출 파일을 볼 수 있습니다.

ls -la /var/www/html/

다음 화면에서 Prestashop 설치 프로그램은 시작 화면을 표시하고 설치 프로세스를 계속하려면 설치 언어를 선택하라는 메시지를 표시합니다. 언어를 선택하고 다음 버튼을 눌러 다음 단계를 계속하십시오.

다음 설치 화면에서 아래 이미지와 같이 '라이선스 조건에 동의합니다'를 체크하고 다음 버튼을 눌러 계속 진행합니다.

Prestashop 설치 프로그램은 이제 시스템 및 환경과의 호환성을 결정하기 위해 일련의 검사를 수행하고 발견된 경우 최종 오류를 나열합니다. 시스템 환경이 PrestaShop 설치와 호환되는 경우 아래 스크린샷과 같이 웹 페이지에 녹색 메시지가 표시되어야 합니다. 다시 설치 프로세스를 진행하려면 다음 버튼을 누르십시오.

다음 화면에서 상점 이름, 주요 활동, 상점이 등록된 국가 및 계정 세부 정보와 같은 상점에 대한 필수 정보를 추가하십시오. 아래 스크린샷과 같이 Prestashop 백엔드 웹 패널에 액세스하기 위한 이메일 주소와 이 계정에 사용될 강력한 암호를 제공하십시오. 완료되면 다음 버튼을 눌러 계속하십시오.

다음 설치 화면에서 지금 데이터베이스 연결 테스트 버튼을 눌러 Prestashop 히트에 대해 이전에 만든 MySQL 데이터베이스 주소, 이름 및 자격 증명을 추가합니다. MySQL 데이터베이스에 성공적으로 연결되면 다음 버튼을 눌러 설치 프로세스를 시작하십시오.

아래 스크린샷과 같이 설치 프로그램이 필요한 모든 정보로 데이터베이스를 채우고 설치 프로세스가 완료될 때까지 몇 분 정도 기다리십시오.

설치가 완료되면 설치 프로그램은 지원되는 웹 관리자 패널 로그인 정보와 온라인 상점을 관리하는 데 사용되는 Prestashop 백엔드 오피스에 액세스하는 데 필요한 하이퍼링크와 고객에게 표시되는 상점의 프런트 오피스를 표시합니다. .

스토어 백엔드에 액세스하려면 백 오피스 관리 버튼을 누르십시오. 향후 다른 브라우저에서 웹 관리자 패널에 로그인하려면 스토어 백오피스 주소를 적어 두거나 북마크해야 합니다.

백 오피스에 로그인을 시도하면 아래 이미지와 같은 경고 메시지가 나타나 도메인 웹 루트 경로에서 설치 디렉토리를 삭제해야 함을 알려줍니다.

Prestashop 지원 관리자 패널에 로그인하려면 서버 콘솔로 돌아가서 다음 명령을 실행하여 Prestashop 설치 디렉터리를 삭제하십시오.

rm -rf /var/www/html/install/

그런 다음 Prestashop 백오피스 페이지를 다시 로드하고 다음 스크린샷과 같이 설치 프로세스 중에 설정된 자격 증명으로 관리자 패널에 로그인합니다.

처음 로그인하면 환영 메시지가 브라우저에 표시됩니다. 시작 버튼을 누르면 아래 스크린샷과 같이 첫 번째 제품 추가를 시작할 수 있는 카탈로그로 리디렉션됩니다.

Prestashop 프런트엔드 웹 페이지를 방문하려면 브라우저에 도메인 이름을 입력하기만 하면 다음 스크린샷에 설명된 대로 자동으로 초기 페이지로 리디렉션됩니다.

그러나 현재 상점은 암호화되지 않은 HTTP 프로토콜을 통해서만 보안되지 않은 상태로 액세스할 수 있습니다. Prestashop에서 HTTPS 지원을 활성화하려면 백오피스 패널에 로그인하고 구성 -> 상점 매개변수 -> 일반으로 이동한 다음 여기를 클릭하여 상점이 HTTPS 링크를 지원하는지 확인하십시오(아래 이미지 참조).

SSL 테스트가 수행된 후 SSL 사용 버튼을 예로 전환하고 페이지 하단으로 스크롤한 다음 저장 버튼을 눌러 구성을 적용합니다. 그러나 이 구성은 지금까지 백오피스 링크에 대해서만 SSL 지원을 활성화했습니다. 상점 도메인 이름을 방문하는 클라이언트는 암호화되지 않은 연결을 통해 연결됩니다.

도메인을 통한 방문자 트래픽을 보호하려면 아래 이미지와 같이 모든 페이지에서 SSL 사용 버튼을 예로 전환하고 아래로 스크롤하여 페이지 하단의 저장 버튼을 눌러 설정을 적용합니다.

이제 클라이언트가 HTTPS 프로토콜을 통한 보안 연결을 통해 도메인을 방문하도록 자동으로 리디렉션되는지 테스트하려면 Prestashop 프런트엔드 페이지를 새로 고치거나 브라우저에 도메인 이름을 입력하십시오. 이제 아래 이미지와 같이 HTTP 프로토콜을 통해 상점 도메인 이름에 액세스해야 합니다.

그게 다야! Debian 9.1에서 PrestaShop을 성공적으로 설치하고 구성했습니다. 그러나 Apache HTTP 서버는 자체 서명된 인증서를 사용하여 서버와 방문자의 브라우저 사이의 트래픽을 암호화하기 때문에 상점을 처음 방문할 때 항상 경고 메시지가 생성되어 브라우저에 표시됩니다. 이 경고는 온라인 상점 비즈니스에 좋지 않습니다. 이 경우 신뢰할 수 있는 인증 기관에서 발급한 인증서를 구입하거나 Let’s Encrypt CA에서 무료 인증서 쌍을 받아야 합니다.

Prestashop과 관련된 기타 사용자 정의 구성에 대해서는 다음 주소의 설명서 페이지를 방문하십시오. http://doc.prestashop.com/display/PS17/Installing+PrestaShop