모눈종이에 사각사각

Linux + Nginx PHP MySQL 본문

Web/Server

Linux + Nginx PHP MySQL

모눈종이씨 2022. 2. 20. 22:41

🍎 Linux + Nginx PHP MySQL

 

지난 포스팅에 이어 이번에는 구축한 리눅스 환경에 Nginx 와 PHP, MySQL을 설치해보고자 한다.

 

[Nginx 설치]

 

1. Nginx 설치하기

 

Nginx란?
트래픽이 많은 웹사이트의 확장성을 위해 개발된 경량의 고성능 웹서버
Nginx는 적은 자원의 사용으로 높은 성능과 높은 동시성을 목표로 만들어졌다
$ sudo apt update
$ sudo apt install nginx

 

2. AWS 보안 설정

- 내 인스턴스를 클릭한 후 보안 탭으로 이동한다.

 

- 보안 그룹을 누르면 다음과 같이 인바운드 규칙과 아웃바운드 규칙이라고 나온다.

- 그중에서 인바운드 규칙 편집을 선택한다.

 

 

- HTTP를 80번 포트로 열어준다.

- 위치 Anywhere(0.0.0.0/0)로 설정해 주어야 다른 사용자들이 내 서버로 들어올 수 있다.

3. AWS 내 인스턴스의 public ip 주소로 접근

- 다음과 같은 창이 뜨면 성공!

 

[MySQL 설치]

1. MySQL 설치

$ sudo apt install mysql-server

 

2. MySQL 보안설정

$ sudo mysql_secure_installation

- 위와 같이 입력하면 여러 가지를 물어본다. 거의 다 Y를 눌렀다.

- 다만, Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG:  에는 1을 눌러줬다. (나중에 root 비밀번호 설정 시 레벨을 0으로 낮춰줬다.)

 

3. MySQL 접속

$ sudo mysql

 

4. MySQL 비밀번호 설정

mysql> SELECT user,authentication_string,plugin,host FROM mysql.user;

 

5. root 비밀번호 설정

mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
mysql> FLUSH PRIVILEGES;

 

- ERROR 1819 (HY000): Your password does not satisfy the current policy requirements 발생!

→ 보안 레벨을 LOW로 낮추었다.

mysql> set global validate_password_policy=LOW;
mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
mysql> FLUSH PRIVILEGES;

 

6. 종료 후 재접속 시도

mysql> exit
$ mysql -u root -p

 

[PHP 설치]

PHP(PHP: Hypertext Preprocessor)란?
- C언어를 기반으로 만들어진 서버 측에서 실행되는 서버 사이드 스크립트 언어
- PHP는 동적 웹 페이지를 쉽고 빠르게 만들 수 있도록 해주는 데 그 목적이 있다.
- PHP로 작성된 코드를 HTML 코드 안에 추가하면, 웹 서버는 해당 PHP 코드를 해석하여 동적 웹 페이지를 생성한다.

 

1. PHP 설치

$ sudo apt install php-fpm php-mysql
php-fpm 이란?
- PHP-fpm(PHP FastCGI Process Manager)
- FastCGI를 활용하기 위해 사용되어지는 것
- php가 FastCGI 모드에서 동작하여 처리될 수 있도록 해준다.
더보기
더보기

상세설명

  • CGI ( Common Gateway Interface )는 웹서버와 외부 프로토콜을 연결시켜주는 표준 프로토콜.
  • CGI는 각각의 요청별 로 프로세스를 생성한다. 요청이 들어올 때 마다 프로세스의 생성과 삭제를 반복하다 보면 자연스럽게 속도는 느려진다.
  • 이러한 CGI의 단점을 개선하고자 FastCGI가 등장
  • FastCGI는 요청이 들어올 때 마다 프로세스를 생성하는 것이 아닌, 이미 기존에 만들어진 프로세스를 바탕으로 새로운 요청들을 처리해 나간다.
  • 프로세스의 생성과 삭제를 통해 발생하는 부하를 줄이기 위한 FastCGI를 활용하기 위해 사용되어지는 것이 php-fpm
  • php가 FastCGI 모드에서 동작하여 처리될 수 있도록 해준다.

 

2. Nginx 와 PHP 연동

$ sudo vi /etc/nginx/sites-available/default

    - nginx와 php를 연동할 수 있도록 php 모듈의 주석을 다음과 같이 해제

    - php7.0-fpmphp7.2-fpm으로 변경(Ubuntu 18.04에서 php-fpm을 설치할 경우 php7.2-fpm이 깔린다.)

 

3. nginx 기본 디렉토리에 index.php 파일 추가

- /var/www/html/ -> Nginx의 기본 경로

$ cd /var/www/html/
$ ls
-> index.nginx-debian.html

- ls를 통해 디렉토리에 있는 내용을 확인해보면 index.nginx-debian.html이 있다.

- 이는 위에서 본 Welcome to nginx를 띄워주는 파일이다.

 

- 기본 디렉토리에 index.php 파일 생성

$ sudo vi index.php

 

- 다음과 같이 내용을 작성한다.

<?php
phpinfo();
?>

 

4. 서버 재시작

$ sudo service nginx restart

 

5. 확인

- 자신의 인스턴스의 public ip/index.php를 쳐서 다음과 같은 화면이 나오면 성공!

- 위에서 생성한 index.php 파일이 잘 나오는 것을 볼 수 있다.

 


참고사이트

https://kanoos-stu.tistory.com/entry/Nginx

https://phsun102.tistory.com/46

https://www.digitalocean.com/community/tutorials/how-to-install-linux-nginx-mysql-php-lemp-stack-ubuntu-18-04

https://kamang-it.tistory.com/248

Comments