Nginx
엔진엑스(Nginx)는 Igor Sysoev라는 러시아 개발자가 동시접속 처리에 특화된 웹 서버 프로그램이다. Apache보다 동작이 단순하고, 전달자 역할만 하기 때문에 동시접속 처리에 특화되어 있다.
동시접속자(약 700명) 이상이라면 서버를 증설하거나 Nginx 환경을 권장한다고 한다. 아마존웹서비스(AWS) 상에서는 시장 점유율 44%에 달할정도로 가볍고, 성능이 좋은 엔진이라고 한다.
설치할때 다음의 포스트를 참고하였다.
Nginx 설치
1. 앞에서 했던것 처럼 EC2 인스턴스에 접속하여 다음의 명령어를 입력한다.(putty로 접속하면 됨)
$ sudo apt update
$ sudo apt install nginx
2. Nginx 설치가 완료되었다면 잘 설치되었는지 확인하기 위해 EC2 인스턴스의 퍼블릭 IPv4 주소를 브라우저에 입력해서 접근해본다. 하지만 Nginx 화면이 나오지 않는데, 인바운드 규칙에 22번 포트만 열어놓았기 때문이다.(이 때문에 WinSCP로 접근 가능) 그러므로, 웹브라우저에 접근하기 위해 보안규칙을 추가해줘야 한다.
HTTP를 추가해주면 자동으로 80번 포트는 열리게 된다. 소스는 Anywhere로 설정하여 아무곳에서나 접근할 수 있도록 한다. 그러면 이제 퍼블릭 ipv4주소를 통해 접근가능함을 확인할 수 있다.
MySQL 설치
1. 다음의 명령어 입력하여 설치
$ sudo apt install mysql-server
2. 비밀번호 설정을 해주자
sudo mysql_secure_installation
다음과 같은 문구가 뜨면 y를 눌러준다
password level을 설정하라고 뜬다. 1로 설정해준다(대소문자 섞어서+특수문자+숫자)
비번 설정해주고 y를 누른다
3. mysql에 접속한다.
sudo mysql
4. 루트 사용자가 실제로 auth_socket 플러그인을 사용하여 인증해야 한다. 암호로 인증하도록 루트 계정을 구성하려면 다음 ALTER USER 명령을 실행해야 한다.
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password설정';
FLUSH PRIVILEGES를 실행하여 서버에 그랜트 테이블을 다시 로드하고 새 변경 사항을 적용하도록 한다.
FLUSH PRIVILEGES;
이제 mysql -u root -p로 접근할 수 있게 된다.
php 설치
1. PHP를 설치한다. 이때, Nginx에서는 php-fpm을 반드시 설치해야 한다.
sudo apt install php-fpm php-mysql
php-fpm 설치 이유
=>PHP-fpm 은 PHP FastCGI Process Manger의 약자로, CGI보다 빠른 버전이라고 말할 수 있습니다. CGI란, 웹 서버에서 요청을 받아 외부 프로그램에 넘겨주면, 외부 프로그램은 그 파일을 읽어 html로 변환하는 단계를 거치는 것을 말합니다. Fast CGI는 요청할때마다 이미 생성된 프로세스를 가지고 구동하기 때문에 처리가 CGI보다 빠릅니다. Apache에서는 php모듈이 있기 때문에 처리가 가능하지만, nginx에서는 php-fpm을 따로 설치해 연동을 해주어야 합니다.
출처 https://yumserv.tistory.com/146
2. 설치가 완료되었다면 PHP가 잘 설치되었는지 phpinfo를 통해서 확인해야 한다. Nginx의 기본 경로는 /var/www/html이다. /var/www/html로 이동후 php파일을 작성하자
3. 브라우저에서 EC2 인스턴스의 퍼블릭 IPv4 주소/index.php 주소로 접근하면 index.php 파일이 다운로드 되는 것을 확인할 수 있는데, 이는 아직 PHP와 Nginx가 연동되지 않았기 때문에 발생하는 현상이다. 따라서 연동을 위해 Nginx 에 설정을 추가해줘야 한다.
4. Nginx의 기본 설정 파일은 /etc/nginx/sites-available/default 이다. vi 편집기를 이용하여 파일을 열고 수정하자
여기서, 사용하는 php-fpm의 버전에 따라 pastcgi_pass 부분의 php7.2-fpm.sock를 수정해줘야 한다(Ubuntu 18.04-php7.2-fpm)
5. 변경된 설정을 적용하기 위해 nginx를 다시 시작하자
sudo service nginx restart
6. 확인해보면 다음과 같이 잘 나온다