Home Born2beroot ⑤ 구현 과정 (Bonus part)
Post
Cancel

Born2beroot ⑤ 구현 과정 (Bonus part)

WordPress 구축

WordPress를 웹에 구축하기 위해 PHP, lighttpd, MariaDB의 설치가 필요하다.

  • PHP
    대표적인 서버 사이드 스크립트 언어
    웹개발에 특화되어 있다.
    • 서버 사이드 언어?
      온라인 기반 서비스를 백엔드와 프론트엔드로 구분하였을 때, 백엔드에서 서버 동작을 정의하기 위한 언어
  • lighttpd
    저자원 고성능의 오픈소스 웹서버 애플리케이션
    속도가 빠르며 용량이 낮다.

  • MariaDB
    오픈소스 RDBMS.
    MySQL 출신 개발자들이 개발.
    우분투, 데비안, RHEL, 페도라 등에서 기본DB로 지원.

lighttpd 설정

  • lighttpd 웹서버 설치
    sudo apt install lighttpd -y

  • lighttpd 관련 명령어

    1
    2
    3
    
      sudo systemctl start lighttpd.service	# 서버 시작
      sudo systemctl stop lighttpd.service	# 서버 중지
      sudo systemctl enable lighttpd.service	# 부팅시 서버 시작
    

PHP 설정

  • PHP-FPM(PHP FastCGI Process Manager)설치
    sudo apt install php7.4-fpm

  • PHP-FPM : 하나의 프로세스로 요청을 처리하여 프로세스를 생성, 제거하는 부하를 경감해줌.
  • php.ini 파일 내용 수정
    vim /etc/php/7.4/fpm/php.ini
    cgi.fix_pathinfo=1 부분 주석 해제

    Untitled

  • Fastcgi 파일 내용 수정

    vim /etc/lighttpd/conf-available/15-fastcgi-php.conf
    bin-path, socket 행 주석처리
    "socket" => "/var/run/php/php7.4-fpm.sock", 추가

    Untitled

  • 변경사항 적용 후 lighttpd 재시작

    1
    2
    3
    
      sudo lighttpd-enable-mod fastcgi
      sudo lighttpd-enable-mod fastcgi-php
      service lighttpd force-reload
    
  • ufw 방화벽의 웹서버용 포트 허용
    ufw allow 80

  • 포트포워딩
    가상머신의 환경설정을 통해 포트포워딩 규칙 추가.

    • Host Port : 8000(임의로)
    • Guest Port : 80(위에서 허용한 포트)

    이후 http://localhost:8000 (또는 http://127.0.0.1:8000)에 접속하면 아래와 같은 화면을 볼 수 있다.

    Untitled

  • PHP 연동 확인

    vim /var/www/html/info.php 으로 아래 내용 입력한 뒤, http://localhost:8000/info.php 접속

    1
    2
    3
    
      <?php
      	phpinfo();
      ?>
    

    Untitled

위와 같이 FPM/FastCGI가 제대로 적용되었음을 알 수 있다.

  • MariaDB와 연동할 패키지 설치
    sudo apt install php7.4-mysql

MariaDB 설정

  • DB 설치
    sudo apt install mariadb-server mariadb-client

  • DB 관련 명령어
    1
    2
    3
    
      sudo systemctl start mysql.service	# DB 시작
      sudo systemctl stop mysql.service	# DB 중지
      sudo systemctl enable mysql.service	# 부팅시 DB 시작
    
  • DB 보안설정
    sudo mysql_secure_installation
    비밀번호 설정이 처음이면 current pw는 엔터로 넘기고 뒤에서 등록. 대부분 Y로 설정.
    sudo systemctl restart mysql.service 로 DB 재시작

  • WordPress에 연동할 DB 생성
    sudo mysql -u root -p : 비밀번호 입력 후 mysql 진입

    1
    2
    3
    4
    5
    6
    7
    
      CREATE DATABASE [dbname]; -- DB 생성
      CREATE USER '[username]'@'localhost' IDENTIFIED BY '[password]';
      -- 계정 및 패스워드 생성
      GRANT ALL ON [dbname].* TO '[username]'@'localhost' IDENTIFIED BY '[passwd]' WITH GRANT OPTION;
      -- 생성한 DB에 대해 생성한 계정에 full access 부여
      FLUSH PRIVILEGES; -- 설정 종료
      EXIT; -- 종료
    

    위의 SQL문법을 사용해 아래와 같이 DB생성

    1
    2
    3
    4
    5
    
      CREATE DATABASE mydb;
      CREATE USER 'taehooki'@'localhost' IDENTIFIED BY 'db-pw';
      GRANT ALL ON mydb.* TO 'taehooki'@'localhost' IDENTIFIED BY 'db-pw' WITH GRANT OPTION;
      FLUSH PRIVILEGES;
      EXIT;
    

WordPress 설정

  • WordPress 설치
    lighttpd.conf에 나와있는 경로인 /var/www/html에 wordpress를 설치.

    1
    2
    3
    
      sudo apt install wget # wget 설치
      sudo wget -O /tmp/wordpress.tar.gz "http://wordpress.org/latest.tar.gz" # WP 압축파일 다운로드
      sudo tar -xvzf /tmp/wordpress.tar.gz -C /var/www/html # 해당 압축파일을 원하는 경로에 설치
    
    • wget(Web Get) : 웹 상의 파일을 받을 때 사용하는 명령어

설치를 마치고 http://localhost:8000/wordpress 에 접속하면 아래와 같이 DB를 생성하라는 화면이 보임.

Untitled

이 페이지에서 DB를 직접 생성하는 대신 위에서 생성한 DB를 연결.

  • WordPress - MariaDB 연동
    vim /var/www/html/wordpress/wp-config-sample.php

    Untitled

    db이름, db유저명, db암호를 위에서 설정한 대로 변경
    아래에 auth key 설정하는 부분은 아래의 주소로 접속해서 키를 생성한 뒤 그대로 입력하면 된다.
    (주의사항 : 다시 접속하면 새로 생성된다!)
    https://api.wordpress.org/secret-key/1.1/salt/

    저장 후 파일명을 아래와 같이 wp-config.php로 변경
    mv /var/www/html/wordpress/wp-config-sample.php /var/www/html/wordpress/wp-config.php

http://localhost:8000/wordpress/ 재접속

Untitled

계정 설정

Untitled

사이트 생성 완료

Untitled

사이트 설정

Untitled

http://localhost:8000/wordpress/ 에 재접속하면 다음과 같은 화면이 나옴.

FTP 설정

미완성

  • vsftpd 설치

    sudo apt install vsftpd
    dpkg -l | grep vsftpd : 설치 확인

  • 21번 포트를 통한 incoming 접속 허용

    sudo ufw allow 21

  • 포트포워딩

    가상머신의 환경설정을 통해 포트포워딩 규칙 추가.

    • Host Port : 7000(임의로)
    • Guest Port : 21(위에서 허용한 포트)
  • vsftpd 설정
    • FTP 쓰기 명령 허용
      sudo vim /etc/vsftpd.conf
      Untitled 위와 같이 31번줄의 write_enable=YES를 주석해제.

    • FTP 연결의 루트 폴더를 특정 유저로 설정
      sudo mkdir -p /home/[username]/ftp/files

    • 디렉토리 소유권 변경
      root 계정으로 생성한 폴더는 사용자가 이미지를 업로드하는 등의 이용이 불가능하므로 권한을 root에서 nobody로 변경하는 것.
      sudo chown nobody:nogroup /home/[username]/ftp

    • 모든 사용자에게서 쓰기권한 제거
      sudo chmod a-w /home/[username]/ftp
      sudo vim /etc/vsftpd.conf 마지막에 아래 내용 추가
      1
      2
      
        user_sub_token=$USER
        local_root=/home/$USER/ftp
      
    • 유저가 파일에 접근하거나 디렉토리 트리(?) 밖에서 명령하는것을 제한.
      sudo vim /etc/vsftpd.conf 114번줄의 chroot_local_user=YES 주석 해제
      Untitled

    • FTP 화이트리스트 지정
      sudo touch /etc/vsftpd.userlist
      echo <username> | sudo tee -a /etc/vsftpd.userlist

      sudo vim /etc/vsftpd.userlist 아래 내용 추가

      1
      2
      3
      
        userlist_enable=YES
        userlist_file=/etc/vsftpd.userlist
        userlist_deny=NO
      
  • vsftpd.conf 수정
    sudo vim /etc/vsftpd.conf 에서 마지막에 아래 내용 추가

    1
    2
    3
    
      pasv_enable=Yes
      pasv_max_port=11001
      pasv_min_port=11050
    
  • FTP를 통해 서버 접속
    로컬 cmd에서 아래와 같이 입력해서 VM에 FTP로 연결
    1. ftp
    2. open 127.0.0.1. 7000 # open <ip address> <port>

    close 입력해서 세션 종료 후, bye 입력해서 ftp 종료.
    Untitled

  • 파일 송수신
    1
    2
    
      cd files # ~/ftp/files/ 로 파일 경로 설정
      put d:\[dirname]~\[filename] # 파일 업로드
    

    앞부분까지는 잘 되다가 파일 업로드를 하려고 하면 아래와 같은 에러가 발생한다.

    1
    2
    
      500 Illegal PORT command.
      425 Use PORT or PASV first.
    

Ref.

https://velog.io/@jen133/b2br-Wordpress-구축
https://github.com/hanshazairi/42-born2beroot

This post is licensed under CC BY 4.0 by the author.

Born2beroot ④ 구현 과정 (Mandatory part)

Born2beroot ⑥ 체크 사항