프로그래밍/NGINX

[NGINX] Ubuntu에서 MariaDB 와 NGINX 연결하여 phpMyAdmin페이지 구축

Beginner:) 2024. 8. 25.
320x100

OS : ubuntu 18.04

NGINX, MariaDB 설치되었다고 가정.

방화벽(ufw) db 외부 접속 허용 등은 잘 몰라서 이 글에서는 pass


 

1. MariaDB Port 확인

아래 명령어로 편집기를 열어서

sudo vim /etc/mysql/mariadb.conf.d/50-server.cnf

 

port를 확인하고 원하는 port로 설정한다.

port            = 33006

 

 

이후 mariadb 재시작

sudo systemctl restart mariadb

 

2. phpMyAdmin과 php, fpm 설치

sudo apt-get install phpmyadmin php-fpm

 

 

이후 nginx에서 fpm socket을 통해 phpMyAdmin과 연결을 해주는데, fpm 버전을 적어야하니 php 버전을 확인하고 기억한다.

php -v

 

 

3. phpMyAdmin&DB 연결

sudo vim /etc/phpmyadmin/config.inc.php

 

80 line 쯤 코드를 보면 dbserver가 없으면 localhost로 설정한다는 코드, dbport 설정하는 코드가 있는데,

[NGINX] Ubuntu에서 MariaDB 와 NGINX 연결하여 phpMyAdmin페이지 구축 - undefined - 3. phpMyAdmin&DB 연결

 

그냥 가장 위에 host와 port를 입력한다.

나랑 똑같이 하지말고 여러분의 db host, port를 입력한다.

[NGINX] Ubuntu에서 MariaDB 와 NGINX 연결하여 phpMyAdmin페이지 구축 - undefined - 3. phpMyAdmin&DB 연결

 

4. NGINX&phpMyAdmin 연결

아래 명령어 입력

sudo vim /etc/nginx/sites-available/[filename]

 

 

아래서 바꿀 것은 phpMyAdmin페이지를 보여줄 port 번호(listen)와 php-fpm 버전 2가지이다. 각자 버전에 맞게 입력

server {
    listen 5003;
    location /phpmyadmin {
        root /usr/share/;
        index index.php;
        try_files $uri $uri/ =404;
        location ~ ^/phpmyadmin/(.+\.php)$ {
            fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
            fastcgi_index index.php;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            include fastcgi_params;
        }
        location ~* ^/phpmyadmin/(.+\.(jpg|jpeg|gif|css|png|js|map|woff|ttf|svg))$ {
            root /usr/share/;
        }
    }

    location / {
        try_files $uri $uri/ =404;
    }
}

 

 

심볼릭 링크 생성

sudo ln -s /etc/nginx/sites-available/[filename] /etc/nginx/sites-enabled/

 

 

nginx 재시작

sudo nginx -t // nginx 테스트
sudo systemctl restart nginx

 

본인의 ip와 phpMyAdmin의 port /phpmyadmin 입력시 해당 페이지 출력

[NGINX] Ubuntu에서 MariaDB 와 NGINX 연결하여 phpMyAdmin페이지 구축 - undefined - 4. NGINX&phpMyAdmin 연결

 

5. 설정중 발생하였던 오류

nginx: [emerg] bind() to 0.0.0.0:[port] failed (98: Address already in use)

 -> phpMyAdmin은 DB를 연결해서 뿌려주는, DB와는 별개인 App이다. DB와 동일한 port로 설정하지 말자.

 

BadGateway 402

-> nginx에 설정한 경로가 문제일 확률이 크다.

/etc/nginx/sites-available/[filename]에서 입력한 "fastcgi_pass unix" 경로에 해당 /var/run/php/php7.2-fpm.sock이 존재하는지 부터 확인.

파일을 확인해도 되고 systemctl로 확인해도 된다.

sudo systemctl status php7.4-fpm

 

Failed to start php7.4-fpm.service: Unit php7.4-fpm.service not found.

위 오류가 발생한다면 php-fpm 설치 버전을 잘 확인해서 맞춰주자.

참고로 python으로 개발된 server도 위와 비슷한 방법으로 연결한다.

 

이외 나의 뇌피셜

phpMyAdmin과 DB가 같은 네트워크라면, DB의 외부접속허용 권한은 필요없다.

phpMyAdmin에서 명령어를 전달하기 때문.

대신 phpMyAdmin 의 접속 권한(ufw 등)은 필요하겠지.

반응형

'프로그래밍 > NGINX' 카테고리의 다른 글

[NGINX] port 접속이 안될 때(3000, 8080, 8090 등)  (0) 2024.02.07

댓글