[마젠토2] PHP7에 마젠토2 설치하는 방법 ( 개발환경설치 )

9
859

안녕하세요! 이번에 쇼핑몰 개발을 위해 아마존 EC2에 개발환경을 구성해 보았습니다. 지금까지는 비트나미 LAMP 스택으로 간단히 환경을 구성하였는데, 마젠토2가 PHP7에서 훨씬 좋은 퍼포먼스를 보이기 때문에 PHP7로 직접 스택을 구성을 했습니다. 아직까지는 PHP7로 구성되어 있는 LAMP스택이 없거든요.

마젠토에서 제공해주는 설치환경구성페이지를 바탕으로 설치를 진행하였습니다.

구성환경은 다음과 같습니다. 대부분 가장 최신 stable 버전으로 구성했습니다.  자체서버나 AWS, VPS 서버를 사용하셔야 되시고, 공용호스팅에서는 구성하기가 힘듭니다.  공용호스팅이나 그냥 쇼핑몰 사용을 위한 쉬운 기본 설치에 대해서도 포스팅을 남길예정입니다.

1. 우분투 UBUNTU 14.04 LTS 

2. APACHE 2.4.7

3. MYSQL 5.6

4. PHP 7.02

5. MAGENTO 2.04

6. PHPMYADMIN 4.6.0

7. REDIS 3.0.7

8. VARNISH

9. COMPOSER

10. GIT


설치 과정


1. 리눅스 설치 및 구성

- 아마존 AWS에서 Ubuntu 14.04 LTS 인스턴스 생성
- 사용자생성 : adduser 유저이름
- 사용자에게 관리자 권한 부여 : sudo usermod -aG sudo 유저이름
- ssh접속을 위한 키 저장소 생성 : mkdir /home/유저네임/.ssh
- 마젠토 설치를 위한 폴더 생성 : mkdir /home/유저네임/public_html
- 키저장소 권한 변경 : chmod 700 /home/유저네임/.ssh
- ubuntu계정의 키를 복사 : cp /home/ubuntu/.ssh/authorized_keys /home/유저네임/.ssh/
- 키의 권한 변경 : chmod 600 authorized_keys
- 패키지저장소 업데이트 : sudo apt-get update
- 패키지 업그레이드 : sudo apt-get upgrade
- FTP 서버 설치 : sudo apt-get install vsftpd
- 정상적으로 설치되었는지 확인 : sudo netstat -a | grep ftp
- FTP 서버 접속환경 설정 : sudo vi /etc/vsftpd.conf
- FTP 서버 재시작 : sudo service vsftpd restart

2. 웹서버 설치 및 구성 ( 아파치 )

- 웹서버설치 : sudo apt-get install apache2
- url리다이렉트모듈 활성화 : sudo a2enmod rewrite
- 웹서버 기본 루트 폴더 설정 : sudo vi /etc/apache2/apache2.conf
- 루트 폴더를 /var/www/ 에서 /home/유저네임 로 변경
- 웹사이트 설정 : sudo vi /etc/apache2/available-sites/000-default.conf

3. Mysql 설치 및 구성

  - 램이 1024M 이하이면 설치때 에러가 발생하기 때문에 swap 만들기 : sudo dd if=/dev/zero of=/mnt/swap.0 bs=2048 count=1048576
  - swap 만들기 : sudo mkswap /mnt/swap.0
  - 루트사용자로 변경 : sudo su
  - swap 만들기 : echo "/mnt/swap.0 swap swap defaults 0 0" >> /etc/fstab
  - swap 활성화 : swapon /mnt/swap.0
  - swap 상태확인 : swapon -s
  - Mysql 설치 : sudo apt-get -y install mysql-server-5.6 mysql-client-5.6
  - Mysql 보안관리 : mysql_secure_installation
  - Mysql 설정 변경 : sudo vi /etc/mysql/my.cnf
    /max_allowed_packet 128M 로 수정
  - Mysql 로그인 : mysql -u root -p
  - 상태 확인 : SHOW VARIABLES LIKE 'max_allowed_packet';
  - 데이터베이스 만들기 : create database 데이터베이스이름;
  - 데이터베이스 사용자 만들기 : GRANT ALL ON 데이터베이스이름.* TO 유저네임@localhost IDENTIFIED BY '비밀번호';

4. PHP7 설치 

  - PHP7을 위한 패키지저장소 설정 : sudo add-apt-repository ppa:ondrej/php
  - 패키지저장소 업데이트 : sudo apt-get -y update
  - PHP7 설치 : sudo apt-get install -y php7.0 libapache2-mod-php7.0 php7.0 php7.0-common php7.0-gd php7.0-mysql php7.0-mcrypt php7.0-curl php7.0-intl php7.0-xsl php7.0-mbstring php7.0-zip php7.0-bcmath php7.0-soap
  - PHP7 상태확인 : php -v

5. 콤포저 설치 ( COMPOSER ) - 마젠토 패키지 설치 및 관리 도구 
( 설치안내페이지 : https://getcomposer.org/download/ )

아래 코드는 예시이며, 매번 버전 업데이트에 따라 코드가 변경되니, 위의 설치 안내 페이지에 가셔서 최신 버전에 맞는코드로 설치를 진행하시면 됩니다.

  - php -r "readfile('https://getcomposer.org/installer');" > composer-setup.php
  - php -r "if (hash('SHA384', file_get_contents('composer-setup.php')) === '7228c001f88bee97506740ef0888240bd8a760b046ee16db8f4095c0d8d525f2367663f22a46b48d072c816e7fe19959') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
  - php composer-setup.php --install-dir=/bin --filename=composer
  - php -r "unlink('composer-setup.php');"

6. 마젠토 설치 

  - 사용자홈으로 이동 : cd /home/유저네임
  - 콤포저로 다운로드 : php /bin/composer create-project --repository-url=https://repo.magento.com/magento/project-community-edition ./public_html
  - 사용자를 www-data그룹에 넣기 : usermod -aG www-data 유저네임
  - 사용자홈의 그룹권한을 www-data로 변경 : chown -R :www-data .
  - 권한 설정 : find . -type d -exec chmod 770 {} \; && find . -type f -exec chmod 660 {} \; && chmod u+x bin/magento
  - 브라우저에서 자기ip/setup 로 이동 
  - 설치 화면에서 데이터베이스 정보 및 사용자 정보 입력 후 설치 진행
  - 샘플데이터 다운로드 : php home/유저네임/public_htm/bin/magento sampledata:deploy
  - 샘플데이터 설치 : php home/유저네임/public_html/bin/magento setup:upgrade
  - 크론잡 설정 : crontab -u sbl -e


7. 레디스 설치
  - 패키지업데이트 : sudo apt-get update
  - 빌드패키지설치 : sudo apt-get install build-essential
  - 빌드소프트웨어설치 : sudo apt-get install tcl8.5
  - 레디스다운로드 : wget http://download.redis.io/releases/redis-stable.tar.gz
  - 압축풀기 : tar xzf redis-stable.tar.gz
  - 압축푼폴더로이동 : cd redis-stable
  - 빌드 : make
  - 빌드테스트 : make test
  - 레디스설치 : sudo make install
  - 유틸폴더로 이동 : cd utils
  - 스크립트 실행 : sudo ./install_server.sh
  - 레디스 실행 : sudo service redis_6379 start ( 정지 : sudo service redis_6379 stop )
  - 레디스 커맨드라인 : redis-cli
  - sudo update-rc.d redis_6379 defaults
  - sudo nano /etc/redis/6379.conf

8. VARNISH 설치 ( 바니쉬 설치하기 포스트 )


9. PHPMYADMIN 설치

  - phpmyadmin.net 에서 최신 버전 다운로드 ( 2.45버전이상만 php7 지원 )
  - ftp 로 업로드 후 압축풀기
  - config.sample.inc.php -> config.inc.php 로 변경
  - config.inc.php 에서 allownopassword 부분을 true로 변경
  - ./libraries/config.default.php 에서 checkconfigurationpermissions 를 false로변경

10. GIT 설치 및 GITLAB 

  - git설치 : sudo apt-get install git
  - 마젠토 설치 폴더로 이동 : cd /home/유저네임/public_html
  - git로컬저장소 생성 : git init
  - 버전관리안할 파일설정 : vi .gitignore 에 phpmyadmin/ 추가
 
  git을 이용하여 버전관리를 할때 원격저장소를 많이 이용하는데, 대표적인 것으로 github, bigbucket, gitlab 등이 있습니다. 저는 gitlab을 이용합니다. 
 깃랩을 이용하려면 먼저 가입을 한뒤, 프로젝트를 생성해야합니다. 그리고 난뒤 아래 명령어로 원격저장소를 설정하면됩니다.

  - 원격저장소 설정 : git remote add origin git@gitlab.com:smileboylab/magento2.git
  - 원격저장소 확인 : git remote -v
  - 원격저장소 내용 확인 : git remote show origin
  - 원격저장소 삭제 : git rumote rm origin
  
  - 파일변경사항 저장 : git add .
  - 파일 커밋 : git commit -a -m "first commit"
  - 푸시 환경 설정 : git config --global push.default simple
  - 푸시 환경 설정 : git push --set-upstream origin master
  - 파일 푸시 : git push


demo.smileboylab.com 으로 가보시면 있을수도 있고, 없을수도 있습니다. 개발 안할때는 인스턴스를 꺼놓을꺼라서요.
확실히 속도가 빠르기는 하네요. ㅎ
따라하시다가 모르시는 부분에 대해 물어보시면 아는 범위에서 답변드릴께요.

9 COMMENTS

  1. 안녕하세요
    좋은 글 잘 봤습니다.
    다름이 아니라 따라하는 중에
    콤포져 설치에서 echo ‘Installer corrupt 가 뜹니다.
    똑같이 복붙했는데 왜 그러는지 잘 모르겠네요
    혹시 도와주신다면 무척 고마울것 같습니다
    고맙습니다.

    • 제가 답글을 다른 글에 다가 달아놓고 이제서야 발견했네요. ^^;; 아직까지 필요하시면 참고하세요.

      아! 네. 제가 명확히 글을 작성한뒤 확인을 미처할 시간이 없어서 놓친 부분이 있었네요. 콤포저설치코드는 버전이 업데이트 될때마다 다른 인증 코드로 변경이 되서 변경된 코드로 설치를 해야되세요. https://getcomposer.org/download/ <- 이 페이지로 가셔서 그곳에 있는 코드로 설치를 진행하시면 되실꺼예요. 현재 코드가 다음과 같네요. php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" php -r "if (hash_file('SHA384', 'composer-setup.php') === '92102166af5abdb03f49ce52a40591073a7b859a86e8ff13338cf7db58a19f7844fbc0bb79b2773bf30791e935dbd938') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;" php composer-setup.php php -r "unlink('composer-setup.php');" 해보시고 안되시면 다시 말씀해주세요. 도움이 되었으면 좋겠네요. 그리고 혹시나 마젠토 공부하신다니 앞으로도 서로 공유할수 있는 부분이 있으면 좋겠네요.

  2. 안녕하세요~
    자세하게 잘 써주셔서 보고서 따라 설치하고 있는데요.

    ftp를 접속하려 했는데, ubuntu로만 접속이 되고 제가 추가한 유저명으로는 안되네요.
    Disconnected: No supported authentication methods available (server sent: publickey)
    라고 에러가 납니다.

    default username을 변경할 방법이 있는건지… 아니면 제가 추가한 유저명으로 ftp가 가능할 방법이 있을지 여쭤봅니다.

    • 아! 안녕하세요. 저도 이렇게 셋업을 하고, 사용했는데 갑자기 그런 현상이 발생하더라구요. 그게 AWS 보안 정책상 그런 문제가 생기는 거 같아요. 비밀번호로 접속할 수 있게 바꾸는 방법도 있기는 한데, 그렇게 해보니까 오히려 번거롭기만 하고 보안에 더 취약해질꺼 같아서, 전 그냥 유저 만들고, 아파치 기본 폴더 생성하는 과정은 생략하고, 간단히 ubuntu 유저로 사용하고, 아파치 기본 폴더인 /var/www/html 로 사용하고 있어요. 이게 더 간단하더라구요. 다시 말씀드리면 유저만드는 과정은 생략하시고, 그냥 /var/www/html 에 마젠토를 설치하시면 되세요. 비밀번호로 접속하고, ftp 이용할 수 있게 하는 방법은 제가 따로 포스팅 해드릴께요.

  3. 안녕하세요.
    궁금한게 있어서요..
    보면 마젠토 설치위치가 /var/www/html 로 하는거 같은데,
    마젠토 설치시에 ./public_html 을 만들어서 거기다가 넣는거 같거든요.
    그래서 루트 경로르 /var/www/html/public_html 로 해놓고 설치를 하면..
    설치 완료후에 ip로 들어가보면 css랑 js가 안먹은 상태로 출력이 되구요.
    어드민 페이지는 not found로 뜨고.. 메인에서 링크된것들 클릭하면 not found로 뜨고..
    경로문제인거 같은데.. 어디를 손봐야할지를 모르겠어서;;;
    혹시 아시는 부분이 있으시면 도움주시면 감사하겠습니다..

    • 네.마젠토 설치 위치는 /var/www/html 이나/var/www/html/public_html 어디든 하셔도 상관없으세요. 그런데 마젠토를 설치한 위치를 아파치 (웹서버) 설정에서 루트디렉토리로 설정을 해주셔야 되세요.
      터미널에서 이렇게 치시고, sudo vi /etc/apache2/sites-available/000-default.conf , 루트 디렉토리를 DocumentRoot /var/www/html 에서 DocumentRoot /var/www/html/public_html 로 바꿔주신 다음, 아파치를 재시작해주시면 되실꺼예요. sudo service apache2 restart.

      아! 그리고 이렇게 하신 상태시면, 혹시나 아파치 리다이렉트 모듈을 활성화시키셨나요? 활성화는 sudo a2enmod rewrite 명령어로 하시면 되시구요.

      아니면 index.php 리다이렉트 설정을 .htaccess 파일에서 하셔야 되세요. 마젠토 설치 디렉토리에서 sudo vi .htaccess 로 들어가셔서 아래 내용이 있는지 확인하시고 없으면 추가해주세요

      IfModule mod_rewrite.c>

      RewriteRule .* index.php [L]

      /IfModule>

      이것도 아니라면 마젠토 스테이틱 콘텐츠를 갱신해주시면 되세요. 마젠토 설치 디렉토리에서 php ./bin/magento setup:static-content:deploy 을 해보세요.

      이렇게 하면 웬만하면 정상적인 화면을 보실수 있으실꺼예요

      • 말씀하신대로 해봤는데요.
        – 루트디렉토리 변경 – 했음
        – 리다이렉트 모듈 – 되있었음
        – .htaccess – 위 내용 있음
        – 스테이틱 콘텐츠 – 했음
        스테이틱 콘텐츠 갱신부분을 하니까 메인페이지에 css가 먹어서 제대로된 화면이 떴는데,
        어드민 페이지와 서브페이지들이 전부 not found로 나와서요…
        이부분에 대해서도 혹시 아시는게 있으시면 도움 부탁드립니다;;;

LEAVE A REPLY

Please enter your comment!
Please enter your name here