본문 바로가기
OS/Linux

[AWS] EC2 우분투(Ubuntu) 20.04 LTS에 LEMP(Nginx, Mariadb, PHP) 설치 (Nginx PHP 연동)

by 8ugust 2022. 2. 1.

 WSL CentOS7에 LEMP 환경 구축한지 한 달도 안됐는데, 이러저러한 이유로 Ubuntu 환경에 재설치하려고 하니 뭔가 쉽지않다. 한 번 해봤으니 어렵지 않을거라 생각했지만 오산이었다. Ubuntu 환경에선 Nginx의 설정파일 위치나, PHP 설정 내용 측면에서 약간의 차이가 있더라. 이번엔 구구절절한 설명 없이 빠르게 설치 방법을 기술하고자 한다.

 

 

 


1. NGINX 설치

 

 

[AWS] EC2 우분투(Ubuntu) 프리티어 Nginx 웹서버 구축

로컬에 CentOS 7 설치해서 작업하고 있는데, Linux 관련된 자료가 CentOS 보다 Ubuntu가 더욱 많아서 답답할 때가 많았다. 그래서 Ubuntu로 변경하는김에 아예 AWS EC2를 사용하여 서버를 퍼블릭으로 올리려

8ugust-dev.tistory.com

 

 

 


2. PHP 설치

2 - 1 PHP 7.4 설치

// PHP 설치
$ apt install php7.4-fpm php7.4-common php7.4-mysql php7.4-gmp php7.4-curl php7.4-intl php7.4-mbstring php7.4-xmlrpc php7.4-gd php7.4-xml php7.4-cli php7.4-zip zip unzip


// 서버 자동시작 설정
$ systemctl enable php7.4-fpm


//PHP 설정 변경
$ vi /etc/php/7.4/fpm/php.ini
short_open_tag = On
memory_limit = 256M
upload_max_filesize = 100M
date.timezone = Asia/Seoul


// PHP 시작 
$ systemctl start php7.4-fpm

 CentOS7 에서는 주로 PHP 7.3 버전을 사용했었는데, Ubuntu에서는 PHP 7.4 버전을 주로 사용하더라. 이유는 크게 모르겠다. 기존 프로젝트에 사용하던 PHP가 7.3 버전이었는데, 7.4 버전과 큰 차이가 없어서 버전도 올릴 겸 php 7.4를 설치하기로 했다. 설정 변경은 태그, 메모리, 시간만 건드리고 나머진 그대로 두었다.

 

 

2 - 2 Nginx PHP 연동

// NGINX 설정파일
$ vi /etc/nginx/nginx.conf


.
.
.
user www-data;
worker_processes auto;
pid /run/nginx.pid;
include /etc/nginx/modules-enabled/*.conf;

http {

    .
    .
    .
    include /etc/nginx/conf.d/*.conf;
    include /etc/nginx/sites-enabled/*;
}

 /etc/nginx/nginx.conf에서 여러 conf파일을 불러와서 관리하는 형식으로 CentOS7과 동일하지만, 한 가지 다른 점은 Ubuntu는 /etc/nginx/conf.d가 아니라 /etc/nginx/sites-enabled에 default 파일이 있다는 것이다. 이 부분에서 default 파일 찾느라 당황했었다. default 파일에 들어가서 php-fpm 설정을 변경해주자.

 

 

// Default 파일 편집기 오픈
$ vi /etc/nginx/sites-available/default 


server {
    listen 80 default_server;
    root /var/www/html;
    
    // index.php 추가
    index index.php index.html index.htm
    
    .
    .
    .
    // FastCGI 주석 해제
    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        # With php-fpm (or other unix sockets):
        fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
        # With php-cgi (or other tcp sockets):
        #fastcgi_pass 127.0.0.1:9000;
    }
    
}

 PHP-CGI는 Unix 소켓이 아닌 TCP 소켓을 사용하기 때문에 반드시 127.0.0.1:9000 으로 설정해줘야 하지만, 우리는 더 이상 WSL을 사용하는 것이 아니기 때문에(WSL 에선 물리적 문제로 Unix 소켓을 사용할 수 없다) Unix 소켓을 사용할 수 있다. 따라서 PHP-CGI가 아닌 PHP-FPM을 사용하도록 해당 부분의 주석만 풀어주면 된다.  

 

 

// phpinfo.php 파일 생성
$ vi /var/www/html/phpinfo.php


// phpinfo.php 내용 작성
<?php phpinfo(); ?>

 php.ini 설정파일에서 short_tag를 On 했기 때문에 태그 내 php를 생략해도 무방하다. 만약 short_tag 옵션을 On으로 변경하지 않았다면, 태그 내 php가 빠졌을 경우 에러가 발생한다.

 

 

// Nginx 및 Php-fpm 재시작
$ systemctl restart php7.4-fpm
$ systemctl restart nginx

 설정파일을 변경했으므로 Nginx와 Php-fpm을 재시작하자.

 이후 AWS 퍼블릭 IP 주소로 접속하여 /phpinfo.php 경로를 입력하면

 

 

php가 연동된 것을 확인할 수 있다.

 

 

 


3. MariaDB 설치

// MariaDB 설치
$ apt install mariadb-server mariadb-client

 CentOS7 에서는 MySQL을 설치했었다. 하지만 이번엔 MariaDB를 설치해보고자 한다. MariaDB가 MySQL의 개선된 버전이기도 하고, 무엇보다 MySQL이 잘 호환되기도 하니 아예 MariaDB로 사용하려고 한다. 설치가 다 되었다면 MariaDB 설정을 하도록 하자.

 

 

// MariaDB 설정 
mysql_secure_installation
In order to log into MariaDB to secure it, we'll need to current 
password for the root user. If you've just installed MariaDB, and
you haven't set the rot passwor yet, the password will be blank,
so you should just press enter here.

Enter current password for root (enter for none):    // 그냥 엔터(Enter) 누르기





Setting the root password ensures that nobody can log into the
MariaDB root user without the poper authorisation.
Set root passwor? [Y/n] :     // Y누르고 사용할 root 계정 비밀번호 입력

 위 2가지 password 관련 설정을 마쳤다면, 앞으로 다섯 가지 정도 설정 여부를 묻는 질문이 나올것이다. 대충 기억하기론 default 계정을 삭제할것인지, 권한을 허용할 것인지 등에 관한 질문인데, 그냥 전부 Y 누르고 넘어가자. 전부 넘어가서 Thanks for using MariaDB! 라는 문구가 노출되었다면 MariaDB 설정이 끝난것이다.

 

 

// DB 및 User 생성
$ mysql -u root -p

mysql> CREATE DATABASE YOUR_DATABASE_NAME;
mysql> CREATE USER ‘YOUR_USER‘@’localhost’ IDENTIFIED BY ‘password‘;
mysql> GRANT ALL ON YOUR_DATABASE_NAME.* TO ‘YOUR_USER‘@’localhost’ WITH GRANT OPTION;
mysql> FLUSH PRIVILEGES;
mysql> EXIT;

 이제 앞으로 사용할 Database와 User를 생성해주자. CentOS7에서 작업할 때 미리 만들어둔 mysqlDB가 있지만, 어차피 MariaDB로 변경하기도 했고 작업 내용도 별거 없어서, 마이그레이션 작업 없이 새롭게 진행하려고 한다.

 

 

이상으로 LEMP 환경 구축을 마치겠다.

댓글