AWS 라이트세일 ubuntu 20.04 워드프레스 홈페이지 만들기

워드프레스 블로그에 관심이 있다면 어떻게 시작해야 하는지 많은 고민을 하고 있을 거라고 생각합니다. 블로그뿐만 아니라, 홈페이지를 만들기 위해 많이 사용되는 설치형 워드프레스 어떻게 시작해야 하는지 알아보도록 하겠습니다.

  • 아마존 AWS 클라우드 호스팅 구매 
  • 도메인 구매 
  • SSH 클라이언트 프로그램 설치 
  • LEMP 풀스택 설치 
  • 워드프레스 설치 
  • SSL 인증 
  • 워드프레스 멀티사이트 설정
대략적인 과정은 위와 같습니다. 이제 시작해보도록 하겠습니다. 
목차
    Add a header to begin generating the table of contents

    AWS 라이트세일 인스턴스 만들기

    홈페이지를 제작할 때 반드시 필요한 것 중 하나가 호스팅입니다. 호스팅은 여러 종류가 있지만, 이번 글에선 AWS Lightsail을 이용하도록 하겠습니다. 아마존을 이용하는 이유는 필요에 따라서 서버를 업그레이드할 수 있고 속도가 빠르기 때문입니다. 단점은 비용적인 부분에서 조금 부담이 될 수 있고, 저장공간이 많이 필요한 경우 AWS보단 다른 호스팅을 이용하는 것이 좋습니다. 
    (비용이 많이 비싼 것은 아니기 때문에 너무 걱정은 하지 않아도 됩니다.) 

    1. 라이트 세일 계정 만들기

    AWS Lightsail 홈페이지에 접속합니다. 구글이나 네이버에 아마존 라이트세일 또는 AWS Lightsail을 검색해서 접속하면 됩니다. 

    aws

    위 사진처럼 AWS 계정 새로 만들기를 통해 계정을 만들면 됩니다. 계정을 만드는 과정이 어렵지 않기 때문에 따로 설명하지 않도록 하겠습니다. 

    2. 인스턴스 생성하기

    AWS1

    위 화면에 영어로 나온다면 오른쪽 하단 English를 클릭해서 한국어로 바꿔줍니다. 

    AWS2

    인스턴스 생성을 클릭합니다. 

    AWS3
    1. AWS 리전 및 가용 영역을 한국으로 바꿉니다. 
    2. 플랫폼을 Linux/Unix로 설정합니다. 
    3. OS 전용으로 선택합니다.
    4. Ubuntu 20.04 LTS를 선택합니다. 
    AWS4
    1.  SSH 키 페어 변경은 선택사항입니다. 보안을 강화하기 위함인데 원하시는 분들은 SSH 키 페어 변경을 클릭해서 새로 생성하고 저장해놓으면 됩니다. 
    2. 인스턴스 플랜은 기본이 3.5 USD/월 입니다. 하지만 기본 플랜의 경우 사양이 낮아서 멈추는 경우가 있기 때문에 처음부터 5 USD/월 플랜을 선택하는 것을 추천합니다. 
      (업그레이드는 쉽게 가능하지만, 다운그레이드는 어렵기 때문에 처음부터 비싼 플랜을 할 필요는 없습니다.)
    AWS6

    마지막으로 인스턴스 이름을 설정하고 인스턴스 생성 버튼을 누르면 인스턴스가 생성됩니다. 

    3. 인스턴스와 고정IP 연결하기

    고정1

    인스턴스를 생성했다면 고정 IP와 인스턴스를 연결해야 합니다. 라이트세일 메인 화면에서 네트워킹 배너를 클릭 후 고정 IP 생성을 누릅니다. 

    고정2
    1. 위에서 만든 인스턴스를 선택합니다. 
    2. 고정 IP 이름을 설정합니다. (인스턴스와 중복되지 않는 이름으로 설정)
    3. 생성 버튼을 누릅니다. 
    고정3

    모든 과정을 완료하면 위에 화면처럼 화면이 나옵니다. 

    도메인 구매 & 연결하기

    도메인을 취급하는 업체는 호스팅kr(호스팅케이알), 가비아, 카페24, godaddy, namecheap 등 다양한 업체가 있습니다. 가장 추천하는 도메인 업체는 호스팅케이알입니다. 호스팅케이알을 추천하는 이유는 가격이 다른 업체보다 저렴하기 때문입니다. 

    호스팅케이알이 아니어도 편리하거나 익숙한 곳을 선택해서 도메인을 구매하면 됩니다. 이 글은 호스팅케이알을 기준으로 설명하기 때문에 다른 도메인 업체에서 구매한 경우 잘 비교해서 등록하시면 됩니다.  

    도메인 구매하기

    도메인을 구매하는 방법은 아주 간단합니다. 호스팅케이알 혹은 개인이 원하는 도메인 판매 사이트에 접속 후 아래 내용을 따라 하면 됩니다. 

    1. 도메인을 판매하는 사이트에 접속한다. 
    2. 원하는 도메인을 검색한다. 
    3. 도메인을 선택하고 결제한다.

    호스팅과 도메인 연결하기

    도메인을 구매했다면, 도메인을 호스팅 서버와 연결해야 합니다. 호스팅과 도메인을 연결하는 방식이 2가지가 있기 때문에 나누어서 설명하도록 하겠습니다. 

    첫 번째, AWS 라이트세일 네임서버 사용하기 

    첫 번째로 소개할 방법은 AWS 라이트세일 네임서버를 사용하는 방법입니다. 방법은 아주 간단하니, 아래 내용을 따라서 하시면 쉽게 할 수 있습니다. 

    라이트셰일

    AWS 라이트세일 메인 홈페이지에서 네트워킹을 누르고 들어갑니다. 

    라이트셰일2

    네트워킹을 누르고 들어갔다면 DNS 영역 생성을 눌러줍니다. 

    라이트셰일3

    DNS 영역 생성에서 등록한 도메인을 입력합니다. 

    라이트셰일4

    구매한 도메인을 입력했다면 스크롤을 내려 아래 DNS 영역 생성 버튼을 누릅니다. 

    라이트셰일5-1

    DNS 영역 생성 버튼을 누르면 위와 같은 화면이 나오고 가운데 레코드 추가 버튼을 누릅니다. 

    dns1
    dns2
    dns3

    위 사진처럼 빈칸을 채우고 오른쪽 초록색 체크 버튼을 눌러서 적용합니다. 

    dns4

    위 사진처럼 나온다면 모두 적용이 완료된 것입니다. 이제 다음 단계로 넘어갑니다. 호스팅 케이알 홈페이지에서 도메인의 네임서버를 라이트세일로 바꿔줄 차례입니다. 

    호스팅kr

    호스팅케이알 홈페이지에 로그인한 뒤, 오른쪽 상단 나의 서비스 → 도메인 관리를 눌러 들어갑니다. 

    호스팅kr1

    구매한 도메인 주소가 나와 있고 오른쪽 끝에 버튼을 누르고 네임서버 변경을 누릅니다. 

    호스팅kr2
    호스팅kr3

    네임서버 변경 오른쪽 버튼을 누르면 아래 사진처럼 네임서버를 변경할 수 있습니다. 네임서버에는 위에 AWS 라이트세일 홈페이지에서 DNS 영역 생성을 했을 때 나와 있던 네임서버(이름서버)를 입력하면 됩니다. 

    호스팅kr4

    위 사진처럼 네임서버를 모두 입력했다면 오른쪽 아래 저장 버튼을 꼭 눌러서 적용해야 합니다. 저장 버튼까지 눌러서 적용했다면 도메인과 연결이 마무리된 것입니다. 

    두 번째, 호스팅케이알 네임서버 사용하기 

    두 번째 방법은 호스팅케이알 네임서버를 이용하는 방법입니다. 이 방법 또한 어렵지 않기 때문에 쉽게 따라 할 수 있습니다. 다양한 워드프레스 홈페이지를 사용할 예정이라면 첫 번째 방법보단, 지금 설명하는 방법을 추천합니다. 

    호스팅kr

    호스팅케이알 홈페이지에 로그인한 뒤, 오른쪽 상단 나의 서비스 → 도메인 관리를 눌러 들어갑니다. 

    호스팅kr1

    구매한 도메인 주소가 나와 있고 오른쪽 끝에 버튼을 누르고 DNS 레코드 설정을 누릅니다. 

    DNS 레코드1
    DNS 레코드2

    DNS 레코드 관리에서 새 DNS 레코드 추가를 누르고 위 사진처럼 3가지를 유형의 내용을 적용합니다. 

    값에 나와 있는 IP주소는 라이트세일에서 만든 고정 IP 주소를 입력합니다. 위 사진에 나와 있는 IP 주소를 입력하면 안 됩니다. 

    공통 적용 사항

    두가지 방법 중 하나를 선택해서 도메인과 연결을 하면됩니다. 도메인 연결을 했다면, 마지막으로 설정해야 하는 것이 있습니다. 

    라이트세일 메인 홈페이지에 들어가서 위에서 만든 인스턴스를 클릭해서 들어갑니다. 

    인스턴스 페이지에서 네트워킹 배너를 클릭합니다. 

    네트워킹 배너에 들어가서 밑으로 내리면 IPv4 방화벽이 나옵니다. 규칙 추가를 누르고 위 사진처럼 HTTPS를 추가하고 생성 버튼을 눌러 적용합니다. 

    위 사진처럼 HTTPS가 추가돼있으면 설정이 완료됐습니다. 

    Putty 다운로드 & 연결하기 (생략 가능)

    Putty는 SSH 프로그램입니다. SSH는 Secure Shell의 줄임말로 원격으로 호스트에 접속하기 위해 사용되는 보안 프로토콜입니다. SSH 프로그램으로는 Putty, window powershell, KiTTY, Bitwise 등이 있습니다. Windows용 프로그램으로 맥에선 사용이 불가합니다.

    많은 SSH 프로그램 중 Putty를 선택한 이유는 특별하게 없습니다. 가장 익숙하고 적용 방법이 쉽다고 생각되기 때문에 선택했습니다. 다른 프로그램을 선택해도 상관없지만, 작동 방식이 조금 다르기 때문에 Putty를 사용하면 좋습니다.

    SSH 프로그램은 선택사항으로 반드시 설치해야 할 필요는 없지만, 설치를하면 도움이 됩니다. 맥북에서 이 글을 읽고 워드프레스 홈페이지를 만드신다면 Putty 다운로드 & 연결하기 과정은 생략하셔도 됩니다. 

    Putty 다운로드

    Putty 프로그램을 다운 받는 방법은 홈페이지에 들어가서 다운받으시면 됩니다. 다양한 종류가 있는데 헷갈린다면 아래 2가지를 다운 받으면 됩니다. 

    Putty SSH 프로그램 다운로드
    Puttygen 프로그램 다운로드 

    Puttygen 프로그램은 보안을 위해 SSH키라고 하는 파일(.pem)을 라이트세일에서 다운받고, .pem 형식의 파일을 .ppk 바꿔주는 역할을 합니다. .ppk형식의 파일을 Putty에 등록하면 아마존 AWS 라이트세일 홈페이지에 로그인하지 않고도 인스턴스에 접속할 수 있습니다. 

    SSH키 받기

    SSH키

    라이트세일 메인 페이지에서 오른쪽 상단에 계정을 눌러서 계정에 들어갑니다. 

    SSH키1

    계정 페이지에서 SSH 키 탭을 눌러서 들어간 뒤, 가운데 사용자 지정 키에서 키페어 생성을 누릅니다. 

    SSH키2
    SSH키3

    위 사진처럼 리전을 서울로 선택하고 키페어 이름을 입력한 뒤 생성을 누르면 프라이빗 키가 생성됩니다. 생성했다면 프라이빗 키 다운로드 버튼을 눌러 다운로드합니다. 다운로드된 프라이빗 키는 pem 형식의 파일입니다. 

    SSH 키 형식 변환하기

    pem 형식의 파일을 ppk 형식으로 바꿔야 합니다. 이때 사용하는 것이 Puttygen 프로그램입니다. 

    윈도우 → 검색에 puttygen 입력→ puttygen 파일 실행 

    puttygen1

    위 사진처럼 puttygen 프로그램이 실행됐다면 Load 버튼을 누릅니다. 

    puttygen2

    Load 버튼을 누르면 파일을 불러올 수 있습니다. 오른쪽 하단에 파일 형식을 All Files로 바꾸면 pem파일을 불러올 수 있습니다. 위에서 받은 프라이빗 키 파일을 불러옵니다. 

    puttygen3

    프라이빗 키 파일을 불러왔다면 다른 설정을 할 필요 없이 Save private key 버튼을 눌러 저장합니다. 

    Putty 연결하기

    윈도우 → 검색에 putty 입력→ putty 프로그램 실행 

    푸티1

    putty를 실행하면 위와 같은 화면이 나옵니다. 위에 표시한 것처럼 입력하면 됩니다. 

    1. IP 주소는 라이트세일 페이지에 있는 IP주소입니다. 위 사진과 똑같은 주소를 입력하면 안 됩니다. 
    2. 세션 이름을 정해줍니다. 
    3. Save 버튼을 눌러 저장합니다. 
    1. 왼쪽 카테고리에서 Data를 눌러서 들어갑니다.
    2. Auto-login usename에 ubuntu를 입력합니다. 
      (이때 Open 버튼은 누르지 않습니다.) 

    ubuntu를 입력했다면 Open 버튼을 누르지 말고 위 사진처럼 똑같이 진행합니다. 

    1. 왼쪽 카테고리에서 SSH 하위에 카테고리를 펼칩니다. 
    2. Auth 카테고리에 들어갑니다. 
    3. ppk 형식으로 바꾼 프라이빗 키를 불러넣습니다. 

    이제 제일 처음 시작 부분으로 돌아옵니다. 

    1. 왼쪽 카테고리 최상단 Session을 클릭해서 돌아옵니다. 
    2. 세션 이름을 선택하고 Save 버튼을 눌러 저장합니다. 
    3. Open 버튼을 눌러 세션을 실행합니다. 

    Putty가 정상적으로 실행이 된다면 위와 같은 화면이 나옵니다. 위 사진과 같은 화면이 나온다면 성공적으로 마무리된 것으로 판단하면 됩니다. 

    LEMP 풀스택 설치

    LEMP 풀스택은 Linux (운영체제) + Nginx (웹 서버) + MySQL (데이터베이스) + PHP (프로그램 언어)를 종합하여 나타내는 말입니다. 

    웹 서버로 많이 사용되는 것은 Nginx(엑스엔진)과 Apache(아파치)가 있습니다. 이 글에선 Nginx을 사용합니다. 데이터베이스는 MySQL, Oracle, MariaDB 등 다양한 종류가 있습니다. 이 글에선 MariaDB라는 데이터베이스를 사용합니다. 프로그램 언어는 PHP를 사용합니다. 

    LEMP 풀스택 설치에 들어가기에 앞서 붙여넣기를 하는 방법에 대해 소개해드리겠습니다. Putty를 사용할 경우 코드를 복사해서 붙여넣기를 할 때 사용하는 단축키는 shift + insert 입니다. Putty를 사용하지 않고 라이트세일에서 직접 인스턴스에 접속하는 경우 붙여넣기를 마우스로 해야 합니다. 맥북의 경우 쉬프트 + control + V로 가능합니다. 

    붙여넣기 TIP

    • Putty 사용자 : shift + insert
    • Window 사용자가 라이트세일 인스턴스 사용하는 경우 : 오른쪽 마우스를 클릭해서 붙여넣기
    • Mac 사용자가 라이트세일 인스턴스를 사용하는 경우 : 오른쪽 마우스를 클릭해서 붙여넣기 또는 쉬프트 + control + V 

    Putty 접속하기

    윈도우 → 검색에 putty 입력→ putty 프로그램 실행 

    				
    					sudo su
    				
    			

    루트 사용자로 접속하기 위해 위 코드를 복사해서 붙여넣기 합니다. 

    위 사진처럼 root@ 로 시작이 된다면 루트 사용자로 정상적으로 변경이 된 것입니다. 이제 아래 내용들을 쭉 따라서 하면 됩니다. 

    				
    					sudo apt update
    				
    			

    업데이트할 내용 확인하기 (위 코드를 복사해서 붙여넣기)

    				
    					sudo apt upgrade
    				
    			

    업그레이드 진행하기 (위 코드를 복사해서 붙여넣기)

    Do you want to continue? [Y/n] 라는 문구가 나오면 y를 입력하고 엔터를 누르면 됩니다. 

    				
    					sudo apt update && sudo apt upgrade
    				
    			

    업데이트와 업그레이드는 자주 사용해서 시스템을 최신 버전으로 유지해는 게 좋습니다. 두 가지 코드를 각각 입력을 해도 되지만, 위 코드처럼 한번에 입력할 수도 있습니다. 

    위와 같은 화면이 나온다면 그냥 ok를 누르면 넘어가면 됩니다. 나오지 않는다면 그냥 무시하고 진행하면 됩니다. 

    MC (Midnight Commander) 설치하기

    MC는 파일 관리와 편집을 할 수 있는 프로그램입니다. 직관적으로 상당히 보기가 편해 간혹 문제가 생기거나, 파일 위치를 찾을 때 자주 사용합니다. 설치하지 않아도 문제는 없지만, 설치하면 나중에 도움이 됩니다. 

    				
    					sudo apt install mc
    				
    			

    위 코드를 복사해서 입력합니다. 

    mc

    Do you want to continue? [Y/n] 라는 문구가 나오면 y를 입력하고 설치를 진행하면 됩니다. 설치가 완료된 후 mc 명령어를 입력하면 위 사진과 같은 화면이 나옵니다.

    mc 화면에서 나올 수 있는 방법은 아래와 같습니다. 

    1. exit 입력
    2. F10 버튼 누르기
    3. 오른쪽 하단 Quit를 마우스로 누르기

    Nginx (엔진엑스) 설치하기

    				
    					sudo apt install nginx
    				
    			

    루트 사용자 상태에서 위 코드를 복사해서 붙여넣기해서 설치를 진행합니다. 

    				
    					sudo apt update && sudo apt upgrade && sudo apt autoremove
    				
    			

    설치가 잘 진행이 되지 않거나  Use ‘sudo apt autoremove’ to remove it. 라는 문구가 출력되면 위에 코드를 복사해서 입력한 뒤 다시 처음부터 설치를 진행하면 됩니다. 

    nginx

    정상적으로 설치가 되었는지 확인하려면, 인터넷 주소창에 고정 IP 주소 또는 구매한 도메인 주소를 입력하면 위 사진과 같은 화면이 출력됩니다.

    				
    					sudo nano /var/www/html/index.nginx-debian.html
    				
    			

    이제 화면에 출력된 문구를 수정하고 잘 적용이 되는지 확인해보도록 하겠습니다. 위에 코드를 복사해서 입력합니다. 

    nginx1

    코드를 입력하면 위와 같은 화면이 나옵니다. 노란색으로 표시한 부분에 welcome to nginx!를 원하는 문구로 바꿔주고

    CTRL+X 입력 → Y 입력 → 엔터   

    위에 과정을 통해 변경된 내용을 저장합니다.

    				
    					sudo service nginx restart
    				
    			

    변경된 내용을 적용하기 위해 nginx를 재시작합니다. 위에 명령어를 복사해서 입력해주세요. 

    nginx2

    nginx을 재시작했다면, 다시 인터넷 창에서 도메인 주소를 입력해서 들어가면 위에 사진처럼 변경된 내용이 화면에 출력되는 것을 확인할 수 있습니다. 

    MariaDB 설치하기

    				
    					sudo apt install mariadb-server mariadb-client
    				
    			

    위 코드를 복사해서 입력해주세요. Do you want to continue? [Y/n] 라는 문구가 나오면 y를 입력하고 설치를 진행하면 됩니다.

    				
    					sudo mysql_secure_installation
    				
    			

    다운이 완료되었으면, MariaDB를 설정하도록 하겠습니다. 위 코드를 복사해서 입력해주세요.

    위와 같은 화면이 나오면 enter를 입력합니다. 

    위와 같은 문구가 나오면 Y를 입력하고 설정할 비밀번호를 입력합니다. 입력한 비밀번호는 반드시 기억하고 있어야합니다.

    비밀번호를 입력하면 Y/n을 선택하는 문구가 나오는데 모두 Y를 입력하고 넘어가면 됩니다. 마지막에 Thanks for using MariaDB! 라는 문구가 나오면 정상적으로 설정이 완료됐습니다. 

    이제 DB에 접속하고 생성하는 과정을 진행하도록 하겠습니다. 

    				
    					sudo mysql -u root -p
    				
    			

    위 코드를 복사해서 입력하면 비밀번호를 입력하는 화면이 나옵니다. 비밀번호는 위에서 입력한 비밀번호입니다. 

    비밀번호를 입력하고 나서 위 사진처럼 입력창이 바뀌었다면 정상적으로 MariaDB에 접속이 된것입니다. 

    				
    					exit;
    				
    			

    위 명령어를 입력하면 MariaDB에서 나갈 수 있습니다. 

    				
    					sudo mysql -u root -p
    				
    			

    위 명령어를 입력해서 다시 MariaDB에 접속합니다. 

    				
    					CREATE DATABASE wpdb;
    				
    			

    위 명령어를 통해 wpdb라는 이름의 데이터베이스를 생성합니다. 

    				
    					CREATE USER 'wpdbuser'@'localhost' IDENTIFIED BY 'password';
    				
    			

    위 명령어를 통해 wpdbuser 라는 MariaDB의 유저를 생성하고 그 비밀번호를 password로 합니다.

    따라서 wpdbuser 와 password 에는 본인이 원하는 아이디(이름)와 비밀번호를 입력하면 되고 반드시 기억하고 있어야 합니다.

    				
    					GRANT ALL ON wpdb.* TO 'wpdbuser'@'localhost' WITH GRANT OPTION;
    				
    			

    아래 명령어를 통해 wpdbuser에게 wpdb라는 DB의 모든 권한을 갖게 합니다.

    				
    					FLUSH PRIVILEGES;
    EXIT;
    				
    			

    모든 설정을 완료했다면 위 명령어를 통해 빠져나옵니다.

    PHP 설치하기

    				
    					sudo apt update && sudo apt upgrade && sudo apt autoremove
    				
    			

    PHP를 설치하기 전 업데이트, 업그레이드, 불필요한 것들을 지워줍니다. 

    				
    					sudo apt install php7.4-fpm php7.4-common php7.4-mysql php7.4-gmp php7.4-curl php7.4-intl php7.4-mbstring php7.4-xmlrpc php7.4-gd php7.4-xml php7.4-cli php7.4-zip zip unzip
    				
    			

    현재 PHP8이 나왔지만, 아직까지 호환성이 PHP7.4가 더 좋기 때문에 PHP7.4를 설치합니다. 위 코드를 복사해서 입력하고 위에서 했던 것과 마찬가지로 Do you want to continue? [Y/n] 라는 문구가 나오면 y를 입력하고 설치를 진행하면 됩니다.

    				
    					sudo systemctl enable php7.4-fpm
    				
    			

    위 명령어를 통해 재부팅 시 PHP가 자동으로 실행 되도록 합니다.

    				
    					sudo systemctl start php7.4-fpm
    				
    			

    위 명령어를 통해 php7.4를 실행합니다.

    				
    					sudo nano /etc/php/7.4/fpm/php.ini
    				
    			

    워드프레스 세팅을 위해 PHP 설정값을 바꿔야합니다. 위 명령어를 복사해서 입력합니다. 

    명령어를 복사해서 입력하면 위 사진처럼 화면이 나옵니다. Ctrl+W 를 누르면 검색을 할 수 있습니다. 아래 내용을 검색해서 설정을 변경하도록 합니다. 

    • short_open_tag = On
    • memory_limit = 256M
    • max_input_vars = 5000
    • max_input_time = 360
    • cgi.fix_pathinfo = 0
    • upload_max_filesize =100M
    • post_max_size = 101M
    • max_execution_time = 360
    • date.timezone =Asia/Seoul

    ※주의사항※
    문자 앞에 ;이 붙어있으면 주석 처리가 됩니다.

    예시1) cgi.fix_pathinfo를 검색해보면 ;cgi.fix_pathinfo=1 으로 나와있습니다.
    앞에 ; 은 주석으로 처리한다는 의미로 반드시 삭제합니다.
    ;cgi.fix_pathinfo=1 → cgi.fix_pathinfo = 0

    예시2) ;max_input_vars = 1000 → max_input_vars = 5000

    예시3) ;date.timezone = → date.timezone = Asia/Seoul

    설정이 완료되었다면 Ctrl+X 입력 후 Y 입력 후 엔터를 눌러서 빠져나옵니다.

    				
    					sudo systemctl reload php7.4-fpm
    				
    			

    위 명령어를 입력해 PHP7.4를 재시작해 변경된 내용을 적용시킵니다.

    워드프레스 설치하기

    				
    					cd /tmp
    wget https://wordpress.org/latest.tar.gz
    tar -xvzf latest.tar.gz
    sudo mv wordpress /var/www/wordpress
    				
    			

    위 4가지 명령어를 통해 최신 버전의 워드프레스를 다운로드하고 압축을 풀고 /var/www/wordpress에 위치하도록 만듭니다. 파일 위치는 특별하게 원하는 곳이 있다면 임의로 변경해도 됩니다. 하지만 홈페이지에 작성될 글이 위에 방법을 기준으로 설명할 것이기 때문에 바꾸지 않는 것을 추천합니다.

    				
    					sudo chown -R www-data:www-data /var/www/wordpress/
    sudo chmod -R 755 /var/www/wordpress/
    				
    			

    위 명령어를 통해 해당 폴더의 소유권을 www-data에게 주고, 권한을 755로 주도록 합니다.

    				
    					sudo nano /etc/nginx/sites-available/wordpress
    				
    			

    Nginx 서버 설정 파일을 만들기 위해 아래 명령어를 입력 합니다. 명령어를 입력하면 아무것도 없는 화면이 출력 됩니다. 

    출력된 화면에 밑에 코드를 복사해서 붙여 넣습니다. 주의사항은 server_name 부분에 도메인 주소를 내 도메인 주소로 변경해서 입력해야 합니다. 

    				
    					server {
        listen 80;
        listen [::]:80;
        server_name www.example.com example.com;  # example.com를 자신이 원하는 도메인으로 수정하세요.
        root /var/www/wordpress;
        index index.php ;
        location ~ \.(gif|jpg|png)$ {
            add_header Vary "Accept-Encoding";
            add_header Cache-Control "public, no-transform, max-age=31536000";
        }
        location ~* \.(css|js)$ {
            add_header Cache-Control "public, max-age=604800";
            log_not_found off;
            access_log off;
        }
        location ~*.(mp4|ogg|ogv|svg|svgz|eot|otf|woff|woff2|ttf|rss|atom|ico|zip|tgz|gz|rar|bz2|doc|xls|exe|ppt|tar|mid|midi|wav|bmp|rtf|cur)$ {
            add_header Cache-Control "max-age=31536000";
            access_log off;
        }
        charset utf-8;
        server_tokens off;
        client_max_body_size 100M;
        location / {
            #try_files $uri $uri/ =404;
            try_files $uri $uri/ /index.php?q=$uri&$args;
        }
        location ~ /\.ht {
            deny all;
        }
        location ~ \.php$ {
             include snippets/fastcgi-php.conf;
             fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
             fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
             include fastcgi_params;
        }
    }
    				
    			

    입력을 완료 했다면 CTRL+X 입력 → Y 입력 → 엔터 통해 변경된 내용을 저장하고 빠져나옵니다.

    				
    					sudo ln -s /etc/nginx/sites-available/wordpress /etc/nginx/sites-enabled/
    				
    			

    파일 활성화 하기 (위 코드)

    				
    					sudo rm -f /etc/nginx/sites-enabled/default
    				
    			

    기존 활성화된 default 서버 링크만 삭제

    				
    					sudo nginx -t
    				
    			

    문법 오류 검사 명령어 sudo nginx -t

    sudo nginx -t를 입력했을 때 위 사진처럼 출력이 되면 문제가 없다는 뜻입니다. 

    				
    					sudo service nginx restart
    				
    			

    위 명령어를 통해 nginx를 재시작 합니다.

    SSL 인증

    				
    					sudo apt install python3-certbot-nginx
    				
    			

    CERTBOT은 SSL 인증서 설치 프로그램 입니다. 위 명령어로 CERTBOT을 설치 합니다. Do you want to continue? [Y/n] 라는 문구가 나오면 y를 입력하고 설치를 진행하면 됩니다.

    				
    					sudo certbot --nginx -d example.com -d www.example.com
    				
    			

    위 명령어로 도메인에 대한 SSL 인증서를 생성합니다.  위 내용에서 example.com 부분을 내 도메인으로 반드시 바꿔야합니다. 

    명령어를 입력하면 위와 같은 내용이 나옵니다. 인증서 갱신, 보안 공지 등 이메일로 안내를 해준다는 것입니다. 이메일 주소를 입력합니다. 

    A를 입력합니다. 

    Y를 입력합니다. 

    2를 입력합니다. 

    모든 과정이 성공적으로 됐다면, 위 사진처럼 내용이 나옵니다. 

    				
    					sudo certbot renew --dry-run
    				
    			

    SSL 인증서가 잘 발급이 된 건지 확인해야 합니다. 위에 명령어를 복사해서 입력해주세요.

    명령어를 입력했을 때, 위 사진처럼 나오면 성공적으로 SSL 인증서 발급이 된 것입니다. 

    설치형 워드프레스 멀티사이트 만들기

    이제 본격적으로 워드프레스 홈페이지를 만드는 과정입니다. 이제부턴 프로그래밍적인 부분보단 홈페이지에서 진행하는 부분이 많습니다. 홈페이지를 통해 멀티 사이트를 만들고 진행합니다. 따라서 시작해보도록 하겠습니다. 

    워드프레스 초기 설정하기

    멀티1

    인터넷 주소창에 도메인 주소를 입력하고 접속하면 위 사진과 같은 화면이 나오는 것을 볼 수 있습니다. 사용언어로 한국어를 선택하고 계속 버튼을 누릅니다. 

    멀티2
    멀티3

    시작합니다 버튼을 누르고 데이터베이스 이름, 사용자명, 비밀번호는 이 글에서 MariaDB를 생성할때 입력했던 데이터베이스 이름, 사용자명, 비밀번호를 입력하면 됩니다. 

    멀티4
    멀티5

    사이트 제목, 사용자명, 비밀번호, 이메일 주소를 입력하고 워드프레스 설치를 누르면 됩니다. 

    멀티6
    멀티7

    방금 만든 아이디나 이메일주소를 입력하고 비밀번호를 입력한 뒤 로그인하면 위 사진과 같은 워드프레스 관리자 페이지가 나옵니다. 워드프레스 관리자 페이지가 나왔다면 정상적으로 등록이 된 것으로 다음 단계로 넘어가면 됩니다. 

    워드프레스 멀티사이트 만들기

    네트워크 생성까지 맞췄다면, 워드프레스 홈페이지 1개가 완성이 된 겁니다. 이제 멀티사이트를 만들어볼 텐데요. 멀티사이트는 지금 현재 화면에서 새로운 사이트를 추가하는 방식입니다.  

    간단하게 말하면 멀티사이트가 아닌 워드프레스는 도메인 1개당 지금까지 했던 과정을 계속해야 하는 거구요. 

    멀티사이트인 워드프레스는 지금 했던 과정 1번으로 여러 개의 사이트를 추가할 수 있는 겁니다. 

    첫 번째, 네트워크 생성하기 

    네트워크를 생성해야 멀티사이트로 생성이 가능합니다. 

    Putty를 통해 추가해야 하는 부분이 있어 Putty를 실행하고 루트 사용자로 접속합니다.
    윈도우 → 검색 → Putty 실행

    				
    					sudo su
    				
    			

    Putty를 실행했다면 sudo su를 입력해 루트 모드로 접속합니다.

     

    				
    					sudo apt update && sudo apt upgrade
    				
    			

    네트워크 생성하기 전 업데이트 항목, 업그레이드 항목을 다시 한 번 체크하기위해 위 내용을 복사해서 붙여넣습니다. 

    Y/n 라는 문구가 나오면 y를 누릅니다. 

    				
    					sudo nano /var/www/wordpress/wp-config.php
    				
    			

    업데이트, 업그레이드 체크가 끝났으면 위 코드를 복사해서 붙여넣기 합니다. 붙여넣기를 하면 아래와 같은 화면이 출력됩니다. 

    define ( ‘WP_DEBUG’, false ) ; 라는 곳을 찾아서 기억하도록합니다. 

    AWS
    				
    					define('WP_ALLOW_MULTISITE', true);
    				
    			

    위 코드를 복사해서 위 사진속 빈공간에 내용추가를 해줍니다. 아래사진 참고하시기 바랍니다. 

    AWS

    코드를 위 사진처럼 추가했다면, Ctr+X 를 눌러 Y를 입력한 뒤 엔터를 누르고 빠져나옵니다. 

    이제 본인 홈페이지 관리자 페이지로 들어가면 위 사진처럼 도구 → 네트워크 설치가 있을 겁니다. 네트워크 설치 버튼을 누릅니다. 

    만약에 없다면 새로고침(F5)를 눌러보시고, 그래도 없다면 putty 화면에서 아래 코드를 복사해서  붙여 넣어 웹서버를 재시작한 뒤 다시 네트워크 설치 버튼이 있는지 확인합니다. 

    				
    					sudo systemctl reload nginx
    				
    			

    네트워크 설치 버튼을 누르면 위 화면처럼 나옵니다. 하위 도메인, 하위 디렉터리를 선택하는 것 중 하위 도메인을 선택하고 설치 버튼을 누릅니다. 

    설치 버튼까지 누르면 위 사진처럼 화면이 나올겁니다. 빨간색 네모친 부분을 워드프레스 환경설정 파일에 입력해줘야합니다. 

    				
    					sudo nano /var/www/wordpress/wp-config.php
    				
    			

    위 명령어를 입력해서 워드프레스 환경설정 파일을 열고 아래 사진처럼 빨간색 네모친 부분을 입력해줍니다. 

    AWS

    입력을 모두 했다면, Ctr+X 를 눌러 Y를 입력한 뒤 엔터를 누르고 빠져나온뒤 아래 명령어를 통해 웹서버를 재시작 해줍니다. 

    				
    					sudo systemctl reload nginx
    				
    			

    두 번째, 사이트 추가하기 

    워드프레스 네트워크 페이지에 접속합니다. 네트워크 페이지는 왼쪽 상단 내 사이트 탭에서 들어갈 수 있습니다. 네트워크 페이지에 들어갔다면 왼쪽에 사이트 탭 새로 추가를 클릭합니다. 

    사이트 주소, 사이트 제목, 관리자 이메일 주소를 입력하고 사이트 추가하기를 누르면 새로운 페이지가 만들어집니다.

    주의사항으로 관리자 이메일에 가장 처음 워드프레스를 등록할 때 입력한 이메일 주소를 입력하면 내 사이트 탭에서 홈페이지를 볼 있습니다.

    세 번째, 사이트 주소 변경하기

    사이트 추가하기까지 마치면 왼쪽 사이드바에 모든사이트 탭에서 들어가면 새로 만든 홈페이지가 있는 것을 알 수 있습니다. 

    사이트 주소를 변경하고 싶다면, 새로 만든 사이트의 편집 버튼을 누르고 들어갑니다. 

    변경 버튼을 누르고 들어가면 사이트 주소가 나와 있습니다. 사이트 주소를 원하는 URL 혹은 하위 도메인의 이름을 바꾼 뒤 변경 사항 저장을 누르면 됩니다. 

    • 예시1) http://test.tastingroom.xyz https://example.tastingroom.xyz
    • 예시2) http://test.tastingroom.xyz → https://example.com

    네 번째, 서버에 사이트 등록하기 

    윈도우 → 검색에 putty 입력→ putty 프로그램 실행 

    				
    					sudo su
    				
    			

    루트 사용자로 접속합니다. 

    				
    					sudo nano /etc/nginx/sites-available/wordpress
    				
    			

    위 명령어를 입력해서 들어갑니다. 

    명령어를 입력해서 상단에 server_name 에 새로 추가한 도메인 주소를 추가해줍니다. 

    화면을 밑으로 내리면 server가 나옵니다. test.example.com 처럼 하위도메인 형식의 홈페이지는 이곳에 등록하지 않아도 되지만, 

    abcdefg.com 처럼 새로운 도메인이라면 기존에 있던 서버 밑에 새로운 서버를 추가로 등록해주는게 좋습니다. 

    서버에 사이트 등록을 맞췄다면 Ctrl+X  → Y 입력 → 엔터로 내용을 저장하고 나옵니다. 

    다섯 번째, SSL 인증 받기

    				
    					sudo certbot --nginx -d example.com -d www.example.com 
    				
    			

    위에는 기존에 SSL 인증서를 받을때 사용한 명령어 입니다.

    				
    					sudo certbot --nginx -d example.com -d www.example.com -d test.example.com
    				
    			

    기존에 인증서를 받을때 사용했던 명령어 + 새로 등록한 도메인주소를 입력하면 됩니다. 추가하는 형식은 위에 2가지를 비교해보시고 똑같이 따라하시면 됩니다. 
    (위에 나와있는 도메인은 본인 도메인으로 바꿔서 명령어를 입력하면 됩니다.)

    SSL 인증서를 받는 명령어를 입력하면 위 화면처럼 나옵니다. E를 입력합니다.

    2를 입력합니다. 

    위 화면처럼 출력이 됐다면 성공적으로 SSL 인증을 받는 단계까지 완료되었습니다. 

    내용 정리

    워드프레스를 시작하는 처음 단계부터 정말 꼼꼼하게 글을 써봤습니다. 많은 도움이 되시기 바랍니다. 감사합니다. 

    2 thoughts on “AWS 라이트세일 ubuntu 20.04 워드프레스 홈페이지 만들기”

    1. 안녕하세요 정말 도움이 많이 된 글입니다. 감사합니다.
      포스팅 글 그대로 따라해서 워드프레스 홈(default) 잘 열립니다.
      플러그인 추가 설치등도 잘 되구요.
      그런데 백업/복구 플러그인(updraftplus)을 사용해서 기존 웹사이트를 복원하려니 MySQL server has gone away 와 같은 에러가 발생하면서 웹사이트가 다운이 됩니다. 혹시나 설치중에 잘못한게 있을까 싶어 수차례 재설치/ 스냅샷 복원 등을 해봐도 동일하네요ㅠㅠ

      구글링해보니 대략 관련되는 파라미터들을 수정해줬는데도 해당 에러가 없어지질 않네요. 아래 파라미터들 이외에 nginx 서버나 mariaDB 관련 파라미터 설정을 해줘야 할게 있을까요? 혹시 이와 관련해서 경험이 있으시면 조언부탁드려요.
      [mysqld]
      connect_timeout = 100
      interactive_timeout = 31536000
      wait_timeout = 31536000
      innodb_buffer_pool_size = 2G
      max_allowed_packet = 1000M​
      innodb_lock_wait_timeout = 500
      net_read_timeout = 28800
      net_write_timeout = 28800
      slave_net_timeout = 28800

      응답
      • 안녕하세요.

        개인적인 생각이지만, 아마존 Lightsail에서 인스턴스 클릭 → 지표 클릭해서 확인해보시겠어요?
        제 생각엔 CPU 성능 때문에 그럴 것이라고 생각이 됩니다.

        동일 작업을 했을때 CPU 사용률이 버스트 가능영역에서 있으면 웹사이트가 다운 되더라구요.

        그럴 경우에는 인스턴스 플랜을 업그레이드 해야합니다.

        응답

    Leave a Comment