티스토리 뷰
워드프레스(WordPress)을 이용해 웹사이트를 구축해보려고 합니다. 그래서 그 기록을 남깁니다.
이전 글을 읽지 않으셨다면 이전 글을 먼저 읽고 와주시면 이해에 도움이 될 수 있습니다.
도메인을 구입했다면, 이제 워드프레스를 설치하고 사용자에게 정보를 제공해줄 서버(Server)를 준비해야 합니다. 카페24, 가비아와 같이 웹호스팅을 하는 곳을 이용한다면 도메인 구입부터 그 곳에서 구입하면 워드프레스 기본 설정까지 다 해서 제공해주기 때문에 이번에 설명할 내용을 알 필요는 없지만, 직접 집에서 라즈베리파이나 NAS 등을 이용해서 워드프레스를 외부에 제공하고 싶은데, 서버 공부도 할 겸(보통은 Linux 공부를 겸하는 경우) 직접 Linux 부터 설치해서 사용하고 한다면 아래 내용들을 먼저 알아야 할 것입니다.
OS 선택
일반적으로 웹서비스를 제공하는 서버는 Linux 을 선택하는 비율이 매우 높습니다. 그 이유는 성능과 비용 모두를 만족하는 최선의 선택지이기 때문입니다. 동일 성능의 장비에서 Windows 대비 10~20% 이상의 성능을 보장하고, MacOS 처럼 하드웨어를 비교적 덜 가리기 때문입니다. 개인용 PC 시장에서 사용되는 장비들은 Windows 에 최적화되어 Linux 나 MacOS 에서는 사용이 불가능한 경우도 있으나, 서버 시장에선 Linux 가 표준의 위치에 있기 때문에 사용 불가능한 장비는 비교적 적습니다. 그리고, 가정에서 전기세 등의 부담 없이 간단히 사용할 수 있는 라즈베리파이 같은 장비들은 Linux 를 매우 잘 지원하고, 반대로 칩셋에 따라 Windows 을 제대로 지원하지 않습니다(바나나파이 같은 제품이 좀 더 비싸더라도 팔리는 이유).
그러므로, 여기서 논하고자 하는 것은 Windows 냐 Linux 냐...의 선택이 아니라, Linux 의 어떤 배포판을 이용할지입니다. 여기서 설명하기에는 너무 내용이 길기에 다루지 않겠지만, Linux 은 커널이라는 핵심 부분이 있으며, 이 커널을 Linux 라고 불러도 무방합니다. Linux 는 특정한 집단(업체)에 종속된 제품이 아니라 자유롭게 사용 가능하도록 공개(Open)되어 있기 때문에 이 커널을 가져다 다른 편리한 기능과 앱을 덧붙여 판매하거나 배포할 수 있는데, 이러한 제품들을 배포판이라고 합니다. 유명한 배포판으로는 RedHat 사의 RHEL(Red Hat Enterprise Linux)나 Canonical 의 Ubuntu 같은 것들이 있습니다. RHEL 은 상용이지만, Linux 커널에 적용되어 있는 라이센스 조건에 따라 대부분의 제품 내 프로그램 소스들이 공개되어 있고, 이 소스를 다시 프로그램으로 만들어 배포하는 것들이 존재하는데 대표적으로 AlmaLinux, RockyLinux 등이 있습니다. AWS 같은 곳은 Amazon Linux 을 기본으로 제공하는데, 이것도 AlmaLinux 나 RockyLinux 와 마찬가지로 RHEL 기반입니다. 반대로, Ubuntu 는 Debian 이라는 곳에서 배포하는 Linux 을 좀 더 다듬어 배포판을 만들어 배포하는데, 일반적인 사용 용도에서는 무료로 제공하며(보통 이런 경우 유지보수계약을 통해 수익을 발생시킴) 사용자가 사용하기에 좀 더 편한 기능들을 제공하기 때문에 요즘은 Ubuntu 을 이용하는 경우가 많습니다.
그러므로, 여기서는 Ubuntu Linux 을 이용할 것이며 버전은 22.04 버전을 이용해 설치할 것입니다.
OS 는 최소한으로, 네트워크 설정만 잘 해두자
OS 설치까지 여기서 다루는 것은 무의미하다고 생각합니다. 그래서, 설치 시 Server 용도로 사용할 것이라는 것만 유의하면 됩니다. 실제 서버들은 X Window 라고 불리우는 Windows 와 유사한, 마우스로 화면을 보면서 사용하는 GUI(Graphic User Interface)을 설치하는 경우는 드뭅니다. 너무 많은 프로그램이 설치되고 무거워지기 때문입니다. 대신 TUI(Text User Interface)라 불리는, 키보드로만 관리하는 명령어 위주의 환경에서 운영하는 것이 보통입니다. 그러므로, Server 용 이미지를 받고 설치하면 설치할 때에도, 설치 후에도 입력창만 보일 뿐, 마우스 포인트는 보실 수 없습니다.
이 외에 유의할 점은 네트워크 설정입니다. 인터넷을 통해 외부에서 접속을 해야 하기 때문에 네트워크 환경에 따라 설정이 판이하게 다를 수 있습니다.
인터넷 서비스 업체(ISP)
의외로 집에서 서버를 구축할 때에는 어떤 회사의 인터넷 서비스를 이용하는지가 중요합니다. 대한민국에선 KT, SKB, LG 세 업체가 유명하며, 지역 케이블 등의 소규모 서비스도 존재합니다.
만약 집에서 외부에서 접속할 수 있는 서버를 조금이라도 운영해보고 싶다면(공부 목적이라도) 무조건 KT 를 사용하는게 좋습니다. SKB 나 LG 로는 불가능하다는게 아니라, KT 의 경우 대부분 서버 운영에 필요한 포트(차가 달리는 차선에 비유 가능)를 자유롭게 사용할 수 있게 아무런 조치가 취해져있지 않지만 SKB 나 LG 혹은 지역케이블 등에서 제공하는 회선은 서버 운영에 필요한 포트를 사용하기 어렵게 막아놓은 경우가 대부분이기 때문입니다(물론 간혹 열려있는 곳도 있지만, 순전히 운입니다).
그리고, 이러한 인터넷 업체의 경우 동시에 사용할 수 있는 컴퓨터 수의 제한이 있는데 흔히 하는 착각이 한 개의 회선을 계약했기 때문에 동시에 사용하기 위해서는 공유기를 이용하지 않으면 한 개의 컴퓨터만 이용할 수 있다고 생각한다는 것입니다(이 말은 공인IP 가 하나만 제공된다는 것과 같은 의미입니다). 하지만, 인터넷 회선만 신청해도 보통 2개 이상을 사용 가능하게 열려있으며 IPTV 나 인터넷 전화 등의 서비스를 같이 결합하여 가입했다면 동시 이용 가능한 컴퓨터의 수는(=공인IP 의 수는) 최대 10개까지도 늘어날 수 있습니다. 그래서 외부에서 들어오는 선에 바로 공유기를 연결하는게 아니라, 앞에서 회선만 나눠주는 스위치허브(Switch Hub)를 연결한 뒤 그 아래에 공유기와 서버로 사용할 장비를 각각 연결한다면 공인IP를 공유기와 서버가 각각 받아올 수 있기 때문에 서버는 인터넷에 바로 연결이 되기 때문에 복잡한 공유기 설정 없이도 사용할 수 있는 것들이 많아집니다. 다만, 공유기 아래에 위치할 경우 자동으로 방화벽이 설정되기 때문에 보안상 더 좋은 점도 있긴 합니다.
네트워크 구성
공유기 내에 존재하든, 단독으로 인터넷에 연결되든 크게 차이는 없지만 본인의 환경에 따라 네트워크 설정이 판이할 수 있습니다. 경우에 따라 수많은 구성을 만들어낼 수 있으나, 저의 경우는 단독으로 연결된 서버에서 Nginx Proxy Manager 라는 것을 이용해 공유기 내부에 있는 서버에 연결되는 조금은 복잡한 형태로 구성해서 사용중입니다. 물론 직접 서버를 단독으로 연결할 수 있지만, 이는 Nginx Proxy Manager 의 편리한 기능을 직접 구축해야 할 수 있기 때문에 나중에 필요하다면 따로 글을 적겠지만, 여기서는 이러한 부분을 생략하겠습니다.
다만, 서버가 직접 인터넷과 연결이 되었다면 ip addr 혹은 ifconfig 명령으로 해당 장비가 연결된 IP 정보를 확인할 수 있다는 것과 달리, 공유기 내부에서는 보이지 않기 때문에 공유기 관리 프로그램 혹은 같은 공유기 내 다른 PC 에서 "내 아이피 확인" 과 같은 검색어로 구글/네이버 등에서 검색한 사이트에 들어가서 IP 을 확인해야 합니다.
그리고, 이렇게 확인된 IP 을 이용해서 구입한 도메인이 내 서버를 가리키도록 해야합니다. 이 때, 사용할 레코드에 IP 을 등록해야 합니다. 아래 이미지와 같이 클라우드플레어의 도메인에서 DNS 레코드를 추가할 수 있습니다.
DNS 에 서버 IP 등록
레코드를 추가할 때, A 와 CNAME 이 대표적이라고 할 수 있습니다. 위에서 일부는 보안상 지웠지만 A 유형에는 IP 같은 숫자가 들어간다는게 보이고, CNAME 에는 다른 도메인이 입력되어 있는 것이 보일 것입니다. 지금 위에서는 그렇게 되어 있지 않지만, 우리는 구입한 도메인(여기서는 zepinos.com 으로 하겠음)과 www.zepinos.com 을 모두 123.1.2.3 이라는 IP 을 바라보도록 하겠습니다. 주의할 점은 zepinos.com 와 www.zepinos.com 은 별개의 주소이라는 것입니다.
먼저, 아래 이미지와 같이 레코드 추가 버튼을 눌러서 zepinos.com 을 설정해보도록 하겠습니다.
레코드 추가 버튼을 누르면 아래에 추가할 수 있는 영역이 나타납니다. 유형(레코드)은 A 로 두고, IPv4 주소에 IP 을 입력합니다. 그리고 프록시 상태가 처음에는 켜져있는데 위 이미지와 같이 꺼둡니다. 프록시는 클라우드플레어의 DDoS 공격방어를 위한 서비스 기능인데, 지금은 학습용이니 꺼두는게 좋습니다.
마지막으로 앞에서 설명을 하지 않았던 이름입니다. 이 부분에서 주의할 점이, 구입한 도메인이 zepinos.com 인데 이 상태로도 사용이 가능한데 그 앞에 www. 나 cafe. 와 같이 추가로 붙어있는 것이 없는 것을 "루트" 라고 합니다. 지금은 이 루트라는 상태에서 찾아갈 서버 주소를 입력해줘야 하기 때문에 @ 을 설명대로 입력해줍니다. 다른 네임서버 서비스에서는 @ 가 아니라 빈공백으로 두는 등의 다른 방식도 많이 사용되므로 반드시 루트 레코드를 설정하는 방법을 잘 확인하셔야 합니다.
이렇게 설정한 뒤 저장을 하면 위에 있는 레코드 목록에 있는 것처럼 레코드 이름이 아니라 zepinos.com 전체가 이름으로 나오는 레코드가 등록됩니다(역시 클라우드플레어의 표시방식일 뿐).
이번에는 www 를 등록할 차례입니다. 그런데 zepinos.com 와 www.zepinos.com 은 모두 한 서버에서 같은 정보를 보여주고 싶다면 같은 값을 등록하면 됩니다. 그런데 이러한 같은 값을 가지는 서버에 모두 A 로 값을 입력하게 된다면 IP 가 변경되었을 경우 모든 A 레코드의 값을 변경해줘야 합니다. 그래서 CNAME 을 이용해서 하나의 A 레코드를 재사용하게 된다면 관리가 편리해닙니다. 그래서 www 는 아래 이미지와 같이 zepinos.com 을 바라볼 수 있도록 설정해보겠습니다.
등록 확인
이렇게 저장을 한 뒤, 명령 프롬프트나 Linux 쉘(Shell)에서 제대로 등록되었는지 확인해볼 수 있습니다.
가장 간단한 방법은 ping 명령을 통해 도메인의 IP 가 무엇으로 반응하는지 보는 것입니다.
ping zepinos.com
ping www.zepinos.com
OS 에 따라 다르지만, 레코드로 등록한 IP 가 나온다면 정상적으로 등록된 것입니다. 물론 진짜로 저 도메인으로 검색하면 제가 가진 도메인의 설정값이 보이므로 반드시 도메인 주소는 수정해서 명령을 실행해주세요.
하지만, ping 명령을 통해 확인해 볼 수 있는 것은 A 나 CNAME 레코드 밖에 없으며 네임서버들의 캐시에 의해 현재 세팅에 대한 검증은 어렵습니다. 이 때 nslookup 을 통해 직접 네임서버에 접속해 현재 설정값이 무엇인지 확인하는 것이 필요합니다. 이것은 조금 전문적인 내용이기도 하기에 생략하겠습니다(댓글로 요청이 있다면 간단히 글을 작성해보겠습니다).
결론
서버를 직접 만들어 워드프레스 운영하는데 서버 설치 전까지 벌써 문서만 3개나...서론이 너무 길었네요.
'Programming > 웹사이트 구축' 카테고리의 다른 글
[워드프레스 구축] 5-1. 가정용 서버를 위한 인터넷 주소(IP Address)에 대한 간단한 이해 (0) | 2023.06.02 |
---|---|
[워드프레스 구축] 5. nginx 와 php-fpm 설치 (0) | 2023.05.25 |
[워드프레스 구축] 4. 서버를 Proxmox 컨테이너로 생성 (0) | 2023.05.25 |
[워드프레스 구축] 2. 도메인 관리에서 네임서버 설정 (0) | 2023.05.24 |
[워드프레스 구축] 1. 도메인을 구입해보자 (0) | 2023.05.24 |
- Total
- Today
- Yesterday
- java config
- RestTemplate
- 프로젝트 규모
- 내장 WAS
- boot
- 워드프레스
- KDE
- jooq
- Phabricator
- Spring Boot
- paging
- NoSQL
- 엘지
- 외장 WAS
- Redmine
- messages.properties
- SI
- couchbase
- Spring MVC
- OracleJDK
- docker
- 페이징
- Spring
- git
- manjaro
- Nas
- 도입기
- 클라우드플레어
- 시니어 프로그래머
- proxmox
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |