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 변환 부분) 끝까지 진행하셔서 이후로는 편하게 접속하시길 바랍니다.^^

 

posted by 검신흑태자 2025. 4. 9. 23:15

심볼릭 링크의 경우 리눅스 서버 등에서 실제 폴더가 있는 경로는 안전하게 다른 곳에 두고 해당 링크의 심볼만 가져와서 진짜로 폴더가 있는 것처럼 작동하게 하는 링크입니다. 윈도우에서 PHP로 개발을 진행하던 중 Nginx 설정에 프로젝트 폴더를 명시해서 사용하고 있었는데, phpMyAdmin의 경우 해당 폴더에 옮기면 Git에 커밋을 할 때에도 문제가 되는 부분이 있고 보안상의 이슈도 있을 것 같아서 - 사실 phpMyAdmin이라는 폴더 명도 변경하는 게 좋긴 합니다. 해커들이 잘 노린다고 하더군요 - phpMyAdmin은 nginx의 하위 폴더에 두고 리눅스와 같이 심볼릭 링크를 생성하는 게 좋을 것 같아 윈도우에서도 방법이 있는지 찾아보니 꽤 많이 쓰이고 있더군요. 그래서 저도 심볼릭 링크를 생성했고 방법은 아래와 같습니다.

 

1. 심볼릭 링크를 만들 폴더에 관리자 권한으로 cmd를 실행합니다

2. mklink /d 가상폴더명 실제폴더경로 -> 이렇게 실행하면 심볼릭 링크가 생성됩니다.

3. 예시로는 mklink /d d:\php\symbolic c:\php\realfolder 이런 식으로 생성해 주시면 됩니다.

4. 다만 만들고자 하는 심볼릭 링크의 폴더가 이미 존재하면 안 되니 그 부분을 주의해 주시면 될 것 같네요.

 

보안상의 이슈나 저처럼 서버에서 지정한 폴더의 경로가 다른데 참조 폴더가 필요한 경우 등은 사용하시는 게 좋을 듯합니다.

posted by 검신흑태자 2025. 4. 8. 22:01

우린 늘 무엇이든 선택해

 

위험한 아이들(원제 : Dangerous Minds)은 1995년 작품으로 미셸 파이퍼가 주연하고 존 N. 스미스가 감독인 교육에 관한 해당 시대의 현실적인 내용을 담고 있는 영화입니다. 옛날 영화는 종종 찾아서 보는 편인데도 이 영화는 존재 자체도 모르고 있다가 간간히 TV 채널을 돌릴 때면 나오는 '전기현의 씨네뮤직'이라는 프로그램을 보면서 처음 알게 된 영화입니다. 평소에도 음악이나 영화를 좋아해서 해당 프로그램은 TV 채널을 돌리다가 - 0번부터 끝까지 가끔 돌려보는 습관이..- 방송을 하고 있으면 옛날 편이든 요새 편이든 틀어놓고 보는 편인데 이 영화가 나온 회차를 재방송할 때 틀어놓았다가 음악도 음악이지만 소개해주는 스토리가 마음에 든 편이라 한번 봐볼까 하고 생각하고 있던 차에 현재 구독하고 있는 OTT 중 하나인 디즈니 플러스에 이 영화가 있길래 OTT로 시청했습니다.

 

영화의 주요 내용은 루앤 존슨(미셸 파이퍼)가 해병대 복무를 하다가 복무를 정리하고(왜 정리하고 제대했는지는 안 나옵니다) 학교의 교사로 취임을 하게 되는데 취임해서 담임을 맡은 클래스가 문제아로 가득한 클래스에 사회적으로도 어려움을 겪고 있는 - 주로는 가난해서 인 것 같습니다 - 아이들이 있는 클래스입니다. 여기에서 아이들에게 시를 가르치면서 아이들과의 교감과 진정한 선생님으로 성장해 가는 게 이 영화의 주요 내용입니다.

 

이렇게 줄거리만 간단히 써 놓으면 뭔가 평이하고 지루한 내용인 것 같지만 주인공이 담임을 맡은 클래스의 아이들은 사회적인 배경과 가난, 주변 어른들의 무관심 등으로 인해 마음의 문을 닫고 있기 때문에 문제아가 된 것이라 주인공이 이 아이들의 사정을 차차 이해해 나가면서 아이들과 진정으로 교감을 하게 되고 도와주려고 노력하는 모습을 잘 담아내고 있어서 영화가 지루할 틈이 별로 없습니다. 보면서 생각이 들었던 영화는 '죽은 시인들의 사회'나 '디태치먼트'였는데 이 영화와는 결이 조금씩 다르긴 하지만 표현해내고자 하는 부분은 비슷하다는 생각이 들었습니다. 주인공인 선생님들은 모두 문학을 가르친다는 점에도 비슷한 점이 꽤 있다고 볼 수 있겠네요.

 

영화의 후반부에 들어서는 사회적인 분위기와 풍토에 대한 이야기가 대두되고 아이들을 위해서 노력하지만 자신이 해줄 수 있는게 거의 없다는 걸 깨닫게 되는 루앤 존슨의 방황(방황 자체는 잘 표현되지 않네요) 등이 영화의 후반부를 이끌어 갑니다. 그리고 그렇게 영화의 후반부에 들어서면서 더욱 생각을 하게 만드는 영화 같네요. 꽤 오래 전의 영화라 결말까지 다 이야기할 수는 있겠지만 그래도 안 보신 분들도 있고 해서 결말까지 다 쓰지는 않겠습니다. 저는 식스센스를 성인이 돼서야 봤는데 그 스포일러를 이미 너무 많이 접해서 어쩔 수 없이 알고 봤거든요.. 아 저는 스포일러를 당하고 영화를 봐도 괜찮은 편에 속합니다. 하지만 보지 않은 영화 등에 대해 결말은 직접 보고 싶다고 생각하시는 분들도 많이 있으시니 결말은 한번 영화를 직접 보시는 게 나을 것 같네요.

 

요새 넷플릭스니 디즈니 플러스니 티빙이니 해서 저도 OTT에 꽤 가입을 하고 있긴 하지만 그로인해 쏟아지는 콘텐츠들도 그렇고 쉽게 껐다가 다시 볼 수 있다는 장점인지 단점인지 모를 점 때문에 영화나 드라마, 애니메이션 등을 집중해서 보기가 어려운 측면이 있는 것 같아요. 물론 잘 집중하지 않는 제 자신이 제일 큰 문제 이긴 합니다만.. 그럼에도 이 영화는 오랜만에 OTT에서 집중해서 볼 수 있었던 영화네요. 평이한 것처럼 흘러가는 내용에도 긴장감을 놓지 못하게 하는 요소가 있고 이런 식의 생각을 하게 만드는 영화를 좋아하는 편이라 오랜만에 자리에 앉아 무척 재미있게 보았네요. 게다가 결말조차 제가 좋아하는 방향으로 끝났기 때문에 더 마음에 들었네요. 이런 종류의 영화를 좋아하시면 한번 보시는 것도 괜찮을 것 같아요~^^

'영화 > 외국영화' 카테고리의 다른 글

쉘부르의 우산  (0) 2021.04.21
킬러의 보이프렌드  (0) 2021.04.21
posted by 검신흑태자 2025. 4. 7. 19:18

phpMyAdmin은 웹 환경에서 MySQL(Maria DB)를 관리할 수 있는 PHP로 만들어진 DB 관리 툴입니다. 물론 MySQL Workbench나 MariaDB 설치시 같이 설치되는 HeidiSQL 등 다른 프로그램을 이용하셔도 무방합니다. 다만 XAMPP로 활용을 하시는 분들도 많기도 하고 기본적으로 XAMPP가 제공하는 툴 중에 하나가 phpMyAdmin이기도 하고 웹 환경에서 localhost 접속이 제대로 되고 있는지 등의 서버 확인 여부와 관리의 편리성 때문에 저는 phpMyAdmin을 사용합니다. 그래서 이번에는 phpMyAdmin을 윈도우 11환경에서 설치하는 방법을 설명합니다.

 

 원래 XAMPP를 쓰시던 분들은 localhost에 locahost/phpmyadmin 을 입력하시면 접속이 잘 될겁니다. 그게 아니라 저처럼 다 따로 설치하시는 분들은 아래와 같이 하시면 됩니다. MySQL과 같이 설치하기 어렵지는 않습니다. 다만 제 기준으로 설치시에 처음에는 PHP 8.4(최신버전)으로 phpMyAdmin을 설치했었는데 오류가 너무 많고 제대로 phpMyAdmin 접속이 되지 않아 Github와 관련 부분들을 찾아봤지만 마땅히 시원스런 해결법이 없어서 저는 PHP 8.3으로 버전을 다운그레이드 시켜서 설치했습니다. 혹여나 설치를 하셨는데 안되시는 분들은 PHP 버전을 확인해보시고 낮춰서 한번 해보세요. 희안하게도 Linux 서버에서는 8.4가 시원스럽게 잘 지원됩니다..

 

아무튼 phpMyAdmin도 다른 프로그램들과 비슷한 방법으로 설치를 합니다.

 

1. phpMyAdmin 공식 사이트(https://www.phpmyadmin.net/)에서 다운로드를 클릭해서 다운로드 합니다.

2. 다운로드 받은 파일을 압축 해제 시킵니다.

3. Nginx가 지정하는 Document Root 경로에 phpmyadmin으로 폴더 이름 변경 후 이동(다른 폴더 이름도 되는지는 잘 모르겠습니다.)

4. 주소창에 localhost/phpmyadmin을 입력해 제대로 로그인 창 등이 뜨는지를 확인합니다.

5. root 접속 등은 MySQL 설치 시 설정했던 아이디와 비밀번호로 접속하면 됩니다.

 

PHP 버전에 관계가 있는걸 알지 못하고 저는 설치하는데 엄청 고생을 했는데 다른 분들은 그렇게 고생하지 않으셨으면 좋겠네요^^

 

posted by 검신흑태자 2025. 4. 7. 00:07

이것도 카테고리 분류를 조금 고민하다가 이건 DB에 대한 거라 DB & MySQL 환경으로 넣었습니다. 나중에 카테고리를 재정리할 필요가 있겠네요 ^^;;

 

이번에는 MySQL을 윈도우 11 환경에서 설치하는 방법입니다. 이전에 PHP와 Nginx를 설치한 이후 개발을 하다 보면 DB가 필수가 되는데 유명한 통합 설치인 XAMPP 등을 이용하시는 게 여러 포스팅을 보시는 것보다 편하지만 제 컴퓨터의 문제인지 XAMPP에서는 MySQL(Maria DB)가 시작이 되지 않는 오류가 간헐 적으로 일어나서 해결책을 찾아보니 명확한 해결책은 없고 데이터를 무조건 백업했다가 덮어쓰는 방법으로 해결하는 경우가 많았기 때문에 이 작업이 귀찮기도 하고 해서 그냥 따로 설치했습니다. 

 

아무튼 MySQL도 따로 설치하실 때 방법은 간단합니다.MySQL과 MariaDB는 미세한 차이는 있지만 거의 같다고 생각하시면 되니 원하시는 걸로 설치하셔도 무방합니다

 

1. MySQL은 MySQL 홈페이지(https://www.mysql.com/)에서 MariaDB는 MariaDB 홈페이지(https://mariadb.org/) 에서 다운 및 설치가 가능합니다.

2. 제 경우에는 Maria DB를 설치했기에 그걸 기준으로 설명합니다. MariaDB는 압축 해제를 통한 설치도 지원하지만 설치 프로그램 형태로 다운로드가 가능하고 설치 안내에 따라 경로 수정, 루트 비밀번호 및 외부접속, 기본 문자열 인코딩 등을 본인이 원하는 대로 설정하시고 설치를 진행하시면 됩니다.

3. 설치가 완료되면 설치가 되었는지는 같이 설치되는 heidiSQL로 확인 가능합니다. 아니면 설치된 경로에 bin 폴더를 cmd로 띄워서 mysql --version 명령어를 입력해서 확인이 가능합니다.

4. 다른 PHP나 Nginx와 다르게 서비스에 자동적으로 등록되어 실행됩니다. 

 

각각의 프로그램을 따로 설치하다 보니 편한 것도 있고 불편한 점도(설정 등) 있네요. 그래도 하나하나 본인이 해결해간다는 느낌이 들어서 저는 개별적으로 다 설치하는 쪽이 더 좋았네요. 

posted by 검신흑태자 2025. 4. 5. 21:19

이전에 포스팅을 한 대로 PHP와 Nginx까지 설치를 다 하셨으면 이제는 PHP와 Nginx를 연동해 줘야 합니다. 그래야 본인이 작성하는 PHP 코드도 로컬 환경에서 테스트 가능하게 됩니다.

 

Nginx와 PHP 연동의 경우 윈도우 환경이든 리눅스 환경이든 설정하는 방법은 거의 비슷하다고 생각해 주셔도 괜찮습니다. 실행을 설정하고 하는 부분이 차이가 조금 있을 뿐이지 문서를 수정하거나 하는 부분은 거의 비슷합니다.

 

1. Nginx의 폴더에서 conf 폴더를 열어 nginx.conf 파일을 연다. 아마 이게 아파치에서는 .htaccess와 비슷할 겁니다.

 1) server 부분에 location 첫번째에 index.php 추가

 2) 아래쪽 location에 php FastCGI 부분에 주석 전부 해제

 3) fastcgi_param에 SCRIPT_FILENAME 뒷부분에 $document_root로 경로 수정

 4) fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 이렇게 수정되면 됩니다.

 5) cmd로 다시 nginx 폴더를 열고 서비스를 재시작합니다. -> nginx -s reload

 6) 예시는 아래와 같습니다.

#user  nobody;
worker_processes  1;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;

    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';

    #access_log  logs/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;

    server {
        listen       80;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            root   F:/Documents/Development/Projects/example;
            #root html;
            index  index.php index.html index.htm index.php;
        }

        #error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

        # proxy the PHP scripts to Apache listening on 127.0.0.1:80
        #
        #location ~ \.php$ {
        #    proxy_pass   http://127.0.0.1;
        #}

        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        #
        location ~ \.php$ {
            root           F:/Documents/Development/Projects/example;
            #root           html;
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
            include        fastcgi_params;
        }

        # deny access to .htaccess files, if Apache's document root
        # concurs with nginx's one
        #
        #location ~ /\.ht {
        #    deny  all;
        #}
    }


    # another virtual host using mix of IP-, name-, and port-based configuration
    #
    #server {
    #    listen       8000;
    #    listen       somename:8080;
    #    server_name  somename  alias  another.alias;

    #    location / {
    #        root   html;
    #        index  index.html index.htm;
    #    }
    #}


    # HTTPS server
    #
    #server {
    #    listen       443 ssl;
    #    server_name  localhost;

    #    ssl_certificate      cert.pem;
    #    ssl_certificate_key  cert.key;

    #    ssl_session_cache    shared:SSL:1m;
    #    ssl_session_timeout  5m;

    #    ssl_ciphers  HIGH:!aNULL:!MD5;
    #    ssl_prefer_server_ciphers  on;

    #    location / {
    #        root   html;
    #        index  index.html index.htm;
    #    }
    #}

}

 7) 기본 nginx.conf에서 변경한 부분으로 # 처리된 부분은 주석처리입니다.

 

2. PHP를 설치한 곳으로 이동하여 cmd를 열고 명령어를 실행합니다.

 1) 명령어는 php-cgi.exe -b "127.0.0.1:9000" -c php.ini

 2) 작업관리자를 실행시켜 프로세스에 CGI / FastCGI가 활성화 되어있는지 확인합니다.

 3) nginx의 html 폴더로 이동하여 index.php를 작성해서(localthost/index.php로 작동시켜도 됩니다.) 연동을 확인합니다.

 4) 해당 폴더로 매번 이동하여 명령어 입력을 하는 부분이 번거로웠기 때문에 이전 포스팅 중 PHP 설치에 배치 파일로 만들어서 실행하는 방법을 올려 놓았으니 그걸 참고하셔도 됩니다.

 

3. nginx 기본 폴더 변경

 1) nginx를 설치하면 기본 폴더가 nginx 하위 폴더에 있는 html로 되어 있는데 이 기본 폴더를 변경해야 할 때 쓰는 설정입니다.

 2) nginx.conf를 열어서 location에 root 경로(50x.html 부분 제외)를 원하는 폴더가 있는 경로로 수정합니다. 하지만 경로를 그대로 복사해서 붙여넣으면 안 되고 역슬래시(\)를 슬래시(/)로 바꿔서 입력합니다.

 3) nginx 및 php-cgi 서비스를 재시작합니다.

 4) 위의 코드 형식으로 붙여 넣은 부분을 참고하시면 더 쉽게 바꾸실 수 있을 거라 생각되네요.

 

PHP와 Nginx 연동에 대해 윈도우에서도 간단하게 할 수 있으니 처음 설치를 하면서 힘드셨던 분들에게 도움이 되었으면 좋겠습니다.