웹사이트 검색

Ubuntu 16.04에서 LAMP로 WordPress를 설치하는 방법


소개

WordPress는 인터넷에서 가장 인기 있는 CMS(콘텐츠 관리 시스템)입니다. PHP 처리를 통해 MySQL 백엔드 위에 유연한 블로그와 웹사이트를 쉽게 설정할 수 있습니다. WordPress는 놀라운 채택률을 보였으며 웹 사이트를 빠르게 시작하고 실행하는 데 탁월한 선택입니다. 설정 후 거의 모든 관리는 웹 프런트엔드를 통해 수행할 수 있습니다.

이 가이드에서는 Ubuntu 16.04 서버의 LAMP 스택(Linux, Apache, MySQL 및 PHP)에 WordPress 인스턴스를 설정하는 데 중점을 둘 것입니다.

전제 조건

이 자습서를 완료하려면 Ubuntu 16.04 서버에 액세스해야 합니다.

이 가이드를 시작하기 전에 다음 작업을 수행해야 합니다.

  • 서버에 sudo 사용자 만들기: sudo 권한이 있는 루트가 아닌 사용자를 사용하여 이 가이드의 단계를 완료합니다. Ubuntu 16.04 초기 서버 설정 가이드에 따라 sudo 권한이 있는 사용자를 생성할 수 있습니다.
  • LAMP 스택 설치: WordPress가 올바르게 작동하려면 웹 서버, 데이터베이스 및 PHP가 필요합니다. LAMP 스택(Linux, Apache, MySQL 및 PHP)을 설정하면 이러한 모든 요구 사항이 충족됩니다. 이 소프트웨어를 설치하고 구성하려면 이 가이드를 따르십시오.
  • SSL로 사이트 보호: WordPress는 동적 콘텐츠를 제공하고 사용자 인증 및 승인을 처리합니다. TLS/SSL은 연결이 안전하도록 사이트의 트래픽을 암호화할 수 있는 기술입니다. SSL을 설정하는 방법은 사이트에 대한 도메인 이름이 있는지 여부에 따라 다릅니다.\n
    • 도메인 이름이 있는 경우... 사이트를 보호하는 가장 쉬운 방법은 신뢰할 수 있는 무료 인증서를 제공하는 Let's Encrypt를 사용하는 것입니다. 이를 설정하려면 Apache용 Let’s Encrypt 가이드를 따르세요.
    • 도메인이 없고... 이 구성을 테스트 또는 개인 용도로 사용하는 경우 대신 자체 서명된 인증서를 사용할 수 있습니다. 이는 동일한 유형의 암호화를 제공하지만 도메인 유효성 검사가 없습니다. 설정하려면 Apache용 자체 서명 SSL 가이드를 따르세요.

    설정 단계를 마치면 sudo 사용자로 서버에 로그인하고 아래를 계속합니다.

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

    우리가 취할 첫 번째 단계는 준비 단계입니다. WordPress는 MySQL을 사용하여 사이트 및 사용자 정보를 관리하고 저장합니다. MySQL은 이미 설치되어 있지만 WordPress에서 사용할 데이터베이스와 사용자를 만들어야 합니다.

    시작하려면 다음 명령을 실행하여 MySQL 루트(관리자) 계정에 로그인합니다.

    1. mysql -u root -p

    소프트웨어를 설치할 때 MySQL 루트 계정에 대해 설정한 암호를 입력하라는 메시지가 표시됩니다.

    첫째, 워드프레스가 제어할 수 있는 별도의 데이터베이스를 만들 수 있습니다. 원하는 대로 호출할 수 있지만 이 가이드에서는 간단하게 유지하기 위해 wordpress를 사용합니다. 다음을 입력하여 WordPress용 데이터베이스를 만들 수 있습니다.

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

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

    다음으로 새 데이터베이스에서 작업하는 데만 사용할 별도의 MySQL 사용자 계정을 만들 것입니다. 단일 기능 데이터베이스 및 계정을 생성하는 것은 관리 및 보안 관점에서 좋은 생각입니다. 이 가이드에서는 wordpressuser라는 이름을 사용합니다. 원하는 경우 자유롭게 변경하십시오.

    이 계정을 만들고 암호를 설정하고 우리가 만든 데이터베이스에 대한 액세스 권한을 부여할 것입니다. 다음 명령을 입력하여 이를 수행할 수 있습니다. 여기에서 데이터베이스 사용자에 대해 강력한 암호를 선택해야 합니다.

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

    이제 WordPress용으로 특별히 만들어진 데이터베이스와 사용자 계정이 생겼습니다. MySQL의 현재 인스턴스가 최근 변경 사항을 알 수 있도록 권한을 플러시해야 합니다.

    1. FLUSH PRIVILEGES;

    다음을 입력하여 MySQL을 종료합니다.

    1. EXIT;

    2단계: 추가 PHP 확장 설치

    LAMP 스택을 설정할 때 PHP가 MySQL과 통신하도록 하기 위해 최소한의 확장만 필요했습니다. WordPress 및 많은 플러그인은 추가 PHP 확장을 활용합니다.

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

    1. sudo apt-get update
    2. sudo apt-get install php-curl php-gd php-mbstring php-mcrypt php-xml php-xmlrpc

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

    다음 섹션에서 이러한 새로운 확장을 활용하기 위해 Apache를 다시 시작할 것입니다. 추가 플러그인을 설치하기 위해 여기로 돌아가는 경우 다음을 입력하여 지금 Apache를 다시 시작할 수 있습니다.

    1. sudo systemctl restart apache2

    3단계: .htaccess 재정의 및 재작성을 허용하도록 Apache 구성 조정

    다음으로 Apache 구성을 약간 조정할 것입니다. 현재 .htaccess 파일은 사용할 수 없습니다. WordPress 및 많은 WordPress 플러그인은 웹 서버의 동작에 대한 디렉토리 내 조정을 위해 이러한 파일을 광범위하게 사용합니다.

    또한 WordPress 퍼머링크가 올바르게 작동하는 데 필요한 mod_rewrite를 활성화합니다.

    .htaccess 재정의 활성화

    기본 Apache 구성 파일을 열어 첫 번째 변경을 수행합니다.

    1. sudo nano /etc/apache2/apache2.conf

    .htaccess 파일을 허용하려면 문서 루트를 가리키는 Directory 블록 내에서 AllowOverride 지시문을 설정해야 합니다. 파일 맨 아래에 다음 블록을 추가합니다.

    . . .
    
    <Directory /var/www/html/>
    	AllowOverride All
    </Directory>
    
    . . .
    

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

    재작성 모듈 활성화

    다음으로 WordPress permalink 기능을 활용할 수 있도록 mod_rewrite를 활성화할 수 있습니다.

    1. sudo a2enmod rewrite

    변경 사항 활성화

    변경 사항을 구현하기 전에 구문 오류가 없는지 확인하십시오.

    1. sudo apache2ctl configtest

    출력에는 다음과 같은 메시지가 있을 수 있습니다.

    Output
    AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set the 'ServerName' directive globally to suppress this message Syntax OK

    맨 윗줄을 표시하지 않으려면 서버의 도메인 또는 IP 주소를 가리키는 /etc/apache2/apache2.conf 파일에 ServerName 지시문을 추가하기만 하면 됩니다. 그러나 이것은 단지 메시지일 뿐이며 당사 사이트의 기능에는 영향을 미치지 않습니다. 출력에 Syntax OK가 포함되어 있으면 계속할 수 있습니다.

    변경 사항을 구현하려면 Apache를 다시 시작하십시오.

    1. sudo systemctl restart apache2

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

    이제 서버 소프트웨어가 구성되었으므로 WordPress를 다운로드하고 설정할 수 있습니다. 특히 보안상의 이유로 해당 사이트에서 항상 최신 버전의 WordPress를 다운로드하는 것이 좋습니다.

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

    1. cd /tmp
    2. curl -O https://wordpress.org/latest.tar.gz

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

    1. tar xzvf latest.tar.gz

    이 파일을 잠시 문서 루트로 옮길 것입니다. 그 전에 더미 .htaccess 파일을 추가하고 WordPress에서 나중에 사용할 수 있도록 권한을 설정할 수 있습니다.

    다음을 입력하여 파일을 만들고 권한을 설정합니다.

    1. touch /tmp/wordpress/.htaccess
    2. chmod 660 /tmp/wordpress/.htaccess

    또한 샘플 구성 파일을 WordPress가 실제로 읽는 파일 이름으로 복사합니다.

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

    또한 업그레이드 디렉토리를 생성하여 WordPress가 소프트웨어 업데이트 후 자체적으로 이 작업을 수행하려고 할 때 권한 문제가 발생하지 않도록 할 수 있습니다.

    1. mkdir /tmp/wordpress/wp-content/upgrade

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

    1. sudo cp -a /tmp/wordpress/. /var/www/html

    5단계: WordPress 디렉토리 구성

    웹 기반 WordPress 설정을 수행하기 전에 WordPress 디렉토리의 일부 항목을 조정해야 합니다.

    소유권 및 권한 조정

    우리가 달성해야 할 중요한 일 중 하나는 합당한 파일 권한과 소유권을 설정하는 것입니다. 일반 사용자로서 이러한 파일에 쓸 수 있어야 하며 웹 서버가 올바르게 작동하려면 특정 파일과 디렉토리에 액세스하고 조정할 수 있어야 합니다.

    문서 루트에 있는 모든 파일에 대한 소유권을 사용자 이름에 할당하는 것으로 시작하겠습니다. 이 가이드에서는 sammy를 사용자 이름으로 사용하지만 sudo 사용자 이름과 일치하도록 변경해야 합니다. www-data 그룹에 그룹 소유권을 할당합니다.

    1. sudo chown -R sammy:www-data /var/www/html

    다음으로 문서 루트 내의 각 디렉토리에 setgid 비트를 설정합니다. 이로 인해 이러한 디렉토리 내에서 생성된 새 파일은 생성 사용자의 기본 그룹 대신 상위 디렉토리의 그룹(방금 www-data로 설정)을 상속합니다. 이렇게 하면 명령줄에서 디렉터리에 파일을 만들 때마다 웹 서버가 여전히 파일에 대한 그룹 소유권을 갖게 됩니다.

    다음을 입력하여 WordPress 설치의 모든 디렉토리에 setgid 비트를 설정할 수 있습니다.

    1. sudo find /var/www/html -type d -exec chmod g+s {} \;

    우리가 조정할 몇 가지 다른 세분화된 권한이 있습니다. 먼저 웹 인터페이스가 테마 및 플러그인을 변경할 수 있도록 wp-content 디렉토리에 대한 그룹 쓰기 권한을 부여합니다.

    1. sudo chmod g+w /var/www/html/wp-content

    이 프로세스의 일부로 웹 서버에 다음 두 디렉토리의 모든 콘텐츠에 대한 쓰기 액세스 권한을 부여합니다.

    1. sudo chmod -R g+w /var/www/html/wp-content/themes
    2. sudo chmod -R g+w /var/www/html/wp-content/plugins

    이것은 시작하기에 합당한 권한 설정이어야 합니다. 일부 플러그인 및 절차에는 추가 조정이 필요할 수 있습니다.

    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. nano /var/www/html/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단계: 웹 인터페이스를 통해 설치 완료

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

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

    http://server_domain_or_IP
    

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

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

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

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

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

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

    워드프레스 업그레이드

    WordPress 업그레이드를 사용할 수 있게 되면 현재 권한으로 인터페이스를 통해 설치할 수 없습니다.

    여기에서 선택한 권한은 업그레이드 사이의 99% 시간 동안 보안과 유용성 간에 적절한 균형을 제공하기 위한 것입니다. 그러나 소프트웨어가 업데이트를 자동으로 적용하기에는 너무 제한적입니다.

    업데이트를 사용할 수 있게 되면 sudo 사용자로 서버에 다시 로그인하십시오. 임시로 웹 서버 프로세스에 전체 문서 루트에 대한 액세스 권한을 부여합니다.

    1. sudo chown -R www-data /var/www/html

    이제 WordPress 관리 패널로 돌아가서 업데이트를 적용하십시오.

    완료되면 보안을 위해 권한을 다시 잠급니다.

    1. sudo chown -R sammy /var/www/html

    이는 WordPress 자체에 업그레이드를 적용할 때만 필요합니다.

    결론

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