더북(TheBook)

초보 시스템 관리자의 일기 | 아파치 가상 호스트 기능을 이용한 워드프레스 웹 사이트 운영

워드프레스로 여러 웹 사이트를 운영하는 방법을 따라해보니 궁금한 점이 생겼다. 워드프레스 없이 물리적인 웹 서버 하나로 여러 웹 사이트를 운영할 수 있을까? 답은 YES. 이를 위한 기능이 아파치 웹 서버의 가상 호스트(Virtual host)다.

가상 호스트 종류도 다양하다. 무엇을 가지고 가상 호스트를 구현하느냐에 따라 나뉘는데, 여러 도메인 주소를 사용하는 이름 기반 가상 호스트, 가상 네트워크 인터페이스에 여러 IP 주소를 부여해서 사용하는 IP 주소 기반 가상 호스트, 여러 포트를 사용하는 포트 기반 가상 호스트 등으로 분류한다. 가상 시스템에서는 가장 만만한 게 hosts를 이용해서 도메인 주소를 마음대로 사용할 수 있기 때문에 여기에서는 이름 기반 가상 호스트를 소개하려고 한다.

조잡한 HTML 문서를 보여주기보다는 배워 놓은 워드프레스로 쓸 만한 웹 사이트를 만들어보자. 물론 워드프레스를 사용한다고 해서 앞에서 배웠던 멀티유저 기능을 활용하는 것은 아니다. 싱글유저로 사용하되, 가상 호스트를 이용해서 여러 워드프레스 웹 사이트를 운영하는 것이 목표다. 혼동하지 말기 바란다.

  1 mysql 명령으로 MySQL 모니터에 접속한다. 데이터베이스 관리자인 root 사용자로 로그인하며 -p 옵션을 이용해서 패스워드를 입력한다.

administrator@server01:~$ mysql -u root -p

  2 데이터베이스를 생성한다. 다시 강조하지만, 싱글유저로 사용하되 가상호스트를 이용해서 여러 워드프레스 웹 사이트를 운영해야 하므로 데이터베이스도 각각 생성한다.

mysql> CREATE DATABASE Jaehunblog;
Query OK, 1 row affected (0.00 sec)

mysql> CREATE DATABASE shinblog;
Query OK, 1 row affected (0.00 sec)

  3 각 웹 사이트에 해당하는 데이터베이스에 접속할 사용자를 생성한다. CREATE USER는 MySQL 사용자를 생성하는 쿼리이다. [사용자 계정]@localhost는 로컬 MySQL 서버의 사용자임을 뜻하는 정보이다.

mysql> CREATE USER Jaehun@localhost;
Query OK, 0 rows affected (0.00 sec)

mysql> CREATE USER shin@localhost;
Query OK, 0 rows affected (0.00 sec)

  4 SET 쿼리로 추가한 사용자의 패스워드를 설정한다. 다소 복잡한데 Jaehun@localhost 사용자의 패스워드를 새로운 패스워드( PASSWORD(”********“))로 설정( SET PASSWORD)한다. 양쪽 데이터베이스 사용자에 대한 패스워드를 모두 동일하게 변경한다.

mysql> SET PASSWORD FOR Jaehun@localhost= PASSWORD("********");
Query OK, 0 rows affected (0.00 sec)

mysql> SET PASSWORD FOR shin@localhost= PASSWORD("********");
Query OK, 0 rows affected (0.00 sec)

  5 GRANT ALL PRIVILEGES 쿼리를 사용해서 각 데이터베이스에 새로 추가한 사용자의 권한을 부여한다. GRANT ALL PRIVILEGES ON [데이터베이스].[테이블] TO [사용자]@localhost IDENTIFIED BY ‘[사용자 패스워드]‘; 형식으로 입력하는데 해당 데이터베이스의 모든 테이블에 적용해야하므로 [데이터베이스].* 형식으로 입력했다.

mysql> GRANT ALL PRIVILEGES ON Jaehunblog.* TO Jaehun@localhost IDENTIFIED BY '********';
Query OK, 0 rows affected (0.00 sec)

mysql> GRANT ALL PRIVILEGES ON shinblog.* TO shin@localhost IDENTIFIED BY '********';
Query OK, 0 rows affected (0.00 sec)

  6 사용자 권한을 바로 반영하기 위해 FLUSH PRIVILEGES 쿼리를 입력한다.

mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)

  7 MySQL 모니터를 종료한다.

mysql> exit
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.