posted by 검신흑태자 2025. 4. 15. 12:59

DB 관리툴은 윈도우나 Ubuntu 상관없이 다른 걸 쓰시는 분들이 많겠지만 저는 윈도우에서도 phpMyAdmin을 사용하고 있기에 Ubuntu에서도 동일하게 phpMyAdmin을 사용하기 위해 설치했습니다. 설치 방법의 경우 윈도우와는 다르게 더 간단합니다.

 

1. #apt update로 설치된 패키지를 업데이트 해줍니다

2. #apt install phpmyadmin으로 설치를 진행합니다.

3. 설치를 진행하다 보면 서버 설정창이 나오는데 기본이 아파치로 되어있을 겁니다. 아파치를 쓰시는 분들은 그대로 설치하시면 되고 저처럼 Nginx나 다른 서버를 사용하시는 분들은 Tap키를 눌러 아무것도 설치하지 않은 채로 OK로 넘어가 엔터를 누르시고 설치하시면 됩니다. 이 부분을 그냥 막 넘기면 다른 서버를 쓰게 되면 아파치와 설정이 꼬여서 다시 설치해야 하는 상황이 발생하게 되니 이 부분만 신경 써서 봐주시면 됩니다.

4. 윈도우에서 처럼 심볼릭 링크를 생성하는데 폴더 이름은 원하시는대로 하셔도 됩니다. 

#ln -s /usr/share/phpmyadmin(설치된 경로) /var/www/html/phpmyadmin(원하는 폴더 경로)

5. 심볼릭 링크를 생성할 때 해커들이 phpmyadmin 주소를 가지고 공격을 많이 한다고 하니 nginx의 루트 경로에 폴더 이름을 바꿔주시는 게 좋다고 합니다. 위의 명령어와 폴더는 기본적으로 nginx 하위 폴더를 다른 걸로 변경하지 않았을 때의 예시입니다.

6. nginx stites-available의 conf 파일을 열어 index.php를 index 부분에 추가합니다. 이 부분은 php-fpm 설정을 하실 때 진행하셨으면 안 하셔도 무방합니다.

7. #service nginx restart 명령어로 Nginx를 재시작합니다.

8. 아이피(도메인)/phpmyadmin으로 접속하여 본인이 MySQL 설치 시 등록한 root와 패스워드로 접속되는지 확인합니다.

 

윈도우에서는 PHP 버전에 따라서 phpMyAdmin이 동작하지 않는 일이 더러 있었기에 고생을 했는데 리눅스나 맥 OS(정확하게는 맥 OS는 테스트를 안해봐서 확실하지는 않습니다.)는 패키지 설치형태로 진행을 하기에 설치가 간단합니다. 이전에 윈도우에서 PHP 8.4에서 phpMyAdmin이 작동하지 않아 Ubuntu에서 8.4 설치 후 동일한 형태로 phpMyAdmin을 설치했을 때 문제없이 작동했기 때문에 이대로 설치하시면 Ubuntu에서도 phpMyAdmin이 잘 실행될 겁니다.^^

posted by 검신흑태자 2025. 4. 13. 22:42

PHP와 Nginx도 연동을 다 했으면 DB를 설치할 차례입니다만 여러 가지 DB가 있지만 저는 Maria DB(MySQL)를 사용하고 있기 때문에 이 DB를 기준으로 설치 방법을 설명합니다.

 

1) PHP와 Nginx처럼 최신 버전 설치를 위한 저장소를 아래의 명령어로 추가해 줍니다.

#curl -LsS https://downloads.mariadb.com/MariaDB/mariadb_repo_setup | sudo bash -s -- --mariadb-server-version=11.0

 1-1) 제 경우 2025년 1월 18일 기준으로 최신 버전이 11.6 이었는데 버전이 올라간 경우 맨 뒤에 11.0을 12.0으로 바꿔주셔도 됩니다.

2) 저장소를 추가하셨으면 #apt update를 통해 패키지 업데이트를 실행합니다.

3) #apt -y install mariadb-server mariadb-client 명령어를 통해 DB Server와 Client를 설치해 줍니다. 이전 포스팅에 #apt 다음에 -y 가 없는 경우가 있었을 텐데 없이 설치를 진행해도 중간중간 나오는 물음에 y를 눌러도 동일한 결과가 되니 편하신 대로 쓰시면 됩니다.

4) 초기 권한 및 보안 설정에서 #mariadb-secure-installation 명령어로 보안 쪽 설정에 들어갑니다.

5) 보안 관련 내용들을 Y를 이용해서 설정해주고(주로 root 외부접속 금지 등이 있습니다.) root 비밀번호를 설정합니다.

6) mariadb -u root -p 로 패스워드 입력 후 접속 가능 여부를 확인합니다.

7) 버전확인은 mariadb에 로그인 후 select version(); 을 이용해 확인하거나 mariadb에 로그인하지 않아도 초기 화면에 suto -i su를 입력해 루트 권한을 받고 mariadb -v 명령어를 입력하면 mariadb에 접속되는데 이때 select version();을 입력하시면 됩니다.

 

저장소 추가를 제외하면 원래는 최신버전 ubuntu에 있는 패키지들이 최신 버전의 프로그램들을 대응하기 때문에 윈도우보다 설치가 간단하지만 - #apt install 프로그램 이름으로 설치 가능합니다 - 서버 업체에서 안정성 등의 이슈로 인해 완전 최신의 버전을 지원하지 않는 경우가 많기 때문에 그냥 보기에는 윈도우보다 복잡할 수 있겠네요. 그래도 CLI 환경에 조금 익숙해지면 편해지실 거라고 생각합니다. 

 

MariaDB(MySQL)도 마찬가지로 여러 설정등을 조정할 수 있지만 이것도 다른 포스팅에 올릴 수 있을 때 올려보도록 하겠습니다.^^

posted by 검신흑태자 2025. 4. 12. 23:00

Ubuntu에서 Nginx를 설치했으면 PHP를 설치할 차례입니다. 사실 PHP를 먼저 설치해도 상관은 없지만 제 경우 PHP를 먼저 설치하고 Nginx를 설치했을 때 오류가 난 경우 Nginx의 문제인지 PHP의 문제인지를 확인하는데 시간이 조금 걸려서 Nginx를 먼저 설치하고 PHP를 설치하는 방향으로 하고 있습니다.

 

이 포스팅에서 설치할 PHP 버전은 8.3인데 제가 설치를 할 무렵에는 이게 최신 버전이었던 걸로 기억하고 있고 지금 로컬에서 사용하는 버전이 윈도우+PHP 8.3이라 아마 이렇게 설치를 하지 않았나 싶습니다. 최신 버전을 설치하고 싶으신 분들은 8.3으로 되어있는 걸 8.4로 변경해 주시면 될 겁니다.

 

PHP 설치의 경우 Ubuntu 22.04 LTS 버전에서 내장되어 있는 패키지 버전이 7.x 버전이었기 때문에 바로 설치하지 않고 PHP 저장소를 추가해서 8.3 버전을 설치하는 방향으로 진행했습니다.

 

1. PHP 저장소를 # add-apt-repository ppa:ondrej/php 명령어로 추가합니다.

2. 우분투 패키지를 #apt update 명령어로 업데이트 합니다.

3. 확장 모듈과 함께 PHP를 설치합니다.

#apt install php8.3 php8.3-gd php8.3-cli php8.3-common php8.3-mysql php8.3-fpm php8.3-curl php8.3-json php8.3-opcache php8.3-mbstring php8.3-xml

4. 설치가 되면 php -v를 통해 버전을 확인합니다.

5. 설치가 완료된 다음에는 Nginx와 PHP-FPM 연동을 설정합니다. 저 같은 경우 Nginx 설치에서 말씀드렸다시피 sites-available의 설정과 nginx conf.d의 설정이 서로 제각각이라 어디에서 정확히 적용되는지 확인하고 수정하느라 시간이 걸렸습니다. 그래서 두 폴더에 있는 파일을 백업시켜 놓고 두 폴더에 있는 conf의 설정을 맞추고 conf를 수정합니다. 아래는 예시입니다.

# updated by the nginx packaging team.
#
# This file will automatically load configuration files provided by other
# applications, such as Drupal or Wordpress. These applications will be made
# available underneath a path with that package name, such as /drupal8.
#
# Please see /usr/share/doc/nginx-doc/examples/ for more detailed examples.
##

# Default server configuration
#
server {
        listen 80 default_server;
        listen [::]:80 default_server;

        # SSL configuration
        #
        # listen 443 ssl default_server;
        # listen [::]:443 ssl default_server;
        #
        # Note: You should disable gzip for SSL traffic.
        # See: https://bugs.debian.org/773332
        #
        # Read up on ssl_ciphers to ensure a secure configuration.
        # See: https://bugs.debian.org/765782
        #
        # Self signed certs generated by the ssl-cert package
        # Don't use them in a production server!
        #
        # include snippets/snakeoil.conf;
		# 아래는 실행될 파일의 기본 폴더 경로입니다.
        root /var/www/html;

        # Add index.php to the list if you are using PHP
        # index.php를 추가해줍니다.
        index index.html index.htm index.nginx-debian.html index.php;

        server_name ip 혹은 도메인;

        charset uft-8;

        location / {
                # First attempt to serve request as file, then
                # as directory, then fall back to displaying a 404.
                try_files $uri $uri/ =404;
        }

        # pass PHP scripts to FastCGI server
        #
        location ~ \.(php|html|htm)$ {
                include snippets/fastcgi-php.conf;
        #
        #       # With php-fpm (or other unix sockets):
                fastcgi_split_path_info ^(.+\.php)(/.+)$;
                fastcgi_pass unix:/run/php/php8.3-fpm.sock;
                fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
                include fastcgi_params;
        #       # With php-cgi (or other tcp sockets):
        #       fastcgi_pass 127.0.0.1:9000;
        }

        # deny access to .htaccess files, if Apache's document root

6. 설정을 모두 추가하고 디렉토리에도 이상이 없는데 index.php 파일 등을 추가했을 때(일반적으로 phpinfo()를 많이 씁니다.) 페이지가 로드되지 않을 경우 유저 권한 문제일 가능성이 많기에 /etc/php/버전명/fpm/fool.d 폴더 안에 있는 www.conf의 파일을 열고 user와 group을 www-data(nginx의 기본유저)로 변경처리 해줍니다. 

7. 페이지 로드가 되지 않는 경우 대부분은 권한 문제이기 때문에 위와 같이 처리해 주면 대부분의 문제는 해결이 되지만 다른 문제가 생기면 문제와 함께 해결법을 찾아서 추후에 추가할 수 있도록 하겠습니다.

8. 권한 문제까지 해결이 되었으면 본인의 ip주소/index.php로 접속해 보면 작성하신 코드가 뜰 겁니다.

9. index.html이 없을 경우 그냥 ip주소만 입력해도 index.php 파일의 내용이 뜹니다.

 

위의 작업까지 하시면 데이터베이스를 추가하는 것 외에는 기본 PHP 설정과 Nginx연동이 끝난 셈입니다. PHP도 그렇고 Nginx도 그렇고 많은 설정들과 심화된 내용이 있지만 거기까지 다루기에는 내용도 너무 많고 해서 일단은 간단히 바로 코드를 짜서 적용시킬 수 있는 설치법들만 작성했습니다. 이후 심화된 설정이나 내용들은 언제가 될지는 모르겠지만 다른 포스팅을 통해 작성해 볼 수 있도록 하겠습니다.