sugang
sugang'study
sugang
전체 방문자
오늘
어제
  • 분류 전체보기
    • [OS]
    • [취업정보]
    • [Server]
    • [Algorithm]
    • [Database]
    • [MyTravel]
    • [Network]

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • n

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
sugang

sugang'study

[Server] Mac -AWS 서버 구축 - nginx, php, mysql 설치, phpmyadmin 설치
[Server]

[Server] Mac -AWS 서버 구축 - nginx, php, mysql 설치, phpmyadmin 설치

2021. 7. 10. 00:11

AWS란?

aws 가입 후 인스턴스 - 인스턴스 시작

2-1. Amazon Machine Image (AMI) 선택

위치를 반드시 서울로 지정해야한다.

 

인스턴스 생성-

구현하고자 하는 서비스에 따라 os를 선택- Ubuntu 20.04

2-2. 보안그룹구성

말 그대로 내 인스턴스의 접속에 대한 보안에 관련된 옵션을 설정하는 부분이라 악용될 수 있으니 주의.

SSH 소스옵션: 내 ip → 터미널을 사용해 EC2에 접속할 때 사용하는 포트, 직접 관리하는 사람만 접근

웹서버: 프로토콜 HTTP/HTTPS 추가 필요 소스: 사용자 지정

만약 HTTP/HTTPS에 대한 소스를 내 IP로 지정한다면 다양한 사용자가 아닌 나 자신 Local IP로만 접속이 가능하기 때문에 이 점 유의해서 SSH 와 HTTP/HTTPS를 구분지어 설정

2-3.탄력적 ip주소를 할당받고 연결해준다.

인스턴스를 중지시켰다 다시 실행하면 ip가 바뀌는데, 이를 방지해준다.

  1. ec2 터미널에 연결 - 다운로드 받은 키가 있는 디렉토리에서 진행한다.

명령어 입력: chmod 400 SuKey.pem

chmod 를 통해 key파일의 권한을 설정하는데 자꾸 권한이 없다는 오류가 떠서 미칠뻔했다. 결론은 내가 키파일을 잠궈놓고 명령을 쳐서 그랬다. 잠금을 해제한 후 sudo 명령으로 해결되었다.

 

저 예의 문장을 복사하여 터미널에 입력한다.

 

aws 우분투 접속 완료!

우분투에 nginx, php, mysql 설치하기

가장 먼저, sudo apt update로 모든 패키지를 최신버전으로 업데이트 해준다.

nginx 설치 : sudo apt install nginx

→ sudo service nginx start 로 서버 구동 후 인스턴스의 ip 주소로 들어가면 nginx 페이지를 볼 수 있다.

정상적으로 구동하는지 구동 체크 (worker, master 존재 시 정상..) : ps -ef | grep nginx

옳은 포트에서 구동되는지 포트 스캔 : sudo netstat -ntlp

 

사이트 접속 불가 시

더보기

 

 

방화벽 때문.

ec2는 보안그룹을 이용해서 접근을 제어하기 때문에, ec2 대시보드->보안그룹-> 인바운드 규칙을 체크해보자.

22번 TCP 포트만 가능하도록 설정되어있었다. 

웹의 포트인 80번 포트에서 접근가능하도록 규칙을 추가한다. 

누구나 웹에 접근가능! (ssh 는 myIP로만 하자.) 

Apache 설치 : sudo apt install apache2

버전확인

 

아파치 삭제,, 

; 아파치 웹서버 삭제

$ service apache2 stop

$ apt-get remove apache2*

$ apt-get --purge remove apache2*

$ apt-get autoremove

; 아파치 웹서버 캐시 클리닝 대몬 삭제

$ service apache-htcacheclean stop

$ apt-get remove apache*

$ apt-get --purge remove apache*

$ apt-get autoremove

; 마지막으로 OS를 최신상태로

$ apt update

$ apt upgrade

 

php 설치 :sudo apt-get install php

php 설치 확인

/var/www/html/phpinfo.php 파일을 생성해준다.

이 디렉토리에서는 관리자가 아니라면 파일을 생성, 삭제가 불가능하기 때문에 sudo를 꼭 입력해야한다.

파일생성 명령어: touch

i 를 눌러 파일내용 <?php phpinfo(); ?> 를 입력한 후 ESC, shift+zz 로 저장&파일닫기

 

  • nginx & php 연동apache 서버와 비교했을때 apache 웹서버는 자체 내에서 php와 연동시키게 해주는 모듈을 configuration 파일로 자동으로 설정을 하도록 하고 있는 반면, nginx에서는 php와 연동할 수 있도록 하는 php-fpm을 따로 설치해주고 nginx configuration파일에서 설정을 수동으로 해줘야한다.nginx 의 기본 설정파일 (/etc/nginx/sites-available/default) 에서 →반드시 sudo!!또한 44번째 줄에 index 뒤에 index.php (나는 phpinfo.php도 추가함) 을 추가로 작성한다.
  • $ sudo vi /etc/nginx/sites-available/default
  • Php의 연동을 위해서 56,57,60 번째 주석을 해제하고 92번째에 } 를 추가해준다.
  • $ sudo apt install php-fpm
  • php-fpm은 웹서버인 nginx와 php가 서로 연동시키는데 필요하다.

nginx 기본 설정을 수정한 후 restart 필수 !!! $ sudo service nginx restart

이 때 Ubuntu18.04 는 php-fpm 버전이  7.2이기 때문에  맞게 변경해준다.

 

오류발생

더보기

이미 HTTP 포트 80 에 바인딩된 프로세스가 있습니다 . ( 기본적으로 apache2가 시작되기 때문)

sudo service apache2 stop
sudo systemctl restart nginx

mysql 설치 

mySQL 설치 : sudo apt install mysql-server

  • 비밀번호 설정: sudo mysql_secure_installation
  • mysql 접속: sudo mysql -u root -pphpMyAdmin 설치

 

PHPMyAdmin 설치

 

PHPMyAdmin이란? mysql을 GUI로 관리할 수 있는 무료 소프트웨어 도구

1. sudo apt-get install phpmyadmin

분홍색 창이 뜨면

  1. apache와 lighttpd 를 고르는 창에서 나는 nginx 므로 tap 누름
  2. 나머지 yes / 비밀번호 입력

2. 심볼릭 링크 설정

심볼릭 링크 : 윈도우의 바로가기처럼 링크를 연결하여 원본 파일을 직접 사용하는 것과 같은 효과를 내는 링크로,특정 폴더에 링크를 걸어 NAS, library 원본 파일을 사용하기 위해 심볼릭 링크를 사용한다.

$ sudo ln -s /usr/share/phpmyadmin /var/www/html/phpmyadmin

nginx 설정 디렉터리에 php 설정이 안 된 부분이 있다면 nginx 설정파일에 심볼릭링크를 설정해준다.

Nginx 서버 블록 파일에 포함 할 수있는 snippet을 만든다.

sudo vim /etc/nginx/sites-available/default

 

43번째 줄 Add index.php to the list if you are using PHP 아래 줄에

index.php 파일(phpinfo() 코드를 작성한 파일) 을 추가해준다.

%주의%

index.php를 index.nginx-debian.html보다 앞에 작성하게 된다면 공인ip를 입력할 때 default로 index.php가 나온다. 원치 않는다면 index.nginx-debian.html보다 뒤에 index.php를 작성한다.

저장 뒤 $ sudo service nginx restart

3. 서버테스트

웹 브라우저에서 ec2 ip주소/phpmyadmin/index.php으로 접속하여 확인한다.

주소창에 ec2인스턴스주소로 접근해보면 phpinfo창은 안 뜨고 index.php가 다운로드된다..

—> nginx와 php 가 연동되지 않았었다. 다시 해보니 잘된다. 

MAC 은 앞서 말했듯이, 웹 브라우저가 이미 설치된 상태이므로 80이 아닌 8080을 사용해줘야한다. 

접속 확인

사용자명: 이전 mysql database에 추가한 user ID

암호: user ID에 설정한 password

-> phpmyadmin/index.php 파일이 열림

Document Root인 /var/www/html/phpmyadmin은 해킹봇들의 target이 되기 때문에 /var/www/html/milli 와 같이 symbolic link의 이름을 변경해두는것이 좋다

(sudo ln -s /usr/share/phpmyadmin /var/www/html/lisugang)

참고링크: https://well-made-codestory.tistory.com/13?category=945063

'[Server]' 카테고리의 다른 글

[Server] AWS 서버 구축 - gabia로 도메인 적용하기  (0) 2021.07.11
[Server] AWS Server 구축 - Mysql 외부 접속 with Workbench  (0) 2021.07.10
[Server] Local server 구축 - 외부 ip에서 Local server 접속하기  (0) 2021.07.10
[Server] APM 컴파일 수동 설치 - (3/3) php 편  (0) 2021.07.09
[Server] APM 컴파일 수동 설치 - (2/3)mysql편  (0) 2021.07.09
    '[Server]' 카테고리의 다른 글
    • [Server] AWS 서버 구축 - gabia로 도메인 적용하기
    • [Server] AWS Server 구축 - Mysql 외부 접속 with Workbench
    • [Server] Local server 구축 - 외부 ip에서 Local server 접속하기
    • [Server] APM 컴파일 수동 설치 - (3/3) php 편
    sugang
    sugang

    티스토리툴바