그누보드 클라우드 배포
처음으로 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();

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를 이용하면서도 이를 뛰어넘을 솔류션

- /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 [평범한 이야기들]