PHP

그누보드 클라우드 배포

코딩공부 2021. 11. 24. 00:19

처음으로 php를 사용하면서 그누보드로 로컬에서 프로젝트 마무리 한 후 클라우드 서버에 배포하면서 사용한 방법

 

설치 환경

Cloud server : iwinv 서버

DNS : 블루웹 

OS : Linux ubuntu20.04 

Lang : Php

DB : Mysql

 

1. 블루웹에서 도메인 주소를 구입 - 예제 : ktest.com

2. iwinv에서 클라우드 서버 ( 호스팅 서버) 를 구입  - 예제 : 123.123.123.123 

3. 블루웹에서 네임서버 연결을 함 ( 도메인과 호스팅 서버를 연결 ) - A 레코드 

4. 호스팅 서버에 ssh로 연결 하여 기본 환경 세팅을 진행

 

Ubuntu 패키지 업데이트

sudo apt update - 저장소의 패키지 목록 업데이트
sudo apt upgrade - 기존 설치 되어 있는 패키지 업그레이드
sudo apt autoremove - 불필요한 패키지 자동 삭제

 

apache2 설치하기

sudo apt install apache2
sudo service apche2 start 

- 123.123.123.123 접속시에 Apache2 Ubuntu Default Page 출력 되면 설치 완료

 

Mysql 설치

sudo apt install mysql-server
sudo mysql_secure_installation - Mysql 보안 스크립트  실행

- 보안 정책 질문들이 나오고 답변을 입력해주면 됨

 

PHP 설치

sudo apt install php libapache2-mod-php php-mysql

PHP를 설치한다. php에서 apache2와 mysql 사용할 수 있게 해주는 모듈을 함께 설치

 

sudo apt install php-{bz2,imagick,imap,intl,gd,mbstring,pspell,curl,readline,xml,xmlrpc,zip}

- 기본적으로 사용하는 익스텐션을 더 설치

 

apache 홈 디렉토리 위치 : /var/www/html

해당 위치에서 index.php 생성 해서 붙여 넣기

<?php
    phpinfo();

기본적인 php 정보가 출력되는 페이지가 나오면 php 설치 완료

 

5. Ubuntu 보안설정 ( iptables ) 

ssh, ftp, sftp, mysql 등 in/out 설정 

IPtables 사용전, UFW 사용 중지 및 방화벽 설정 초기화

 

ufw disable

- Iptables를 설정하기 전에 먼저 UFW를 사용 중지

 

iptables -F

방화벽 설정을 모두 초기화

 

[ iptables-persistent ] 

- 보안 프로그램들은 다시 시작하면 기존 설정이 초기화

- 우분투(Ubuntu)에서 이는 특히 피할 수 없이 나타는 현상이므로 이를 해소할 수 있는 패키지

 

apt-get install iptables-persistent netfilter-persistent

- netfilter-persistent 같이 설치

- netfilter는 IPtabels를 이용하면서도 이를 뛰어넘을 솔류션

 

&nbsp; ip4/ip6 저장 여부를 묻는데 yes를 선택

- /etc/iptables 라는 폴더에 rules.v4와 rules.v6가 생성

 

 

sudo netfilter-persistent save

- save 명령어로 저장

sudo netfilter-persistent reload

- reload 명령어로 다시 불러오기

iptables -S

- 정책 확인

 

sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
sudo iptables -A OUTPUT -m conntrack --ctstate ESTABLISHED -j ACCEPT

- established and related 접속 허용

-일반적으로 네트워크 트래픽은 양방으로 흘러야 합니다. 때문에 established and related 접속 허용

 

sudo iptables -A INPUT -i lo -j ACCEPT

- loopback 허용

- 많은 소프트웨어들이 localhost 어댑터와 통신이 되어야 하기때문에 필요

 

sudo iptables -A INPUT -p icmp -j ACCEPT

- ping 허용 

 

sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT

- http/https 허용

- 80포트 및 443포트 허용

 

sudo iptables -I INPUT -p tcp --dport 22  -j ACCEPT

- SSL/SFTP 

 

sudo iptables -I INPUT 1 -p tcp --dport 3306 -j ACCEPT

- mysql 열기

 

sudo iptables -P INPUT DROP
sudo iptables -P FORWARD DROP

- INPUT 과 FORWARD 차단 

- 기본적인 것들을 허용 했기때문에 나머지 차단

 

sudo netfilter-persistent save

- 기본 설정 후 저장 

 

sudo netfilter-persistent start

- iptables 재시작

iptables -S

- iptables 정상 작동 확인 

 

 

6. 프로젝트 통으로 /home/ktest/ 폴더에 저장

 

Apache2 웹서버 루트디렉토리 변경방법

 

 

 

7. apache 설정 변경

 

1) 아파치 웹서버 설정 파일 수정

sudo nano /etc/apache2/apache2.conf
 

- /var/www/ --> /home/ktest/ 로 경로 수정


<Directory /home/ktest/>

        Options Indexes FollowSymLinks

        AllowOverride None

        Require all granted

</Directory>


2) 아파치 웹서버의 사이트 설정파일 수정

sudo nano /etc/apache2/sites-available/000-default.conf

- DocumentRoot 를 수정


DocumentRoot /home/ktest/


 

3) apache restart 

sudo service apche2 restart 

 

 

8. php.ini 파일 수정 

 

sudo vim /etc/php/7.4/apache2/php.ini

- 해당 파일 내용 수정 

upload_max_filesize = 100M

post_max_size = 150M

memory_limit = 256M

date.timezone = Asia/Seoul

short_open_tag=On

*주의사항 : memory_limit > post_max_size > uplad_max_filesize 순으로 설정

sudo /etc/init.d/apache2 restart

 

9. DB 파일 dump restore 하기 

 

 

 

[진행중 이슈 사항]

 

- 외부에서 DB dump후에 restore 처리 하는과정에서 caching_sha2_password 에러 발생

추후 업데이트 

 

- dbconfig.php 수정까지 완료하고 서버 접속시에 500error가 발생 ( php 쇼트태그 이슈 발생 ) 

  소스 중에 head.php에 <?php가 아닌 <? 만 적혀 있어서 php 쇼트태그 이슈 발생  

 

 

 

출처: https://yoshikixdrum.tistory.com/214 [평범한 이야기들]