WordPress 설치 및 운영 기초 설정

WordPress 설치 및 운영 기초 설정

9월 25, 2023

Wordpress는 세계적으로 사용되는
콘텐츠를 관리하는 시스템입니다.

워드프레스는 오픈소스를 기반으로 한 설치형 블로그 또는 CMS[1]이다.

전세계 웹사이트의 43.0%가 워드프레스로 제작되어 있으며, 전체 콘텐트 관리 시스템(CMS, Content Managment System) 중 64.2%의 시장 점유율을 기록 중이다. (2023년 4월 기준, 데이터 출처 : W3Techs)

서버에 워드프레스 설치하기

클라우드 서버에 기반 서버 소프트웨어(NginX, PHP-FPM, MariaDB)를 설치하는 것은 다른 글에서 안내하였습니다. 지금은 워드프레스를 NginX, PHP-FPM, MariaDB가 설치된 서버에 설치하는 방법에 대해 안내하겠습니다.

1. MariaDB에 계정 등록, 데이터베이스 생성 및 권한 설정

워드프레스는 데이터를 기본적으로 데이터베이스에 저장합니다. 그렇기 때문에 MySQL이나 MariaDB를 사용하여야 합니다.
MySQL과 MariaDB는 둘 다 오픈 소스의 관계형 데이터베이스 관리 시스템(RDBMS)입니다. 원래 MariaDB는 MySQL의 포크로 시작되었기 때문에 많은 공통점이 있습니다. 그러나 시간이 지남에 따라 두 시스템은 다양한 차이점을 가지게 되었습니다. MySQL이 Oracle에 인수된 이후로 포크되어 개발한 것이 MariaDB이며 포크를 하여 별도의 제품을 만들만큼 탄탄한 커뮤니티와 개발자 그룹이 있기 때문에 지속적으로 관리되며 버전 업그레이드가 이루어지고 있습니다. 때문에 최근에 선호도가 약간은 더 높은쪽이 MariaDB가 아닌가 합니다.

MariaDB가 설치되어 있는 서버에서 다음의 명령어로 MariaDB에 접속합니다. MySQL 명령어 그래로 MariaDB에서 사용할 수 있습니다.(11버전에서 이를 벗어나고자 하는 의지를 보여주고 있습니다) 아래는 root 계정으로 접속을 하였습니다. 발급 받은 계정이 있다면 해당 계정을 사용하면 됩니다.

Copy to Clipboard

데이터베이스 하나를 생성합니다. 이름은 ‘samwoo’ 로 하겠습니다. 헷갈리지 않도록 워드프레스 사이트명이나 도메인명을 사용하면 좋습니다.

Copy to Clipboard

접속할 계정을 하나 생성합니다. 데이터베이스를 생성하기 전 진행해도 관계는 없습니다. ‘identified by’ 를 통해 패스워드를 설정함을 알 수 있습니다.

Copy to Clipboard

생성한 ‘samwoo’ 데이터베이스에 생성한 사용자가 접근하여 사용할 수 있도록 권한을 제공합니다.

`GRANT` 문을 사용할 때, `ALL PRIVILEGES` 대신에 특정 권한만을 부여하고자 할 때는 각 권한을 쉼표로 구분하여 나열할 수 있습니다.
다음은 MySQL 및 MariaDB에서 사용할 수 있는 일부 권한의 예입니다:

1. SELECT: 데이터를 읽을 수 있는 권한
2. INSERT: 데이터를 추가할 수 있는 권한
3. UPDATE: 데이터를 수정할 수 있는 권한
4. DELETE: 데이터를 삭제할 수 있는 권한
5. CREATE: 테이블이나 인덱스를 생성할 수 있는 권한
6. DROP: 테이블이나 인덱스를 삭제할 수 있는 권한
7. ALTER: 테이블 구조를 변경할 수 있는 권한
8. INDEX: 인덱스를 생성하거나 삭제할 수 있는 권한
9. CREATE TEMPORARY TABLES: 임시 테이블을 생성할 수 있는 권한
10. EXECUTE: 저장된 루틴을 실행할 수 있는 권한
11. GRANT OPTION: 다른 사용자에게 권한을 부여하거나 취소할 수 있는 권한

이러한 권한을 사용하여 사용자에게 특정 권한만 부여할 수 있습니다. 예를 들면:

GRANT SELECT, INSERT, UPDATE ON samwoo.* TO ‘samwoo’@’localhost’;

위의 명령은 `samwoo`에게 `samwoo` 데이터베이스의 테이블에 대한 데이터를 읽고, 삽입하고, 수정하는 권한만 부여합니다. 필요에 따라 원하는 권한 조합을 사용하여 사용자에게 권한을 부여할 수 있습니다.

또한 `samwoo.*`를 통해 wildcard 대신 특정 테이블을 지정할 수 있습니다. `DB명.테이블명` 이므로 테이블별로 권한을 설정할 수도 있습니다. 만약 생성되지 않은 사용자를 입력한다면 해당 사용자는 생성이 됩니다. 때문에 ‘identified by’ 를 추가해 한번에 사용자 만들기와 권한 지정하기를 할 수도 있습니다.

없는 데이터베이스에 사용자를 지정하는 경우는 해당 데이터베이스가 생성이 될 때까지 사용할 수 없는 상태로 머무르게 됩니다. 아래 예제에서는 samwoo 에게 samwoo DB의 모든 권한을 주도록 하고 있습니다.

Copy to Clipboard

FLUSH PRIVILEGES는 권한의 변경사항을 즉시 적용하기 위해 사용됩니다. 실은 GRANT, REVOKE와 같은 권한 관련 SQL 명령어를 사용하여 권한을 변경할 경우, 해당 변경사항은 즉시 적용되기 때문에 FLUSH PRIVILEGES를 별도로 실행할 필요는 없습니다. 그러나 mysql.user, mysql.db 등의 권한 관련 테이블에 직접 변경(예: INSERT, UPDATE, DELETE)을 수행한 경우, 변경사항이 즉시 적용되지 않습니다. FLUSH PRIVILEGES를 실행하면, MySQL/MariaDB는 권한 테이블을 다시 읽어 변경사항을 즉시 적용합니다.

MySQL/MariaDB의 경우 사용자 권한 관리를 mysql DB를 통해 하고 있습니다. 때문에 전통적으로 직접 이 테이블에 데이터를 넣거나 수정, 삭제 하는 방식으로 사용자를 관리할 수 있습니다. 그러나 이런 방식은 이제 지양하는 분위기 입니다.

아래의 명령은 위의 설명대로 꼭 필요하지 않지만 버릇처럼 하는 권한 변경 내용의 반영 명령입니다.

Copy to Clipboard

이제 권한이 잘 부여되었는지 확인합니다. 현재 로그인한 사용자, 즉 나의 권한을 확인하려면 SHOW GRANTS 입니다. 새로 추가한 ‘samwoo’의 권한을 확인하기 위해서는 SHOW GRANTS FOR를 사용합니다.

Copy to Clipboard
Copy to Clipboard

권한이 잘 부여된 것을 확인했다면 이제 DBMS CLI를 나갑니다.

Copy to Clipboard

2. WordPress 소스 다운로드, 설치 진행

자 이제 어떤 분에게는 생소하게 다가왔을 서버에서의 작업이 거의 끝나갑니다.

워드프레스는 엄청나게 거대한 개발자 커뮤니티를 가지고 있으며 꽤나 자주 버전이 업그레이드 되는 편입니다. 대게 설치 후 업데이트는 대시보드를 통해 가능하지만 서버 환경이 특별한 경우나 보안에 신경을 많이 쓰는 경우 등 직접 서버에서 진행하는 경우도 많습니다.

우선 자신의 서비스의 ROOT DIRECTORY를 알아야 합니다. 현재 사이트의 서버 설치 메뉴얼을 보고 설치를 진행하셨다면 NginX의 설정 파일의 root 디렉토리 지시자로 설정된 부분을 따릅니다.

/etc/nginx/conf.d/default.conf 의 root /www/somedomain; 부분입니다. 이 부분에 대한 이해가 있다고 가정하고 진행합니다.

우선 자신의 home 디렉토리로 이동(cd ~)한 후 wget을 통해 소스를 다운 받습니다. 한국어판과 글로벌판의 주소가 다릅니다. 아래는 한국어판의 다운로드 주소입니다.

Copy to Clipboard
Copy to Clipboard

파일은 다운받았으면 압축을 풀어야겠죠? zip파일을 다운 받았으니 unzip을 통해 압축을 풉니다.

Copy to Clipboard

만약 tar.gz 파일을 다운 받았다면 tar로 압축을 풉니다. 서버 관리에 관심이 있다면 꼭 알아야 하는 명령어입니다.

Copy to Clipboard

만약 tar.gz 파일을 다운 받았다면 tar로 압축을 풉니다. 서버 관리에 관심이 있다면 꼭 알아야 하는 명령어입니다.

압축을 풀편 wordpress라는 디렉토리가 보입니다. 이 디렉토리 안에는 wordpress의 소스코드들이 들어 있습니다. 이 소스코드 전체를 nginx 환경설정에서 정의한 서비스의 root 디렉토리로 옮깁니다. 다시 한번 말하지만 이 부분은 각자의 환경에 맞춰 적용해야 합니다.

Copy to Clipboard

여기까지 완료되었다면 이제 웹브라우저에 자신의 서비스 URL을 넣고 wordpress 설치를 마무리 합니다.

DB: samwoo
User: samwoo
Password: samwoo_password