우분투 20.04에서 MySQL을 사용하여 사이트 성능을 최적화하기 위한 원격 데이터베이스 설정 방법

소개

애플리케이션이나 웹사이트가 성장함에 따라 현재의 서버 설정을 벗어날 수 있는 시점이 올 수 있습니다. 웹 서버와 데이터베이스 백엔드를 동일한 장비에 호스팅하고 있다면, 각각이 자체 하드웨어에서 작동하고 방문자 요청에 대한 응답 부하를 공유할 수 있도록 이 두 기능을 분리하는 것이 좋은 아이디어일 수 있습니다.

이 가이드에서는 웹 애플리케이션이 연결할 수 있는 원격 MySQL 데이터베이스 서버를 구성할 것입니다. 워드프레스는 작업할 예제로 사용되었지만, 이 기술은 MySQL을 백엔드로 하는 모든 애플리케이션에 널리 적용될 수 있습니다.

전제 조건

이 튜토리얼을 시작하기 전에 다음이 필요합니다:

  • 개의 Ubuntu 20.04 서버가 있습니다. 각각은 sudo 권한을 가진 루트가 아닌 사용자와 UFW 방화벽이 활성화되어 있어야 합니다. 이는 Ubuntu 20.04에서 초기 서버 설정 튜토리얼에서 설명된 내용과 같습니다. 이 서버 중 하나는 MySQL 백엔드를 호스팅하며, 이 가이드 전반에 걸쳐 데이터베이스 서버로 언급됩니다. 다른 하나는 데이터베이스 서버에 원격으로 연결되어 웹 서버로 작동할 것이며, 마찬가지로 이 가이드에서는 웹 서버로 언급됩니다.
  • 데이터베이스 서버에서는: MySQL이 설치되어 있습니다. 이를 설정하려면 Ubuntu 20.04에 MySQL 설치 방법을 따르십시오.
  • 웹 서버에서: Nginx와 PHP가 설치되어 있습니다. 저희 튜토리얼 Ubuntu 20.04에 Linux, Nginx, MySQL, PHP(LEMP 스택) 설치하기는 이 과정을 안내해 드릴 것입니다만, 이 튜토리얼의 2단계를 건너뛰십시오. 해당 단계는 MySQL 설치에 집중하는데, 데이터베이스 서버에 MySQL을 설치할 것이기 때문입니다.
    • (선택 사항이지만 강력히 권장됨) Let’s Encrypt에서 TLS/SSL 인증서를 웹 서버에 설치합니다. 도메인 이름을 구매하고 서버에 대한 DNS 레코드를 설정해야 하지만 인증서 자체는 무료입니다. 저희 가이드 Ubuntu 20.04에서 Let’s Encrypt로 Nginx 보안하는 방법에서 이 인증서를 얻는 방법을 안내해 드립니다.

단계 1 — 데이터베이스 서버에서 원격 연결을 수신하도록 MySQL 구성

데이터를 별도의 서버에 저장하는 것은 한 대의 컴퓨터 구성의 성능 한계에 도달한 후 우아하게 확장하는 좋은 방법입니다. 또한 나중에 인프라를 더 확장하고 부하 분산하는 데 필요한 기본 구조를 제공합니다. 선행 자습서를 따라 MySQL을 설치한 후 다른 컴퓨터에서의 연결을 허용하려면 일부 구성 값을 변경해야합니다.

MySQL 서버의 대부분의 구성 변경은 기본적으로 /etc/mysql/mysql.conf.d/ 디렉토리에 저장되는 mysqld.cnf 파일에서 수행할 수 있습니다. 선호하는 편집기에서 루트 권한으로 이 파일을 데이터베이스 서버에서 엽니다. 이 예제에서는 nano를 사용합니다:

  1. sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf

이 파일은 대괄호([])로 레이블이 지정된 섹션으로 나뉩니다. mysqld로 레이블이 지정된 섹션을 찾습니다:

/etc/mysql/mysql.conf.d/mysqld.cnf
. . .
[mysqld]
. . .

이 섹션 내에서 bind-address라는 매개 변수를 찾습니다. 이는 데이터베이스 소프트웨어가 연결을 수신할 네트워크 주소를 알려줍니다.

기본적으로 이 값은 127.0.0.1로 설정되어 있으며, 이는 MySQL이 로컬 연결만을 찾도록 구성되었음을 의미합니다. 여기서 서버에 연결할 수 있는 외부 IP 주소로 변경해야 합니다.

만약 두 서버가 사설 네트워킹 기능을 갖춘 데이터 센터에 있다면, 데이터베이스 서버의 사설 네트워크 IP를 사용하십시오. 그렇지 않으면 공인 IP 주소를 사용할 수 있습니다:

/etc/mysql/mysql.conf.d/mysqld.cnf
[mysqld]
. . .
bind-address = db_server_ip

인터넷을 통해 데이터베이스에 연결할 것이므로, 데이터를 안전하게 유지하기 위해 암호화된 연결이 필요합니다. MySQL 연결을 암호화하지 않으면, 네트워크 상에서 웹과 데이터베이스 서버 사이에서 민감한 정보를 스니핑할 수 있는 사람이 있을 수 있습니다. MySQL 연결을 암호화하려면 방금 업데이트한 bind-address 라인 다음에 다음 라인을 추가하십시오:

/etc/mysql/mysql.conf.d/mysqld.cnf
[mysqld]
. . .
require_secure_transport = on
. . .

작업을 마치면 파일을 저장하고 닫으십시오. 만약 nano를 사용 중이라면, CTRL + X를 누르고 Y를 입력한 후 ENTER를 누르십시오.

SSL 연결을 사용하려면 몇 가지 키와 인증서를 생성해야 합니다. MySQL에는 이러한 파일을 자동으로 설정해주는 명령이 함께 제공됩니다. 다음 명령을 실행하여 필요한 파일을 생성하십시오. 또한 이를 mysql 사용자의 UID를 지정하여 MySQL 서버가 읽을 수 있도록 만듭니다:

  1. sudo mysql_ssl_rsa_setup --uid=mysql

MySQL이 구성을 업데이트하고 새 SSL 정보를 읽도록 하려면, 데이터베이스를 다시 시작해야 합니다:

  1. sudo systemctl restart mysql

서버가 이제 외부 인터페이스에서 수신 대기 중인지 확인하려면 다음 ss 명령을 실행하십시오:

  1. sudo ss -plunt | grep mysqld
Output
tcp LISTEN 0 70 127.0.0.1:33060 0.0.0.0:* users:(("mysqld",pid=4053,fd=22)) tcp LISTEN 0 151 db_server_ip:3306 0.0.0.0:* users:(("mysqld",pid=4053,fd=24))

ss는 서버의 네트워킹 시스템에 대한 통계를 출력합니다. 이 출력에서 mysqld라는 프로세스가 db_server_ip의 포트 3306에 연결되어 있음을 보여줍니다. 이는 서버가 적절한 인터페이스에서 수신 대기 중인 것을 확인하는데, 이는 표준 MySQL 포트입니다.

다음으로 방화벽에서 해당 포트를 열어서 트래픽을 허용합니다:

  1. sudo ufw allow mysql

MySQL에 대해 수행해야 할 모든 구성 변경사항입니다. 이제 데이터베이스와 몇 가지 사용자 프로필을 설정하여 그 중 하나를 사용하여 서버에 원격으로 액세스하게 됩니다.

단계 2 — WordPress 데이터베이스 및 데이터베이스 서버에서 원격 자격 증명 설정

MySQL 자체는 이제 외부 IP 주소에서 수신 대기 중이지만, 현재 원격 활성화된 사용자나 데이터베이스가 구성되어 있지 않습니다. WordPress용 데이터베이스 및 해당 데이터베이스에 액세스할 수 있는 두 사용자를 만듭니다.

먼저 root MySQL 사용자로 MySQL에 연결하십시오:

  1. sudo mysql

참고: 전제 조건 MySQL 자습서의 단계 3에서 설명한대로 암호 인증이 활성화된 경우 MySQL 셸에 액세스하기 위해 다음 명령을 사용해야 합니다:

  1. mysql -u root -p

이 명령을 실행한 후에는 MySQL 루트 암호를 입력하라는 메시지가 표시됩니다. 암호를 입력한 후에는 새로운 mysql> 프롬프트가 제공됩니다.

MySQL 프롬프트에서 WordPress에서 사용할 데이터베이스를 만듭니다. 나중에 쉽게 식별할 수 있도록 이 데이터베이스에는 알아볼 수 있는 이름을 지정하는 것이 유용할 수 있습니다. 여기에서는 wordpress로 지정합니다:

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

데이터베이스를 생성한 후에는 사용자 쌍을 만들어야 합니다. 로컬 전용 사용자와 웹 서버의 IP 주소에 바인딩된 원격 사용자를 생성합니다.

먼저 로컬 사용자인 local_db_user를 생성하고 선언에 localhost를 사용하여 이 계정이 로컬 연결 시도에만 일치하도록 합니다:

  1. CREATE USER 'local_db_user'@'localhost' IDENTIFIED BY 'password';

그런 다음 이 계정에게 wordpress 데이터베이스에 대한 완전한 액세스 권한을 부여합니다:

  1. GRANT ALL PRIVILEGES ON wordpress.* TO 'local_db_user'@'localhost';

이 사용자는 이제 WordPress 데이터베이스에서 어떠한 작업도 수행할 수 있지만, 이 계정은 로컬 머신의 연결에만 일치하므로 원격으로 사용할 수 없습니다. 이를 염두에 두고, 웹 서버에서만 연결이 일치하는 동반 계정을 만듭니다. 이를 위해 웹 서버의 IP 주소가 필요합니다.

주의: mysqld.cnf 파일에서 구성한 네트워크를 사용하는 IP 주소를 사용해야 합니다. 즉, mysqld.cnf 파일에서 사설 네트워킹 IP를 지정한 경우 다음 두 명령어에 웹 서버의 사설 IP를 포함해야 합니다. MySQL을 공용 인터넷을 사용하도록 구성한 경우 이를 웹 서버의 공용 IP 주소와 일치시켜야 합니다.

  1. CREATE USER 'remote_user'@'web_server_ip' IDENTIFIED BY 'password';

리모트 계정을 만든 후에 로컬 사용자와 동일한 권한을 부여하십시오:

  1. GRANT ALL PRIVILEGES ON wordpress.* TO 'remote_user'@'web_server_ip';

마지막으로, 권한을 플러시하여 MySQL이 이를 사용하기 시작하도록합니다:

  1. FLUSH PRIVILEGES;

그런 다음 MySQL 프롬프트를 종료하려면 다음을 입력하십시오:

  1. exit

새 데이터베이스와 원격 사용자를 설정했으므로, 웹 서버에서 데이터베이스에 연결할 수 있는지 테스트할 차례입니다.

단계 3 — 원격 및 로컬 연결 테스트

계속하기 전에 데이터베이스 서버인 로컬 머신 및 웹 서버에서 데이터베이스에 연결할 수 있는지 확인하는 것이 좋습니다.

먼저, 새 계정으로 로그인하여 로컬 연결을 테스트하십시오:

  1. mysql -u local_db_user -p

프롬프트에서 암호를 입력하라는 메시지가 표시되면 이 계정을 위해 설정한 암호를 입력하십시오.

만약 MySQL 프롬프트가 나타나면, 로컬 연결이 성공한 것입니다. 다시 종료하려면 다음을 입력하십시오:

  1. exit

다음으로, 원격 연결을 테스트하기 위해 웹 서버에 로그인하십시오:

  1. ssh remote_user@web_server_ip

원격 데이터베이스에 액세스하려면 웹 서버에 MySQL 클라이언트 유틸리티를 설치해야합니다. 먼저 최근에 패키지 캐시를 업데이트하십시오:

  1. sudo apt update

그런 다음 MySQL 클라이언트 유틸리티를 설치하십시오:

  1. sudo apt install mysql-client

이후에 다음 구문을 사용하여 데이터베이스 서버에 연결하십시오:

  1. mysql -u remote_user -h db_server_ip -p

다시 한번 확인해야 할 사항은 데이터베이스 서버의 올바른 IP 주소를 사용하고 있는지입니다. MySQL을 개인 네트워크에서 듣도록 구성한 경우 데이터베이스의 개인 네트워크 IP를 입력하십시오. 그렇지 않으면 데이터베이스 서버의 공용 IP 주소를 입력하십시오.

remote_user 계정의 비밀번호를 입력해야 합니다. 그것을 입력한 후 모든 것이 예상대로 작동하는지 확인하면 MySQL 프롬프트로 이동됩니다. 다음 명령을 사용하여 연결이 SSL을 사용하는지 확인하십시오:

  1. status

연결이 실제로 SSL을 사용하는 경우 다음과 같이 SSL: 라인이 이를 나타낼 것입니다:

Output
-------------- mysql Ver 8.0.29-0ubuntu0.20.04.2 for Linux on x86_64 ((Ubuntu)) Connection id: 14 Current database: Current user: remote_user@web_server_ip SSL: Cipher in use is TLS_AES_256_GCM_SHA384 Current pager: stdout Using outfile: '' Using delimiter: ; Server version: 8.0.29-0ubuntu0.20.04.2 (Ubuntu) Protocol version: 10 Connection: db_server_ip via TCP/IP Server characterset: utf8mb4 Db characterset: utf8mb4 Client characterset: utf8mb4 Conn. characterset: utf8mb4 TCP port: 3306 Binary data as: Hexadecimal Uptime: 1 hour 8 min 28 sec Threads: 2 Questions: 69 Slow queries: 0 Opens: 206 Flush tables: 3 Open tables: 125 Queries per second avg: 0.016 --------------

원격으로 연결할 수 있는지 확인한 후에 프롬프트를 종료하십시오:

  1. exit

로컬 액세스 및 웹 서버로의 액세스를 확인했지만 다른 연결이 거부될 것임을 확인하지 않았습니다. 추가로 확인하기 위해 동일한 작업을 수행하는 제3의 서버에서 다음과 같은 것을 시도하여이 다른 서버가 특정 사용자 계정을 구성하지 않은 상태인지 확인하십시오:

다음 명령을 실행하기 전에 이전에 MySQL 클라이언트 유틸리티를 설치해야 할 수 있습니다:

  1. mysql -u wordpressuser -h db_server_ip -p

이 작업은 성공적으로 완료되지 않아야 하며 다음과 유사한 오류가 발생해야 합니다:

Output
ERROR 1130 (HY000): Host '203.0.113.12' is not allowed to connect to this MySQL server

이것은 기대된 동작입니다. 왜냐하면이 서버에서 연결할 수 있는 MySQL 사용자를 만들지 않았으며 또한 원하지 않는 사용자가 MySQL 서버에 액세스를 거부하도록 하기를 원하기 때문입니다.

원격 연결을 성공적으로 테스트한 후 웹 서버에 워드프레스를 설치할 수 있습니다.

단계 4 — 워드프레스 설치를 위한 웹 서버 준비

만약 선행 자습서를 따랐다면, Nginx와 PHP가 모두 설치되어 있어야 합니다. 워드프레스 및 그의 많은 플러그인은 많은 추가 PHP 확장을 활용합니다. 웹 서버에 워드프레스를 설치하기 전에, 워드프레스와 함께 사용할 몇 가지 PHP 확장을 설치하여 서버를 준비하세요:

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

참고: 각 워드프레스 플러그인은 자체 요구 사항을 갖고 있습니다. 일부는 추가 PHP 확장 패키지를 설치해야 할 수 있습니다. 플러그인 문서를 확인하여 해당 PHP 요구 사항을 확인하십시오. 사용 가능하다면, 이전 예제와 같이 apt를 사용하여 설치할 수 있습니다.

확장 기능을 설치한 후에는 실행 중인 PHP 프로세서가 새로 설치된 기능을 활용할 수 있도록 PHP-FPM 프로세스를 다시 시작하세요:

  1. sudo systemctl restart php7.4-fpm

다음으로, Nginx 서버 블록 파일을 몇 가지 수정하세요. 선행 자습서를 기반으로하면, /etc/nginx/sites-available/ 디렉토리에 사이트에 대한 구성 파일이 있어야 합니다. 또한 서버의 도메인 이름이나 IP 주소에 응답하도록 구성되어 있으며 TLS/SSL 인증서로 보호되어야합니다. 여기서는 예제 디렉토리로 /etc/nginx/sites-available/your_domain을 사용합니다. 해당하는 경우 구성 파일 경로를 대체하세요.

추가로, 이 예시 WordPress 설치에서는 루트 디렉터리로 /var/www/your_domain를 사용합니다. 다시 한 번 강조하지만, 자신의 구성에서 지정된 문서 루트를 사용하십시오.

참고: 이 서버에서 웹 사이트를 하나만 호스팅할 경우, /etc/nginx/sites-available/default 기본 구성과 문서 루트로 /var/www/html을 사용할 수 있습니다. 그렇지 않으면, 각 사이트마다 필요한 구성을 논리적인 청크로 분할하는 것이 좋습니다.

선호하는 편집기로 사이트의 서버 블록 파일을 엽니다. 이 예시에서는 nano를 사용합니다:

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

이 서버 블록 내에서 몇 개의 위치 블록을 추가하십시오. 먼저 /favicon.ico/robots.txt 요청에 대해 정확히 일치하는 위치 블록을 만들어야 합니다. 이들 요청에 대한 로깅을 원하지 않으므로 이를 무시할 것입니다.

정적 파일에 대한 요청을 일치시키는 정규 표현식 위치를 사용하여 이를 수행하고, 이러한 요청에 대한 로깅을 끄고, 이들을 고도로 캐시 가능하게 표시할 것입니다. 이 위치 블록을 통해 서비스할 수 있는 리소스가 일반적으로 비용이 많이 들기 때문에, 사이트에서 사용할 수 있는 다른 파일 확장자를 포함하는 정적 파일 목록을 조정할 수 있습니다:

/etc/nginx/sites-available/your_domain
server {
    server_name your_domain www.your_domain;
    root /var/www/your_domain;

    index index.html index.htm index.php;

    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 목록을 조정할 수 있습니다. 먼저, 첫 번째 줄을 우물표(#)로 주석 처리하여 기본 설정을 비활성화합니다. 그런 다음 다음 라인을 추가하십시오:

/etc/nginx/sites-available/your_domain
server {
    . . .
    location / {
        #try_files $uri $uri/ =404;
        try_files $uri $uri/ /index.php$is_args$args;
    }
    . . .
}

이 새로운 라인으로 구성을 업데이트하면, 기본 옵션으로 404 오류를 반환하는 대신에 요청 인수와 함께 index.php 파일로 제어가 전달됩니다.

모두, 파일의 상단 부분은 다음과 유사해야합니다:

/etc/nginx/sites-available/your_domain
server {
    server_name your_domain www.your_domain;
    root /var/www/your_domain;

    index index.html index.htm index.php;

    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 $uri $uri/ =404;
        try_files $uri $uri/ /index.php$is_args$args;
    }

  ...
}

작업을 완료하면 파일을 저장하고 닫으십시오.

구문 오류를 확인하려면 구성을 확인하십시오. 다음을 입력하십시오:

  1. sudo nginx -t

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

  1. sudo systemctl reload nginx

웹 서버를 준비한 후에는 이제 워드프레스를 설치할 준비가되었습니다.

단계 5 – 웹 서버에 워드프레스 설치

새로운 원격 MySQL 서버의 기능을 보여주기 위해 워드프레스 – 인기있는 콘텐츠 관리 시스템 – 을 설치하고 구성하는 과정을 진행하게 됩니다. 서버 소프트웨어를 구성 한 후에는 워드프레스를 다운로드 할 수 있습니다. 보안상의 이유로 항상 프로젝트 웹 사이트에서 최신 버전의 워드프레스를 직접 가져 오는 것이 좋습니다.

먼저 쓰기 가능한 디렉토리로 변경하십시오 (임시 디렉토리 인 /tmp를 권장합니다):

  1. cd /tmp

작업 디렉토리를 임시 폴더로 변경합니다. 그런 다음, 최신 버전의 워드프레스를 압축 파일로 다운로드하려면 다음 명령을 입력하십시오:

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

압축 파일을 해제하여 워드프레스 디렉토리 구조를 만듭니다:

  1. tar xzvf latest.tar.gz

이 파일을 곧 문서 루트로 이동 할 것입니다. 그러기 전에 워드프레스가 읽는 파일 이름으로 샘플 구성 파일을 복사하십시오:

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

디렉터리 전체 내용을 문서 루트로 복사하십시오. -a 플래그를 사용하여 권한이 유지되도록하고, 소스 디렉터리 끝에 점을 찍어 디렉터리 내의 모든 것이 복사되도록합니다(숨겨진 파일 포함):

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

파일을 배치한 후 www-data 사용자와 그룹에게 소유권을 할당하십시오. 이는 Nginx가 실행되는 사용자 및 그룹이며, 웹 사이트를 제공하고 자동 업데이트를 수행하기 위해 Nginx가 WordPress 파일을 읽고 쓸 수 있어야합니다:

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

이제 WordPress 파일이 서버의 문서 루트에 있고 올바른 소유권을 가지고 있습니다. 이제 WordPress를 구성할 준비가되었습니다.

단계 6 — WordPress 구성 파일 설정

WordPress 구성 파일을 열면 설치에 대한 일부 보안을 제공하기 위해 일부 비밀 키를 조정하여 시작합니다. WordPress는 이러한 값들에 대해 자체적으로 안전한 생성기를 제공하여 직접 값을 만들 필요가 없습니다. 이러한 값들은 내부적으로만 사용되므로 여기에 복잡하고 안전한 값이 있어도 사용성에 영향을 미치지 않습니다.

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

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

다음과 유사한 출력을 받게됩니다:

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

Output
define('AUTH_KEY', 'L4|2Yh(giOtMLHg3#] DO NOT COPY THESE VALUES %G00o|te^5YG@)'); define('SECURE_AUTH_KEY', 'DCs-k+MwB90/-E(=!/ DO NOT COPY THESE VALUES +WBzDq:7U[#Wn9'); define('LOGGED_IN_KEY', '*0kP!|VS.K=;#fPMlO DO NOT COPY THESE VALUES +&[%8xF*,18c @'); define('NONCE_KEY', 'fmFPF?UJi&(j-{8=$- DO NOT COPY THESE VALUES CCZ?Q+_~1ZU~;G'); define('AUTH_SALT', '@qA7f}2utTEFNdnbEa DO NOT COPY THESE VALUES t}Vw+8=K%20s=a'); define('SECURE_AUTH_SALT', '%BW6s+d:7K?-`C%zw4 DO NOT COPY THESE VALUES 70U}PO1ejW+7|8'); define('LOGGED_IN_SALT', '-l>F:-dbcWof%4kKmj DO NOT COPY THESE VALUES 8Ypslin3~d|wLD'); define('NONCE_SALT', '4J(<`4&&F (WiK9K#] DO NOT COPY THESE VALUES ^ZikS`es#Fo:V6');

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

워드프레스 구성 파일을 엽니다:

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

예제 값이 포함된 섹션을 찾으세요:

/var/www/your_domain/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');
. . .

해당 줄을 삭제하고 명령 줄에서 복사한 값을 붙여넣으세요:

/var/www/your_domain/wp-config.php
. . .
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에서 구성한 연결된 비밀번호를 조정해야 합니다.

원격 데이터베이스에 대한 연결 정보를 입력하세요. 이전에 원격 데이터베이스 테스트에서 사용한 IP 주소와 자격 증명을 사용해야 합니다:

/var/www/your_domain/wp-config.php
. . .
/** The name of the database for WordPress */
define('DB_NAME', 'wordpress');

/** MySQL database username */
define('DB_USER', 'remote_user');

/** MySQL database password */
define('DB_PASSWORD', 'remote_user_password');

/** MySQL hostname */
define('DB_HOST', 'db_server_ip');
. . .

마지막으로, define( 'DB_COLLATE', '' ); 줄 다음에, 워드프레스가 MySQL 데이터베이스에 SSL 연결을 사용하도록 알려주는 이 강조된 줄을 추가하세요:

var/www/your_domain/wp-config.php
...
define( 'DB_COLLATE', '' );

define('MYSQL_CLIENT_FLAGS', MYSQLI_CLIENT_SSL);
...

파일을 저장하고 닫으세요.

구성이 설정되었으므로, 워드프레스가 설치되었고 웹 기반의 설정 루틴을 실행할 준비가 되었습니다.

단계 7 — 웹 인터페이스를 통한 워드프레스 설정

워드프레스에는 웹 기반 설정 프로세스가 있습니다. 진행하면 몇 가지 질문을 하고 데이터베이스에 필요한 모든 테이블을 설치할 것입니다. 여기에서는 워드프레스 설정의 초기 단계를 수행하여 원격 데이터베이스 백엔드를 사용하는 사용자 정의 웹사이트를 구축하는 데 출발점으로 사용할 수 있습니다.

웹 서버와 관련된 도메인 이름(또는 공인 IP 주소)에 대한 트레일링 /wp-admin으로 이동하십시오:

http://your_domain.com/wp-admin

언어를 선택하라는 프롬프트가 표시됩니다:

다음으로, 주요 설정 페이지로 이동하게 됩니다.

워드프레스 사이트의 이름을 선택하고 사용자 이름을 선택하십시오. 보안 목적으로 “admin”과 같은 일반적인 사용자 이름을 피하고 고유한 이름을 선택하는 것이 좋습니다. 강력한 비밀번호가 자동으로 생성됩니다. 이 비밀번호를 저장하거나 대체 강력한 비밀번호를 선택하십시오.

이메일 주소를 입력하고 사이트를 인덱싱하지 않도록 검색 엔진에게 방해할지 여부를 선택하십시오:

정보를 제출한 후에는 방금 생성한 계정을 사용하여 워드프레스 관리자 인터페이스에 로그인해야 합니다. 그런 다음 새로운 워드프레스 사이트를 사용자 정의할 수 있는 대시보드로 이동합니다.

결론

이 튜토리얼을 따라서 MySQL 데이터베이스를 설정하여 원격 WordPress 설치로부터 SSL 보호된 연결을 수락했습니다. 이 안내서에서 사용된 명령어와 기술은 어떤 프로그래밍 언어로 작성된 웹 애플리케이션에도 적용될 수 있지만, 구체적인 구현 세부 정보는 다를 수 있습니다. 더 많은 정보는 귀하의 애플리케이션 또는 언어의 데이터베이스 문서를 참조하십시오.

Source:
https://www.digitalocean.com/community/tutorials/how-to-set-up-a-remote-database-to-optimize-site-performance-with-mysql-on-ubuntu-20-04