본문 바로가기
테크 튜토리얼 & 팁

라즈베리 파이로 워드프레스 블로그 서버 구축하기: DB서버 설정부터 운영까지

by 해시우드 2024. 6. 16.
반응형

손 안의 작은 컴퓨터 라즈베리파이, 이제 나만의 블로그 무대로 만들 시간!

 

복잡하고 비싼 웹 호스팅? 이젠 안녕! 라즈베리파이와 MySQL의 환상적인 콜라보로 탄생할 당신만의 아늑한 블로그 세상에 초대합니다. ☕

 

집에서 뒹굴거리며 쓴 글이 전 세계로 뻗어나가는 기적, 라즈베리파이가 있다면 꿈이 아닙니다. 마치 레고 블록을 조립하듯, 차근차근 따라 하면 어느새 나만의 디지털 정원이 펼쳐질 거예요. 🌱

 

자, 라즈베리파이와 함께 떠나는 블로그 여정, 지금 바로 출발합니다! 🚀

 

Raspberry Pi 3 Model B

 

1. 든든한 기반 다지기: 라즈베리파이에 최적화된 DB 서버 환경 구축하기

라즈베리파이 위에 워드프레스 블로그를 짓는 첫걸음은 튼튼한 데이터베이스(DB) 서버를 구축하는 것입니다. 집의 기초 공사처럼, DB 서버는 블로그의 안정성과 성능을 좌우하는 핵심 요소입니다.

 

라즈베리파이에서 사용할 수 있는 DB 서버는 다양합니다. MySQL, MariaDB, PostgreSQL, Cubrid, SQLite 등 각각의 장단점을 가지고 있어 블로그의 규모나 목적에 따라 적절한 선택이 필요합니다.

  • MySQL: 가장 널리 사용되는 오픈 소스 관계형 데이터베이스 관리 시스템(RDBMS)입니다. 워드프레스와의 호환성이 뛰어나지만, 오라클 소유로 라이선스 정책이 변경될 수 있다는 불안 요소가 있습니다.
  • MariaDB: MySQL과 동일한 소스 코드를 기반으로 하지만, 오픈 소스 커뮤니티 주도로 개발되어 라이선스 문제에서 자유롭습니다. MySQL과의 호환성도 높아 워드프레스 운영에 적합합니다.
  • PostgreSQL: 객체-관계형 데이터베이스 관리 시스템(ORDBMS)으로, 복잡한 데이터 모델링과 확장성이 뛰어납니다. 하지만 라즈베리파이와 같은 경량 시스템에서는 다소 무거울 수 있습니다.
  • Cubrid: 국내에서 개발된 오픈 소스 관계형 데이터베이스 관리 시스템(RDBMS)입니다. 웹 서비스에 특화된 기능을 제공하지만, 사용자층이 적어 정보 공유가 어려울 수 있습니다.
  • SQLite: 파일 기반의 데이터베이스로, 서버 설치 없이 간편하게 사용할 수 있습니다. 하지만 동시 접속 처리 성능이 떨어져 대규모 블로그에는 적합하지 않습니다.

라즈베리파이에서 워드프레스 블로그를 운영할 때 MariaDB를 선택하는 것은 탁월한 선택입니다. MySQL과 동일한 소스 코드를 기반으로 하면서도 오픈 소스 커뮤니티 주도로 개발되어 라이선스 문제에서 자유롭기 때문입니다.

 

MariaDB는 MySQL과의 호환성이 매우 높아 워드프레스에서 사용하는 다양한 데이터 형식과 쿼리들을 완벽하게 지원합니다. 또한, MySQL보다 성능이 개선되었다는 평가를 받고 있으며, 다양한 스토리지 엔진을 지원하여 유연한 데이터 관리가 가능합니다.

 

라즈베리파이는 작아도 강력한 컴퓨터이지만, 리소스가 제한적인 만큼 MariaDB 설치 및 설정에 주의를 기울여야 합니다.

 

라즈베리파이 운영체제(Raspbian)에 기본적으로 MariaDB가 포함되어 있지 않지만, 터미널 명령어를 통해 간편하게 설치할 수 있습니다.

 

MariaDB 서버 설치하기

sudo apt update
sudo apt install mariadb-server

 

설치 후에는 MariaDB 설정 파일을 수정하여 라즈베리파이의 성능에 맞게 최적화해야 합니다. 예를 들어, 메모리 사용량을 제한하거나, 쿼리 캐시 크기를 조절하는 등의 작업을 통해 데이터베이스 성능을 향상시킬 수 있습니다.

sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf

 

다음과 같은 명령어를 통해 현재 시스템에서 MySQL 서비스의 상태를 확인할 수 있습니다.

systemctl status mysql

 

DB서버는 향후 운영하는 프로젝트의 핵심 정보를 담고 있는 만큼, 보안에 특히 신경 써야 합니다. MariaDB의 root 비밀번호를 설정하고, 외부 접속을 제한하는 등의 기본적인 보안 설정은 필수입니다.

sudo mysql_secure_installation

 

MariaDB에 로그인하여 보안을 유지하려면 루트 사용자의 현재 비밀번호가 필요합니다. 지금 MariaDB를 설치했고
아직 root 비밀번호를 설정하지 않았다면 여기서 Enter를 누르기만 하면 됩니다.

 

NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
      SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!

In order to log into MariaDB to secure it, we'll need the current
password for the root user. If you've just installed MariaDB, and
haven't set the root password yet, you should just press enter here.

Enter current password for root (enter for none):


root 비밀번호를 설정하거나 unix_socket을 사용하면 적절한 권한 없이는 누구도 MariaDB 루트 사용자로 로그인할 수 없습니다. 이미 루트 계정이 보호되어 있으므로 안전하게 'n'에 응답할 수 있습니다.

OK, successfully used password, moving on...

Setting the root password or using the unix_socket ensures that nobody
can log into the MariaDB root user without the proper authorisation.

You already have your root account protected, so you can safely answer 'n'.

Switch to unix_socket authentication [Y/n] y
Enabled successfully!
Reloading privilege tables..
 ... Success!

 

 

You already have your root account protected, so you can safely answer 'n'.

Change the root password? [Y/n] y

New password: 
Re-enter new password: 
Password updated successfully!
Reloading privilege tables..
 ... Success!

 

기본적으로 MariaDB 설치에는 익명 사용자가 있으므로, 누구든지 사용자 계정을 만들지 않고도 누구든지 로그인할 수 있습니다.  이는 테스트용으로만 사용되며, 설치가 좀 더 원활하게 보다 원활하게 진행하기 위한 것입니다. 프로덕션 환경으로 이동하기 전에 이 익명 사용자를 제거해야 합니다. 프로덕션 환경으로 이동하기 전에 제거해야 합니다.

 

By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them.  This is intended only for testing, and to make the installation
go a bit smoother.  You should remove them before moving into a
production environment.

Remove anonymous users? [Y/n]
 ... Success!



pi@raspberrypi:~ $ mysql -uroot -p
Enter password: 
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 47
Server version: 10.11.6-MariaDB-0+deb12u1 Debian 12

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]>

 

 

일반적으로 root 계정은 'localhost'에서만 연결할 수 있어야 합니다.  이렇게 하면 다른 사람이 네트워크에서 root 비밀번호를 추측할 수 없습니다.

Normally, root should only be allowed to connect from 'localhost'.  This
ensures that someone cannot guess at the root password from the network.

Disallow root login remotely? [Y/n] y
 ... Success!

 

By default, MariaDB comes with a database named 'test' that anyone can
access.  This is also intended only for testing, and should be removed
before moving into a production environment.

Remove test database and access to it? [Y/n] y
 - Dropping test database...
 ... Success!
 - Removing privileges on test database...
 ... Success!

 

 

Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.

Reload privilege tables now? [Y/n] y
 ... Success!

Cleaning up...

All done!  If you've completed all of the above steps, your MariaDB
installation should now be secure.

Thanks for using MariaDB!

 

mysql_secure_installation 명령을 통한 설정은 이후에도 얼마든지 할 수 있으니, 변경할 필요가 있을 때 같은 명령어를 입력하고 설정을 변경할 수 있습니다. 초기 설정이 완료되었으면, 설정한 root 계정으로 로그인을 할 수 있습니다.

 

pi@raspberrypi:~ $ mysql -uroot -p
Enter password: 
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 47
Server version: 10.11.6-MariaDB-0+deb12u1 Debian 12

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]>

 

다른 곳에서 MariaDB서버에 접속할 경우, /etc/mysql/mariadb.conf.d/50-server.cnf 파일에서 bind-address 항목을 찾아 주석 처리한 후 MariaDB 서버 데몬을 재시작 해줍니다.

sudo vi /etc/mysql/mariadb.conf.d/50-server.cnf
# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
bind-address            = 127.0.0.1

 

sudo systemctl restart mariadb.service

 

 

MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
4 rows in set (0.002 sec)

 

 

첫번째 DB 생성하기

MariaDB [mysql]> create database 1stDB;
Query OK, 1 row affected (0.001 sec)

 

 

MariaDB [mysql]> GRANT ALL PRIVILEGES ON 1stDB.* to 1stDB_user@localhost IDENTIFIED BY '패스워드';
Query OK, 0 rows affected (0.006 sec)

MariaDB [mysql]> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.003 sec)

 

 

2. Apache 웹 서버 및 PHP와 MariaDB의 완벽한 만남: 데이터베이스 연동 및 초기 설정

 

이제 워드프레스 블로그를 운영하기 위한 삼총사, Apache HTTP 서버, PHP, 그리고 MariaDB를 라즈베리파이에 설치하고 연결할 차례입니다. 마치 퍼즐 조각을 맞추듯, 각각의 요소를 하나씩 제자리에 놓아 완벽한 블로그 시스템을 구축해 보겠습니다.

 

Apache HTTP 웹 서버: 블로그의 얼굴, 방문자를 맞이하는 현관

Apache HTTP 웹 서버는 인터넷 사용자가 블로그에 접속했을 때 블로그 페이지를 보여주는 역할을 합니다. 쉽게 말해, 블로그의 얼굴이자 방문자를 맞이하는 현관과 같습니다. 다음 명령어를 사용하여 Apache 웹 서버를 설치합니다.

 

sudo apt install apache2

 

PHP: 블로그의 두뇌, 데이터를 처리하고 동적인 페이지를 생성

PHP는 웹 페이지에 생동감을 불어넣는 스크립트 언어입니다. 방문자의 요청에 따라 데이터베이스에서 정보를 가져오고, 필요한 처리를 수행하여 동적인 웹 페이지를 생성합니다. 블로그의 두뇌 역할을 담당한다고 할 수 있습니다. 다음 명령어를 사용하여 PHP를 설치합니다.

 

sudo apt install php

 

워드프레스는 PHP로 작성되었기 때문에, PHP를 설치해야만 워드프레스가 정상적으로 작동합니다. 또한, PHP와 MariaDB 간의 원활한 통신을 위해 php-mysql 패키지를 함께 설치해야 합니다.

 

sudo apt install php-mysql

 

PHP를 설치 후에는 Apache 웹 서버를 재시작하여 변경된 설정을 적용해야 합니다.

 

sudo systemctl restart apache2.service

 

워드프레스 설치: 블로그의 뼈대, 멋진 집을 짓기 위한 기본 틀

이제 블로그의 뼈대가 될 워드프레스를 설치할 차례입니다. 워드프레스는 설치가 간편하고 다양한 테마와 플러그인을 제공하여 나만의 개성 있는 블로그를 만들 수 있도록 도와줍니다.

 

워드프레스 최신 버전을 공식 홈페이지에서 다운로드합니다. 다운로드한 파일을 Apache 웹 서버의 루트 디렉토리(/var/www/html)에 압축 해제합니다.

pi@raspberrypi:/var/www/html $ sudo wget https://wordpress.org/latest.tar.gz
--2024-06-16 20:06:03--  https://wordpress.org/latest.tar.gz
wordpress.org (wordpress.org) 해석 중... 198.143.164.252
다음으로 연결 중: wordpress.org (wordpress.org)|198.143.164.252|:443... 연결했습니다.
HTTP 요청을 보냈습니다. 응답 기다리는 중... 200 OK
길이: 24696852 (24M) [application/octet-stream]
저장 위치: `latest.tar.gz'

latest.tar.gz       100%[===================>]  23.55M  1.34MB/s    /  21s     

2024-06-16 20:06:25 (1.13 MB/s) - `latest.tar.gz' 저장함 [24696852/24696852]

 

다음 명령어는 워드프레스 설치 파일을 압축 해제한 후, 해당 파일들을 Apache 웹 서버의 루트 디렉토리로 이동시키는 역할을 합니다.

sudo mv wordpress/* .

 

 

이제 웹 브라우저에서 라즈베리파이 IP 주소를 입력하면 워드프레스 블로그가 나타납니다. 워드프레스 관리자 페이지에 접속하여 테마를 설정하고, 글을 작성하는 등 블로그를 꾸미고 운영할 수 있습니다.

반응형