모눈종이에 사각사각
Linux + Nginx PHP MySQL 본문
🍎 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-fpm → php7.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
'Web > Server' 카테고리의 다른 글
도메인 구입하여 AWS EC2 인스턴스와 연결하기(가비아) (0) | 2022.02.21 |
---|---|
MySQL 외부에서 접속하기 (0) | 2022.02.21 |
AWS EC2 인스턴스에 접속하기 (0) | 2022.02.20 |
AWS 서버 구축하기 (22.10.06 update) (0) | 2022.02.19 |
Local 서버 구축하기 (0) | 2022.02.19 |