웹사이트 검색

Ubuntu 22.04에서 LEMP로 WordPress를 설치하는 방법


소개

인터넷에서 가장 인기 있는 콘텐츠 관리 시스템(CMS) 중 하나인 WordPress를 사용하면 PHP 처리 기능이 있는 MySQL 백엔드를 사용하여 유연한 블로그와 웹사이트를 설정할 수 있습니다. WordPress는 웹 사이트를 효율적으로 운영하기 위한 훌륭한 선택입니다. 초기 설정 후 WordPress 웹 사이트에 대한 거의 모든 관리는 그래픽 인터페이스를 통해 수행할 수 있습니다.

이 자습서에서는 Ubuntu 22.04 서버용 LEMP 스택(Linux, Nginx, MySQL 및 PHP)에 WordPress 인스턴스를 설정하는 데 중점을 둘 것입니다.

DigitalOcean의 관리형 Wordpress 서비스를 사용할 수도 있습니다.

전제 조건

이 자습서를 완료하려면 Ubuntu 22.04 서버에 대한 액세스 권한이 필요합니다. LEMP와 함께 WordPress를 서버에 성공적으로 설치하려면 이 자습서를 시작하기 전에 다음 작업도 수행해야 합니다.

  • 서버에 sudo 사용자 만들기: 이 자습서의 단계는 sudo 권한이 있는 루트가 아닌 사용자를 사용하는 것입니다. Ubuntu 22.04 초기 서버 설정 자습서에 따라 sudo 권한이 있는 사용자를 생성할 수 있습니다.
  • LEMP 스택 설치: WordPress가 올바르게 작동하려면 웹 서버, 데이터베이스 및 PHP가 필요합니다. LEMP 스택(Linux, Nginx, MySQL 및 PHP)을 설정하면 이러한 요구 사항을 모두 충족합니다. 이 소프트웨어를 설치하고 구성하려면 이 자습서를 따르십시오.

이러한 구성 요소를 직접 설정하는 대신 DigitalOcean의 LEMP 원클릭 설치 앱으로 이미 LEMP 스택이 설치된 Ubuntu 22.04 서버를 신속하게 프로비저닝할 수 있습니다.

하지만 이 튜토리얼에서는 여전히 관리 sudo 사용자와 서버에 구성된 Nginx 서버 블록이 있다고 가정합니다. LEMP 1-click 앱으로 프로비저닝된 서버가 있더라도 Nginx 서버 구성 블록의 1, 2, 3, 5단계를 따르고 PHP 프로세서를 사용하도록 Nginx를 구성해야 합니다.

  • SSL로 사이트 보호: WordPress는 동적 콘텐츠를 제공하고 사용자 인증 및 승인을 처리합니다. TLS/SSL은 연결이 안전하도록 사이트의 트래픽을 암호화할 수 있는 기술입니다. SSL을 설정하는 방법은 사이트에 대한 도메인 이름이 있는지 여부에 따라 다릅니다.\n
    • 도메인 이름이 있는 경우 사이트를 보호하는 가장 쉬운 방법은 신뢰할 수 있는 무료 인증서를 제공하는 Let's Encrypt를 사용하는 것입니다. 이를 설정하려면 Nginx용 Let’s Encrypt 가이드를 따르세요.
    • 도메인이 없고 테스트 또는 개인 용도로 이 구성을 사용하는 경우 대신 자체 서명된 인증서를 사용할 수 있습니다. 이는 동일한 유형의 암호화를 제공하지만 도메인 유효성 검사가 없습니다. 설정하려면 Nginx용 자체 서명 SSL 가이드를 따르세요.

    설정을 마치면 계속하려면 sudo 사용자로 서버에 로그인하십시오.

    1단계 - WordPress용 MySQL 데이터베이스 및 사용자 생성

    WordPress는 MySQL을 사용하여 사이트 및 사용자 정보를 관리하고 저장합니다. 이미 MySQL이 설치되어 있지만 WordPress에서 사용할 데이터베이스와 사용자를 생성해 보겠습니다.

    시작하려면 MySQL 루트(관리자) 계정에 로그인합니다. MySQL이 auth_socket 인증 플러그인(기본값)을 사용하도록 구성된 경우 sudo를 사용하여 MySQL 관리 계정에 로그인할 수 있습니다.

    1. sudo mysql

    MySQL 루트 계정의 암호를 사용하도록 인증 방법을 변경한 경우 대신 다음 명령을 사용하십시오.

    1. mysql -u root -p

    MySQL 루트 계정에 대해 설정한 암호를 입력하라는 메시지가 표시됩니다.

    로그인한 후 WordPress가 제어할 수 있는 별도의 데이터베이스를 만듭니다. 원하는 대로 호출할 수 있지만 이 가이드에서는 간단하게 유지하기 위해 wordpress를 사용합니다. 다음을 입력하여 WordPress용 데이터베이스를 생성할 수 있습니다.

    1. CREATE DATABASE wordpress DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;

    참고: 모든 MySQL 문은 세미콜론(;)으로 끝나야 합니다. 오류가 발생한 경우 세미콜론이 있는지 확인하십시오.

    다음으로, 새 데이터베이스에서 작업하는 데 독점적으로 사용할 별도의 MySQL 사용자 계정을 생성하겠습니다. 단일 목적의 데이터베이스와 계정을 만드는 것은 관리 및 보안 관점에서 좋은 생각입니다. 이 가이드에서는 wordpressuser라는 이름을 사용합니다. 원하는 경우 자유롭게 변경하세요.

    다음 명령에서는 계정을 만들고 암호를 설정하고 만든 데이터베이스에 대한 액세스 권한을 부여합니다. 여기에서 강력한 암호를 선택해야 합니다.

    1. CREATE USER 'wordpressuser'@'localhost' IDENTIFIED BY 'password';
    2. GRANT ALL ON wordpress.* TO 'wordpressuser'@'localhost';

    이제 WordPress용으로 특별히 만들어진 데이터베이스와 사용자 계정이 생겼습니다.

    데이터베이스 작업이 완료되면 다음을 입력하여 MySQL을 종료합니다.

    1. EXIT;

    MySQL 세션이 종료되고 일반 Linux 셸로 돌아갑니다.

    2단계 - 추가 PHP 확장 설치

    LEMP 스택을 설정할 때 PHP가 MySQL과 통신하도록 하려면 최소한의 확장 세트가 필요했습니다. WordPress 및 많은 플러그인은 추가 PHP 확장을 활용하며 이 튜토리얼에서는 몇 가지를 더 사용할 것입니다.

    다음을 입력하여 WordPress에서 사용할 수 있는 가장 인기 있는 PHP 확장 프로그램을 다운로드하고 설치해 보겠습니다.

    1. sudo apt update
    1. sudo apt install php-curl php-gd php-intl php-mbstring php-soap php-xml php-xmlrpc php-zip

    참고: 각 WordPress 플러그인에는 고유한 요구 사항이 있습니다. 일부는 추가 PHP 확장 패키지를 설치해야 할 수도 있습니다. PHP 요구 사항을 알아보려면 플러그인 설명서를 확인하십시오. 사용 가능한 경우 위에서 설명한 것처럼 apt로 설치할 수 있습니다.

    확장 설치를 마쳤으면 실행 중인 PHP 프로세서가 새로 설치된 기능을 활용할 수 있도록 PHP-FPM 프로세스를 다시 시작하십시오.

    1. sudo systemctl restart php8.1-fpm

    이제 필요한 모든 PHP 확장이 서버에 설치되었습니다.

    3단계 - Nginx 구성

    다음으로 Nginx 서버 블록 파일을 약간 조정해 보겠습니다. 전제 조건 자습서에 따라 /etc/nginx/sites-available/ 디렉터리에 서버의 도메인 이름 또는 IP 주소에 응답하도록 구성되고 TLS로 보호되는 사이트에 대한 구성 파일이 있어야 합니다. /SSL 인증서. 여기서는 /etc/nginx/sites-available/wordpress를 예로 사용하지만 해당하는 경우 구성 파일의 경로를 대체해야 합니다.

    또한 이 가이드에서는 /var/www/wordpressWordPress 설치의 루트 디렉터리로 사용합니다. 다시 말하지만, 자신의 구성에 지정된 웹 루트를 사용해야 합니다.

    참고: /etc/nginx/sites-available/default 기본 구성을 사용하고 있을 수 있습니다(/var/www/html를 웹 루트로 사용). 이 서버에서 하나의 웹사이트만 호스팅하려는 경우에 사용하는 것이 좋습니다. 그렇지 않은 경우 필요한 구성을 사이트당 하나의 파일로 논리적 청크로 분할하는 것이 가장 좋습니다.

    시작하려면 sudo 권한으로 사이트의 서버 블록 파일을 엽니다.

    1. sudo nano /etc/nginx/sites-available/wordpress

    기본 server 블록 내에서 몇 가지 location 블록을 추가해 보겠습니다.

    요청을 기록하지 않으려는 /favicon.ico/robots.txt에 대한 요청에 대해 정확히 일치하는 위치 블록을 생성하여 시작하십시오.

    정규식 위치를 사용하여 정적 파일에 대한 모든 요청을 일치시킵니다. 이러한 요청은 일반적으로 서비스 비용이 많이 드는 리소스이기 때문에 이러한 요청에 대한 로깅을 다시 해제하고 캐시 가능성이 높은 것으로 표시합니다. 사이트에서 사용할 수 있는 다른 파일 확장자를 포함하도록 이 정적 파일 목록을 조정할 수 있습니다.

    server {
        . . .
    
        location = /favicon.ico { log_not_found off; access_log off; }
        location = /robots.txt { log_not_found off; access_log off; allow all; }
        location ~* \.(css|gif|ico|jpeg|jpg|js|png)$ {
            expires max;
            log_not_found off;
        }
        . . .
    }
    

    기존 location / 블록 내부에서 try_files 목록을 조정해 보겠습니다. 줄 앞에 파운드 기호(#)를 추가하여 기본 설정을 주석 처리한 다음 강조 표시된 줄을 추가합니다. 이렇게 하면 기본 옵션으로 404 오류를 반환하는 대신 제어가 요청 인수와 함께 index.php 파일로 전달됩니다.

    다음과 같아야 합니다.

    server {
        . . .
        location / {
            #try_files $uri $uri/ =404;
            try_files $uri $uri/ /index.php$is_args$args;
        }
        . . .
    }
    

    완료되면 파일을 저장하고 닫습니다.

    이제 다음을 입력하여 구문 오류에 대한 구성을 확인하겠습니다.

    1. sudo nginx -t

    오류가 보고되지 않으면 다음을 입력하여 Nginx를 다시 로드합니다.

    1. sudo systemctl reload nginx

    다음으로 WordPress를 다운로드하고 설정하겠습니다.

    4단계 - 워드프레스 다운로드

    이제 서버 소프트웨어가 구성되었으므로 WordPress를 다운로드하고 설정하겠습니다. 보안상의 이유로 항상 프로젝트 웹 사이트에서 직접 최신 버전의 WordPress를 다운로드하는 것이 좋습니다.

    쓰기 가능한 디렉토리로 변경한 후 다음을 입력하여 압축 릴리스를 다운로드하십시오.

    1. cd /tmp

    이렇게 하면 디렉터리가 임시 폴더로 변경됩니다. 그런 다음 다음 명령을 입력하여 최신 버전의 WordPress를 압축 파일로 다운로드합니다.

    1. curl -LO https://wordpress.org/latest.tar.gz

    참고: -LO 플래그는 압축 파일의 소스에 직접 도달하는 데 사용됩니다. -L은 리디렉션의 경우 파일 가져오기가 성공하도록 보장하고 -O는 동일한 이름을 가진 로컬 파일로 원격 파일의 출력을 작성합니다. curl 명령에 대해 자세히 알아보려면 cURL을 사용하여 파일을 다운로드하는 방법을 방문하세요.

    압축 파일을 추출하여 WordPress 디렉토리 구조를 만듭니다.

    1. tar xzvf latest.tar.gz

    이 파일을 잠시 문서 루트로 이동하지만 그 전에 샘플 구성 파일을 WordPress가 실제로 읽는 파일 이름으로 복사해 보겠습니다.

    1. cp /tmp/wordpress/wp-config-sample.php /tmp/wordpress/wp-config.php

    이제 디렉토리의 전체 내용을 문서 루트에 복사해 보겠습니다. -a 플래그를 사용하여 권한이 유지되는지 확인하고 소스 디렉토리 끝에 점을 사용하여 디렉토리 내의 모든 항목(숨겨진 파일 포함)을 복사해야 함을 나타냅니다.

    1. sudo cp -a /tmp/wordpress/. /var/www/<^>your_domain/wordpress

    이제 파일이 준비되었으므로 www-data 사용자 및 그룹에 소유권을 할당합니다. 이것은 Nginx가 실행되는 사용자 및 그룹이며 Nginx는 웹 사이트를 제공하고 자동 업데이트를 수행하기 위해 WordPress 파일을 읽고 쓸 수 있어야 합니다.

    1. sudo chown -R www-data:www-data /var/www/your_domain/wordpress

    이제 파일이 서버의 문서 루트에 있고 올바른 소유권을 가지지만 여전히 몇 가지 추가 구성을 완료해야 합니다.

    5단계 - WordPress 구성 파일 설정

    다음으로 기본 WordPress 구성 파일을 변경해 보겠습니다.

    파일을 열면 먼저 일부 비밀 키를 조정하여 설치에 대한 보안을 제공합니다. WordPress는 이러한 값에 대한 보안 생성기를 제공하므로 값을 직접 생성할 필요가 없습니다. 이들은 내부적으로만 사용되므로 여기에 복잡하고 안전한 값이 있어도 유용성이 손상되지 않습니다.

    WordPress 비밀 키 생성기에서 보안 값을 가져오려면 다음을 입력하십시오.

    1. curl -s https://api.wordpress.org/secret-key/1.1/salt/

    다음과 같은 고유한 값을 반환합니다.

    경고: 매번 고유한 값을 요청하는 것이 중요합니다. 아래 표시된 값을 복사하지 마십시오!

    Output
    define('AUTH_KEY', '1jl/vqfs<XhdXoAPz9 DO NOT COPY THESE VALUES c_j{iwqD^<+c9.k<J@4H'); define('SECURE_AUTH_KEY', 'E2N-h2]Dcvp+aS/p7X DO NOT COPY THESE VALUES {Ka(f;rv?Pxf})CgLi-3'); define('LOGGED_IN_KEY', 'W(50,{W^,OPB%PB<JF DO NOT COPY THESE VALUES 2;y&,2m%3]R6DUth[;88'); define('NONCE_KEY', 'll,4UC)7ua+8<!4VM+ DO NOT COPY THESE VALUES #`DXF+[$atzM7 o^-C7g'); define('AUTH_SALT', 'koMrurzOA+|L_lG}kf DO NOT COPY THESE VALUES 07VC*Lj*lD&?3w!BT#-'); define('SECURE_AUTH_SALT', 'p32*p,]z%LZ+pAu:VY DO NOT COPY THESE VALUES C-?y+K0DK_+F|0h{!_xY'); define('LOGGED_IN_SALT', 'i^/G2W7!-1H2OQ+t$3 DO NOT COPY THESE VALUES t6**bRVFSD[Hi])-qS`|'); define('NONCE_SALT', 'Q6]U:K?j4L%Z]}h^q7 DO NOT COPY THESE VALUES 1% ^qUswWgn+6&xqHN&%');

    보안 키를 설정하기 위해 구성 파일에 직접 붙여넣을 수 있는 구성 라인입니다. 지금 받은 출력을 복사합니다.

    이제 WordPress 구성 파일을 엽니다.

    1. sudo nano /var/www/your_domain/wordpress/wp-config.php

    해당 설정에 대한 더미 값이 포함된 섹션을 찾습니다. 다음과 같이 표시됩니다.

    . . .
    
    define('AUTH_KEY',         'put your unique phrase here');
    define('SECURE_AUTH_KEY',  'put your unique phrase here');
    define('LOGGED_IN_KEY',    'put your unique phrase here');
    define('NONCE_KEY',        'put your unique phrase here');
    define('AUTH_SALT',        'put your unique phrase here');
    define('SECURE_AUTH_SALT', 'put your unique phrase here');
    define('LOGGED_IN_SALT',   'put your unique phrase here');
    define('NONCE_SALT',       'put your unique phrase here');
    
    . . .
    

    해당 줄을 삭제하고 명령줄에서 복사한 값을 붙여넣습니다.

    . . .
    
    define('AUTH_KEY',         'VALUES COPIED FROM THE COMMAND LINE');
    define('SECURE_AUTH_KEY',  'VALUES COPIED FROM THE COMMAND LINE');
    define('LOGGED_IN_KEY',    'VALUES COPIED FROM THE COMMAND LINE');
    define('NONCE_KEY',        'VALUES COPIED FROM THE COMMAND LINE');
    define('AUTH_SALT',        'VALUES COPIED FROM THE COMMAND LINE');
    define('SECURE_AUTH_SALT', 'VALUES COPIED FROM THE COMMAND LINE');
    define('LOGGED_IN_SALT',   'VALUES COPIED FROM THE COMMAND LINE');
    define('NONCE_SALT',       'VALUES COPIED FROM THE COMMAND LINE');
    
    . . .
    

    다음으로 파일 시작 부분에서 일부 데이터베이스 연결 설정을 수정하겠습니다. 데이터베이스 이름, 데이터베이스 사용자 및 MySQL 내에서 구성된 관련 암호를 조정해야 합니다.

    다른 변경 사항은 WordPress가 파일 시스템에 쓰기 위해 사용하는 방법을 설정하는 것입니다. 웹 서버에 필요한 곳에 쓸 수 있는 권한을 부여했으므로 명시적으로 파일 시스템 방법을 "direct\로 설정할 수 있습니다. 현재 설정으로 이것을 설정하지 않으면 WordPress에서 일부 작업을 수행할 때 FTP 자격 증명을 묻는 메시지가 표시됩니다. . 데이터베이스 연결 설정 아래 또는 파일의 다른 위치에 이 설정을 추가합니다.

    . . .
    
    define( 'DB_NAME', 'wordpress' );
    
    /** MySQL database username */
    define( 'DB_USER', 'wordpressuser' );
    
    /** MySQL database password */
    define( 'DB_PASSWORD', 'password' );
    
    . . .
    
    define( 'FS_METHOD', 'direct' );
    

    완료되면 파일을 저장하고 닫습니다.

    6단계 - 웹 인터페이스를 통해 설치 완료

    이제 서버 구성이 완료되었으므로 WordPress의 웹 인터페이스를 통해 설치를 완료할 수 있습니다.

    웹 브라우저에서 서버의 도메인 이름 또는 공용 IP 주소로 이동합니다.

    http://server_domain_or_IP/wordpress
    

    사용하려는 언어를 선택하십시오:

    다음으로 기본 설정 페이지로 이동합니다.

    WordPress 사이트의 이름을 선택하고 사용자 이름을 선택합니다(보안을 위해 "admin”과 같은 것을 선택하지 않는 것이 좋습니다). 강력한 비밀번호가 자동으로 생성됩니다. 이 비밀번호를 저장하거나 다른 강력한 비밀번호를 선택하세요.

    이메일 주소를 입력하고 검색 엔진이 귀하의 사이트를 인덱싱하지 못하도록 할지 여부를 선택하십시오.

    미리보기를 클릭하면 로그인하라는 메시지가 표시되는 페이지로 이동합니다.

    로그인하면 WordPress 관리 대시보드로 이동합니다.

    결론

    WordPress가 설치되어 있고 사용할 준비가 되어 있어야 합니다! 몇 가지 일반적인 다음 단계는 게시물에 대한 퍼머링크 설정을 선택하거나(설정 > 퍼머링크에서 찾을 수 있음) 새 테마를 선택하는 것입니다(모양 > 테마에서). WordPress를 처음 사용하는 경우 인터페이스를 조금 탐색하여 새 CMS에 익숙해지십시오.

    WordPress Droplet을 설치하기 위한 원클릭 솔루션을 찾고 있다면 WordPress 원클릭 앱에 대해 자세히 알아보세요.