웹사이트 검색

Debian 9에 EspoCRM 오픈 소스 CRM 소프트웨어를 설치하는 방법


이 가이드에서는 회사를 위한 무료 온라인 고객 관계 관리 플랫폼을 만들기 위해 LAMP 스택 위에 Debian 9에 최신 버전의 EspoCRM 소프트웨어를 설치하고 구성하는 방법을 보여줍니다.

EspoCRM은 빠르고 간단하며 사용자 지정이 가능하도록 설계된 유연하고 사용하기 쉬운 오픈 소스 고객 관계 관리(CRM) 플랫폼입니다. 이 소프트웨어는 주로 PHP 프로그래밍 언어로 작성되며 Apache 또는 Nginx 웹 서버, PHP 프로그래밍 언어 및 MySQL 또는 MariaDB 데이터베이스 관리 시스템 위에 Linux에 쉽게 배포할 수 있습니다. EspoCRM은 다양한 언어를 지원하며 콜 센터, 은행, 교육, 의료, 관광, 소매, 부동산 또는 전자 상거래 비즈니스에 배포할 수 있습니다.

요구 사항

  • Debian 9 운영 체제의 가상 머신 또는 물리적 서버에 최소 설치
  • 루트 계정 권한 또는 sudo 명령을 통한 루트 권한이 있는 계정(콘솔을 통한 로컬 액세스 또는 SSH를 통한 원격 액세스)
  • 고정 IP 주소로 구성된 서버 NIC 중 하나
  • 공개적으로 등록된 도메인 이름으로 웹 인터페이스를 통해 설치를 수행하고 애플리케이션 웹사이트에 액세스할 수 있습니다. 인트라넷에서는 로컬 도메인 또는 서버 IP 주소를 통해 앱에 액세스할 수 있습니다.
  • 귀사에 구성된 메일 서버 또는 Gmail, Outlook, Yahoo!와 같은 공용 이메일 서비스에 대한 액세스

사전 요구 사항

먼저 Debian 서버 콘솔에 로그인하고 다음 명령을 실행하여 시스템 저장소, 커널 및 소프트웨어 패키지를 업데이트했는지 확인합니다.

apt update
apt upgrade

그런 다음 다음 명령을 실행하여 시스템 호스트 이름을 구성합니다. 이 항목에 사용된 호스트 이름 값을 자신의 표기법으로 바꿔야 합니다.

hostnamectl set-hostname www.mycrm.org

머신 호스트 이름이 올바르게 구성되었는지 확인하려면 아래 명령을 실행하십시오.

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

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

systemctl reboot

다음으로 Debian 시스템에 LAMP 소프트웨어 번들을 설치해야 합니다. 첫 번째 단계에서 서버 콘솔에서 다음 명령을 실행하여 애플리케이션이 제대로 실행되는 데 필요한 모든 필수 PHP 모듈과 함께 Apache 웹 서버 및 PHP 처리 게이트웨이 인터프리터를 설치합니다.

apt install apache2 libapache2-mod-php7.0 php7.0 php7.0-gd php7.0-opcache php7.0-mbstring php7.0-xml php7.0-json php7.0-zip php7.0-curl php7.0-imap php7.0-soap php7.0-mcrypt php-mailparse

다음으로 RDBMS 데이터베이스 백엔드를 설치합니다. 이 가이드에서는 MariaDB 데이터베이스를 백엔드로 사용하도록 EspoCRM 애플리케이션을 구성합니다. 다음 명령을 실행하여 MySQL 데이터베이스에 액세스하는 데 필요한 MariaDB 데이터베이스 및 PHP 모듈을 설치합니다.

apt install mariadb-server php7.0-mysql mariadb-client

Apache, MySQL 데이터베이스 및 PHP가 설치된 후 편집을 위해 PHP 기본 구성 파일을 열고 아래 설명된 대로 다음 PHP 변수를 수정합니다. 처음에 PHP 구성 파일을 백업했는지 확인하십시오.

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

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

file_uploads = On
default_charset = UTF-8
memory_limit = 256M
post_max_size = 50M
upload_max_filesize = 50M
memory_limit = 256M
max_input_time = 180
max_execution_time = 180
zend.assertions = 0
date.timezone = Europe/London

http://php.net/manual/ 링크에서 PHP 문서가 제공하는 표준 시간대 목록을 참조하여 실제 시간에 따라 time.zone 변수를 교체하십시오. ko/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 구성 파일을 닫고 변수가 올바르게 추가되었는지 확인하십시오. 아래 명령을 실행하여 수행할 수 있습니다.

grep opcache /etc/php/7.0/apache2/php.ini| grep -v ";"

다음으로 다음 명령을 실행하여 HTTP 트래픽이 방화벽을 통과하도록 허용하기 위해 시스템에 다음 UFW 방화벽 애플리케이션 규칙을 추가합니다.

ufw allow WWW

또는

ufw allow 80/tcp

일부 시스템 관리자는 데비안 서버에서 방화벽 규칙을 관리하기 위해 iptables 원시 규칙을 선호합니다. iptables의 경우 아래 명령을 실행하여 방화벽을 설치하고 다음 규칙을 추가하여 포트 80 및 22(SSH 원격 연결의 경우) 인바운드 트래픽을 허용하여 시스템에 액세스하고 웹 브라우저를 통해 애플리케이션을 탐색할 수 있습니다.

apt-get install -y iptables-persistent
iptables -I INPUT -p tcp --destination-port 80 -j ACCEPT
iptables -I INPUT -p tcp --destination-port 22 -j ACCEPT
netfilter-persistent save
systemctl restart netfilter-persistent
systemctl status netfilter-persistent
systemctl enable netfilter-persistent.service

마지막으로 브라우저를 열고 HTTP 프로토콜을 통해 데비안 컴퓨터 IP 주소 또는 도메인 이름을 방문합니다. 컴퓨터 IP 주소를 모르는 경우 ifconfig 또는 ip a 명령을 실행하여 서버의 IP 주소를 가져옵니다. 웹 서버에 대한 연결이 설정되면 브라우저에서 Apache 웹 서버 기본 웹 페이지를 볼 수 있어야 합니다.

http://your_domain.tld

다음 단계에서 아래 명령을 실행하여 Apache 재작성을 활성화하고 EspoCRM이 제대로 실행하는 데 필요한 SSL 모듈을 축소합니다.

a2enmod rewrite deflate ssl

SSL 모듈은 HTTPS 프로토콜을 통해 애플리케이션을 방문하기 위해 기본 SSL 구성 파일도 활성화해야 합니다. HTTPS 프로토콜은 서버와 클라이언트 간의 트래픽을 보호하는 데 사용됩니다. 다음 명령을 실행하여 Apache SSL 사이트 구성 파일을 활성화합니다.

a2ensite default-ssl.conf

그런 다음 텍스트 편집기로 Apache 기본 SSL 사이트 구성 파일을 열고 아래 샘플과 같이 DocumentRoot 지시문 뒤에 다음 코드 줄을 삽입하여 활성화합니다. .htaccess 파일에 배치된 규칙. .htaccess 파일은 일반적으로 도메인 웹루트 위에 있습니다.

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

SSL 사이트 구성 파일 발췌:

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

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

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

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

systemctl restart apache2

https://yourdomain.tld

인터넷에서 프로덕션을 위해 EspoCRM 플랫폼을 노출하려는 경우 클라이언트가 브라우저에 오류를 표시하지 않고 응용 프로그램을 방문할 수 있도록 신뢰할 수 있는 인증 기관에서 발급한 인증서를 구입하거나 Let's Encrypt CA에서 무료 인증서 쌍을 받는 것을 고려해야 합니다. .

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

ufw allow HTTPS

또는

ufw allow 443/tcp

iptables 방화벽의 경우 도메인 이름을 찾아볼 수 있도록 방화벽에서 포트 443 인바운드 트래픽을 허용하는 다음 규칙을 추가합니다. 시스템 재부팅 후 규칙을 적용하려면 iptables 서비스를 저장하고 다시 시작하십시오.

iptables -I INPUT -p tcp --destination-port 443 -j ACCEPT
netfilter-persistent save
systemctl restart netfilter-persistent
systemctl status netfilter-persistent

마지막으로 다음 명령을 실행하여 도메인 웹루트 경로에 PHP 정보 파일을 생성합니다.

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

아래 이미지와 같이 브라우저에서 다음 URL의 PHP 정보 스크립트 파일을 방문하여 PHP 설정 및 시간대 구성을 확인하십시오. 날짜 설정까지 아래로 스크롤하여 PHP 시간대 구성을 확인합니다.

https://domain.tld/info.php

다음 단계에서 MySQL 서버 콘솔에 로그인하고 아래 명령을 실행하여 MariaDB 루트 계정을 보호합니다. exit을 입력하여 데이터베이스 콘솔을 종료합니다.

mysql -h localhost
Welcome to the MariaDB monitor.  Commands end with ; or \g.

Your MariaDB connection id is 2

Server version: 10.1.26-MariaDB-0+deb9u1 Debian 9.1

 

Copyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab and others.

 

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(없음)]> mysql 사용;

Reading table information for completion of table and column names

You can turn off this feature to get a quicker startup with -A

 

Database changed

MariaDB [mysql]> 사용자 설정 플러그인 업데이트= 여기서 사용자=루트;

Query OK, 1 row affected (0.00 sec)

Rows matched: 1  Changed: 1  Warnings: 0

MariaDB [mysql]> 플러시 권한;

Query OK, 0 rows affected (0.00 sec)

 

MariaDB [mysql]> exit

Bye

또한 MariaDB 데몬의 보안을 강화하기 위해 mysql_secure_installation 스크립트를 실행합니다. 스크립트를 실행하는 동안 MySQL 루트 암호 변경, 익명 사용자 제거, 원격 루트 로그인 비활성화 및 테스트 데이터베이스 삭제와 같은 MariaDB 데이터베이스 보안을 위해 고안된 일련의 질문을 받게 됩니다. 아래 발췌문과 같이 모든 질문에 대해 \예를 입력합니다.

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 -h localhost -u root
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)

이제 루트 비밀번호로 데이터베이스에 로그인해 보십시오. 아래 명령 샘플과 같이 MySQL 콘솔에 액세스할 수 있어야 합니다.

mysql -h localhost -u root -p
Enter password:

Welcome to the MariaDB monitor.  Commands end with ; or \g.

Your MariaDB connection id is 15

Server version: 10.1.26-MariaDB-0+deb9u1 Debian 9.1

Copyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> exit

Bye

EspoCRM 설치

Apache HTTP 서버 이후, Debian 시스템에 EspoCRM 애플리케이션을 설치하기 위해 MariaDB 데몬 및 PHP 인터프리터가 올바르게 구성되었습니다. 여기에 언급된 명령줄 유틸리티를 설치하려면 다음 명령을 실행합니다.

apt install wget bash-completion zip unzip curl

다음 단계에서 EspoCRM 공식 다운로드 페이지(https://www.espocrm.com/download/)를 방문하고 wget 유틸리티를 통해 시스템에서 압축된 최신 zip 패키지를 가져옵니다. 이 튜토리얼 작성 당시 EspoCRM의 현재 릴리스는 EspoCRM-5.0.3입니다.

wget https://www.espocrm.com/downloads/EspoCRM-5.0.3.zip
ls

zip 아카이브 다운로드가 완료되면 zip 아카이브 파일을 현재 작업 디렉토리에 추출하고 아래 명령을 실행하여 추출된 파일을 나열합니다. 애플리케이션의 설치 파일은 EspoCRM-5.0.3 디렉토리에 있습니다.

unzip EspoCRM-5.0.3.zip
ls
ls -al EspoCRM-5.0.3

다음으로 webroot 디렉토리에서 index.html 및 info.php 파일을 삭제해야 합니다.

rm /var/www/html/index.html
rm /var/www/html/info.php

다음 명령을 실행하여 추출된 디렉토리에 있는 모든 파일을 웹 서버 문서 루트 경로에 복사하십시오. 또한 숨겨진 파일인 .htaccess를 웹루트 경로에 복사했는지 확인하십시오.

cp -rf EspoCRM-5.0.3/* /var/www/html/
cp EspoCRM-5.0.3/.htaccess /var/www/html/

다음으로 아래 명령을 실행하여 Apache www-data 계정에 웹 루트 경로에 대한 전체 쓰기 권한을 부여합니다. ls 명령을 사용하여 /var/www/html/ 디렉터리에 있는 EspoCRM 설치 파일에 대한 권한을 나열합니다.

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

다음으로 MariaDB 데이터베이스 콘솔에 로그인하고 EspoCRM 데이터베이스를 생성합니다. 데이터베이스에 대한 설명이 포함된 이름을 사용하고 이 데이터베이스를 관리할 강력한 암호를 가진 사용자를 생성합니다. 이 예제에 사용된 데이터베이스 이름, 사용자 및 암호를 고유한 값으로 바꿉니다. 이 단계에 사용된 명령은 아래 발췌문에 나와 있습니다.

mysql –u root -p
Welcome to the MariaDB monitor.  Commands end with ; or \g.

Your MariaDB connection id is 2

Server version: 10.1.26-MariaDB-0+deb9u1 Debian 9.1

 

Copyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab and others.

 

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(없음)]> 데이터베이스 생성 espocrm_db;

Query OK, 1 row affected (0.00 sec)

MariaDB [(없음)]> espocrm_db.*에 대한 모든 권한을 password1234로 식별된 crm_user@localhost에 부여합니다.

Query OK, 0 rows affected (0.00 sec)

MariaDB [(없음)]> 플러시 권한;

Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> exit

Bye

이제 EspoCRM 플랫폼 설치 프로세스를 진행하기 위해 브라우저를 열고 HTTPS 프로토콜을 통해 서버의 IP 주소 또는 도메인 이름을 탐색합니다. 첫 번째 설치 화면에서 EspoCRM 설치 프로그램은 환영 메시지와 설치 언어를 선택할 수 있는 목록을 표시합니다. 제시된 목록에서 적절한 언어를 선택하고 아래 이미지와 같이 설치 프로세스를 시작하기 위해 시작 버튼을 누르십시오.

https://yourdomain.tld

다음 화면에서 사용권 계약 내용을 읽고 \동의함\ 확인란을 선택한 후 다음 버튼을 눌러 다음 단계로 이동합니다.

다음 설치 화면에서 MySQL 데이터베이스 연결 설정을 설정합니다. EspoCRM 애플리케이션용으로 구성된 MySQL 데이터베이스 호스트 주소(127.0.0.1 또는 localhost), 데이터베이스 이름, 사용자 이름 및 비밀번호를 제공합니다. 필요한 모든 데이터베이스 필드를 완료한 후 다음 버튼을 눌러 다음 설치 단계로 이동합니다. 아래 스크린샷을 가이드로 사용하여 이 단계를 완료하세요.

다음 화면에서 EspoCRM 설치 프로그램은 모든 권장 MySQL 변수와 PHP 모듈 및 설정이 올바르게 구성되었는지 확인하기 위해 서버 환경 구성을 확인합니다. 모든 구성이 통과되면 설치 버튼을 눌러 EspoCRM 설치 프로세스를 시작합니다.

다음 단계에서 EspoCRM용 관리자 계정을 추가하고 이 관리자 계정에 대한 강력한 암호를 설정합니다. 완료되면 다음 버튼을 눌러 설치 프로세스를 계속 진행하십시오.

다음으로 적절한 날짜 형식 및 시간 형식을 선택하여 EspoCRM 시스템 설정을 설정합니다. 또한 제공된 시간대 목록에서 가장 가까운 대륙/도시를 선택하여 애플리케이션에 적합한 시간대 설정을 선택하십시오. 주의 첫 번째 요일, 응용 프로그램 기본 통화, 천 단위 및 소수점 구분 기호 및 시스템 언어를 설정합니다. 위의 모든 설정이 구성되면 다음 버튼을 눌러 설치 프로세스를 계속하십시오.

다음 단계에서 EspoCRM 발신 메일 설정을 구성합니다. \From Name\ 이메일 헤더의 이름과 관리자 계정의 이메일 연락처 주소를 추가합니다. 이 주소는 외부 고객에게 이메일을 보내는 데 사용됩니다. 또한 이메일 서버 주소, 메일 서버의 포트 번호를 추가하고 인증 확인란을 선택하고 해당하는 경우 서버 인증 자격 증명과 보안 수준을 제공하십시오. 이 단계를 마치면 다음 버튼을 눌러 설치 프로세스를 완료하십시오.

데이터베이스 구조를 가져오고 모든 플랫폼 설정이 애플리케이션 구성 파일에 기록되면 설치 프로세스가 완료됩니다. 설치 프로그램은 설치가 성공적으로 완료되었음을 알리는 메시지를 표시하고 서버 crontab 파일에 추가해야 하는 EspoCRM 예약 작업에 대한 메모를 표시합니다.

CRM 애플리케이션에 액세스하고 관리하려면 브라우저를 열고 HTTPS를 통해 서버 IP 주소 또는 도메인 이름으로 이동하십시오. 아래 스크린샷과 같이 EspoCRM 백엔드 패널에 로그인하려면 설치 프로세스 중에 구성된 자격 증명을 사용하십시오.

https://yourdomain.tld

기본 EspoCRM 대시보드에는 지금까지 데이터가 포함되어 있지 않아야 합니다. EspoCRM 초기 대시보드의 미리보기는 아래 스크린샷에 나와 있습니다.

EspoCRM 플랫폼 설정을 추가로 구성하려면 3개의 수평선이 있는 오른쪽 상단 아이콘을 누르고 아래 이미지와 같이 하향식 메뉴에서 관리 링크를 누릅니다.

방문자가 서버와 클라이언트 브라우저 간의 트래픽을 암호화하는 HTTPS 프로토콜을 통해 EspoCRM 백엔드 인터페이스에 안전하게 액세스하도록 하려면 서버 터미널로 돌아가서 웹사이트 문서 루트 경로에 있는 .htaccess 파일을 편집하십시오. , 아래 명령을 실행하여.

nano /var/www/html/.htaccess

.htaccess 파일에서 줄을 검색하고 RewriteEngine On 뒤에 아래 규칙을 추가합니다. 문은 자동으로 모든 도메인 트래픽을 HTTPS로 리디렉션합니다.

# Redirect to HTTPS
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{SERVER_NAME}/$1 [R,L]

상단에서 응용 프로그램 스토리지로의 대용량 파일 업로드를 지원하기 위해 upload_max_filesizepost_max_size PHP 변수의 증가된 값과 같은 기본 PHP 서버 설정을 변경할 수 있는 파일 . 이러한 PHP 설정은 매우 주의하여 수정하십시오. 이러한 변수가 서버 리소스 및 구성과 일치하는지 확인하십시오.

# Modify PHP settings
php_value session.use_trans_sid 0
php_value register_globals 1
php_value upload_max_filesize 100M
php_value post_max_size 100M

다음으로 예약된 작업을 crontab 데몬 파일에 추가하기 전에 아래 명령을 실행하여 테스트합니다. crontask 작업은 Apache HTTP 서버 런타임 계정 권한으로 실행해야 합니다.

sudo -u www-data /usr/bin/php7.0 -f /var/www/html/cron.php

마지막으로 아래 명령을 실행하여 Apache www-data 계정이 소유한 다음 crontab 작업을 추가합니다.

crontab -u www-data –e

Crontab 파일 발췌:

*    *    *    *    *     /usr/bin/php7.0 -f /var/www/html/cron.php > /dev/null 2>&1

그게 다야! Debian 9에서 EspoCRM 플랫폼을 성공적으로 설치 및 구성했습니다. EspoCRM 플랫폼과 관련된 기타 설정은 다음 주소의 문서 페이지를 참조하세요. https://www.espocrm.com/documentation/