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도 그렇고 많은 설정들과 심화된 내용이 있지만 거기까지 다루기에는 내용도 너무 많고 해서 일단은 간단히 바로 코드를 짜서 적용시킬 수 있는 설치법들만 작성했습니다. 이후 심화된 설정이나 내용들은 언제가 될지는 모르겠지만 다른 포스팅을 통해 작성해 볼 수 있도록 하겠습니다.

 

 

posted by 검신흑태자 2025. 4. 11. 14:33

Linux Ubuntu 기본 설정을 마치신 경우 이제 서버를 선택해서 설치해야 하는데 서버의 경우 아파치나 Nginx를 많이 쓰시지만 저는 이전 윈도우에서도 이야기했듯이 Nginx를 쓰기 때문에 Ngnix를 설치하는 방법을 설명합니다.

 

윈도우와 비교해서 조금 복잡한 건 기본적으로 22.04 버전에 설치되어 있는 버전보다 상위버전을 설치하기 때문입니다. 그냥 가볍게 최신버전이 아닌 버전을 apt install nginx로 설치하셔도 무방하지만 이전 버전은 보안의 문제라던가 최신 이슈들의 해결이 반영되지 않을 수 있으니 웬만하면 최신 버전을 설치하시는 게 좋습니다.

 

기본적으로 Nginx의 버전은 빠르게 올라가기 때문에 공식 저장소를 추가하는 것부터 시작합니다.

 

1. 아래의 명령어들을 차례대로 실행합니다.

# curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor | sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null
# gpg --dry-run --quiet --no-keyring --import --import-options import-show /usr/share/keyrings/nginx-archive-keyring.gpg
# echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] http://nginx.org/packages/mainline/ubuntu `lsb_release -cs` nginx" | sudo tee /etc/apt/sources.list.d/nginx.list

 

2. 공식 저장소 추가 후 #apt update로 패키지 목록을 업데이트 해 줍니다.

3. #apt info nginx로 패키지 설치 버전에 대해 확인을 합니다. 웹사이트와 비교해서 최신버전이면 맞는 겁니다.

4. #apt install nginx로 nginx를 설치합니다

5. 설치가 완료되면 #service nginx start로 서비스 시작 후 #service nginx status로 nginx의 상태를 확인합니다.

6. 설치와 서비스 시작이 완료되어 이상이 없으면 연결해둔 IP나 도메인으로 접속하여 Nignx Welcome 페이지가 나오는지 확인합니다.

7. 기본적으로 로딩되는 파일경로는 /var/www/html/ 이지만 conf.d 폴더에 있는 설정 파일(nginx.conf)을 통해 변경이 가능합니다.

8. 제 경우 최신버전의 문제였는지 설치과정에 문제가 있었던 것인지 site-available 폴더와 conf.d 폴더에서 지정하는 기본 폴더가 달라서 어디에서 로딩이 되는지 index.html을 내용별로 적어서 로드되는 경로를 확인한 후에 수정을 했으니 만약 파일을 넣고 페이지에 로드가 안되시면 이렇게 한번 해보시면 될 것 같습니다.

 

일단 이렇게 되면 기본적인 Nginx 설치는 완료입니다. 보안적인 부분이나 여러 가지가 있는데 이 부분은 조금 더 나중에 제 쪽에서도 여러 가지로 적용을 해보고 포스팅할 수 있도록 하겠습니다.

posted by 검신흑태자 2025. 4. 10. 21:08

저는 테스트 서버와 실제 상용서버를 모두 NHN 클라우드에서 서버를 생성하고 세팅해서 사용하는데, 많은 분들이 AWS나 Google, Oracle 등을 쓰시지만 제가 나중에 다시 볼 때 필요할 것 같기도 하고, 저처럼 NHN을 쓰실 분들도 있을 것 같아서 홈페이지 자체에 정리가 잘 되어있긴 하지만 제 나름대로 간결하게 정리해서 한번 포스팅을 합니다. 나중에 Oracle이나 Google, AWS는 개인용 무료 서버를 사용하기 위해 한번 써볼 예정인데 쓰게 되면 그때 다시 다른 업체의 서버들에 대해서도 포스팅할 수 있도록 하겠습니다.

 

NHN 클라우드 서버 설정은 다른 회사들과 비슷하게 간단하게 생성 및 접속이 가능합니다.

 

1. 인스턴스 생성

 1) 인스턴스 생성 시 원하는 사양과 OS를 선택하고 가용성 영역을 선택합니다.(임의의 영역으로 하셔도 괜찮습니다.)

 2) 사용할 키페어를 선택합니다. 키페어가 없을 경우 키페어를 만드시고 잘 저장해두셔야 합니다(재발급이 안됩니다.)

 3) 네트워크 서비스와 플로팅 IP, 보안그룹을 선택합니다. 이것도 없을 경우 서비스 신청을 하시면 됩니다.

 4) 위 절차가 끝나면 생성 버튼을 눌러서 생성하시면 됩니다.

 

2. 인스턴스 기본 설정

 1) 보안그룹 설정(Network->Security Groups)에서 개발 및 배포에 필요한 포트 들을 열어줍니다.

 2) 22(SSH), 80(HTTP), 3306(MySQL) 등은 기본적으로 열어두시는게 좋습니다. 

 

3. 리눅스 서버 접속

 1) 맥 OS / 리눅스와 윈도우 OS의 접속방법이 다른데 맥 OS / 리눅스의 경우 키페어를 저장하고 터미널을 이용하여 간단하게 접속이 가능합니다.

 1-1) $ ssh -i my_private_key.pem ubuntu@<인스턴스의 IP> 이런 식의 명령어로 접속 가능합니다.

 2) 윈도우의 경우 pem 파일 사용이 불가한 관계로 putty라는 프로그램을 다운로드하여야 합니다.

 3) putty 프로그램을 다운받고 설치하면 같이 설치되는 puttygen을 실행합니다.

 4) Conversions(한글판에는 변환이라고 되어있는 것 같습니다.) 항목에서 키를 import key(키 삽입?으로 되어있을 겁니다)를 선택하여 다운로드한 키를 불러오신 다음에(공식 문서에는 불러오기(Load)를 이용하라고 되어있는데 제 경우 pem 파일이 불러와지지 않아서 이렇게 했습니다.) 개인용 PPK 키로 변환합니다.(변환(Generate))

 4-1) 변환하시기 전에 맨 아래 메뉴에 RSA를 포함한 키 형식을 선택하는데 RSA 2048로 해주시면 됩니다

 5) putty를 실행시키고 auth(인증) 항목에서 변환한 ppk 파일을 등록하신 후에 Host Name에 ubuntu@아이피주소(연결한 플로팅 IP 주소)를 입력해서 접속합니다. 첫 접속 시 key access 여부를 물어보는데 accept를 눌러주시면 됩니다.

 

4. Ubuntu 접속 후 처음 할 일

 1) sudo -i su 명령어를 통해 root 권한을 얻고 작업을 진행합니다(이게 작업하기가 좀 수월합니다)

 2) apt-get update 로 설치 가능한 패키지를 업데이트합니다.

 3) apt-get upgrade로 설치되어있는 패키지를 업그레이드합니다.

 4) 위 두 명령어는 늘 따라다니는 명령어라고 생각하시면 되며 어떤 것을 설치하든지 한 번씩은 입력해서 업데이트와 업그레이드를 진행해 주시면 좋습니다.

 5) 기타 보안이나 관련 설정은 나중에 따로 업로드하겠습니다.

 

아무래도 맥 OS나 리눅스에 비해 윈도우가 접속이 까다롭기는 하나 putty에 설정사항을 처음 저장할 때 까지가 힘들지 그 이후로는 저장된 세션을 putty를 이용해 접속하면 되니 처음에 설정이 힘들어도 포기하지 마시고(특히 key 변환 부분) 끝까지 진행하셔서 이후로는 편하게 접속하시길 바랍니다.^^