개인 서버에 Ubuntu LEMP WORDPRESS 설치하기 11

Contents

1. 개인 서버 만들기, 파워, 케이스, 메인보드, CPU쿨러, SSD, 메모리(RAM), CPU 선정과 주문 조립
2. 공유기 설정하기, 공유기1 브릿지 모드 설정, iptime 공유기2 IPTV 연결 설정
3. 개인 서버에 Ubuntu 22.04.4 LTS 설치하기, Universal-USB-Installer를 사용하여 부팅 가능한 USB를 생성하기
4. 개인 PC에 우분투 서버 접속용 3가지 SSH 설치, 자료실의 Putty, EditPlus, FileZilla 다운 후 설치하기
5. 우분투 서버 환경 date 설정하기
6. 웹 서버 Nginx 설치, 현재 iptables 규칙 초기화
7. Ubuntu sever 폴더 권한 설정, Nginx 페이지의 내용 수정과 권한 설정
8. Nginx 서버에 PHP8.3 설치, 자주 쓰이는 php8.3 모듈 설치하기
9. apt update와 upgrade가 완료 후 mariadb를 설치하기
10. MariaDB 관리 도구 phpMyAdmin 설치하기
11. 아사달에서 도메인 연결하기, 카페24에서 도메인 연결하기
12. HTTPS 적용을 위한 SSL 인증서 발급, Nginx에 acme-challenge 폴더 위치를 알리기 위하여 letsencrypt.conf 파일 만들기, Let’s Encrypt SSL 발급 받기
13. MariaDB에서 데이터베이스(DB) 만들기, phpMyAdmin에서 DB생성
14. 워드프레스 설치, 우분투 서버에 ko.wordpress.org/latest-ko_KR.zip 파일 설치, wordpress.zip 파일 압축 풀기, 서버 폴더 소유자 권한 및 사용자 그룹 변경
15. 워드프레스 설치 후 환경 설정, 우분투 서버에 wp-config.php에 임시디렉토리 설정, FTP 연결 정보 입력, Putty로 php.ini, nginx.conf를 수정

개인 서버에 Ubuntu LEMP WORDPRESS 설치하기 11

개인 서버에 Ubuntu sever LEMP(Linux-ubuntu+Nginx+MariaDB-Phpmyadmin+PHP8.3) WORDPRESS 설치하기

Nginx에 도메인을 연결하는 과정은 여러 단계로 이루어집니다. 이 과정을 통해 사용자가 도메인 이름을 입력했을 때, Nginx 서버가 해당 요청을 처리하도록 설정할 수 있습니다. 아래에는 기본적인 도메인 연결 과정을 설명합니다.

도메인 등록 기관에서 도메인을 구매 후, 도메인의 DNS 설정에서 A 레코드를 서버의 외부접속 IP 주소로 설정하여 도메인이 해당 서버를 가리키도록 합니다.

Nginx에서는 가상 호스트를 서버 블록(server block)이라고 합니다. 도메인에 대한 요청을 처리하기 위해 새로운 서버 블록을 설정합니다.

a. Nginx의 설정 파일이 위치한 디렉토리(/etc/nginx/sites-available/)에 새로운 설정 파일을 생성합니다. 파일 이름은 도메인 이름으로 하는 것이 관리에 편리합니다.

b. 생성한 설정 파일에 서버 블록을 구성합니다. 다음은 기본적인 서버 블록 설정의 예시입니다.

server {
    listen 80;
    server_name example.com www.example.com;

    root /var/www/example.com/html;
    index index.php index.html index.htm index.nginx-debian.html;

    location / {
        try_files $uri $uri/ =404;
    }
}

 

11-1. 아사달에서 도메인 연결하기

아사달에서 도메인을 구매 시 ip 포워딩 서비스 신청(junewoo.com 도메인 과 개인 서버 접속 ip<-개인 서버 외부 접속ip(iptime 공유기 외부 접속ip) ) 하시면 도메인 연결 서비스를 제공합니다.

아사달 접속 주소입니다. https://myinfo.asadal.com/domain/

아래에 아사달 도메인 서비스의 내서비스 > 호스팅 연장 클릭 하시면 IP 포워딩 신청이(필자의 경우) 되어있습니다.

IP 포워딩 신청은 고객지원 > 호스팅 문의 게시판에 직접 신청 하셔야 합니다.

서비스 신청 후 서너 시간 뒤에 신청한 게시판에 ‘신청하신 *** 설정을 완료하였습니다’ 댓글이 달리게 되면 되신겁니다.

설정이 잘 안되시면 고객센터에  문의 전화를 하시면, 전문 직원이 개인 서버 IP 포워딩에 대해 알려줍니다.

11-2. 카페24에서 도메인 연결하기

카페 24에서 구매한 도메인의 경우, 개인 서버로 ip 포워딩은 카페 24홈페이지에 접속해서 직접 설정할 수 있습니다.

https://hosting.cafe24.com/?controller=myservice_domain_vservice&method=dns

 

카페 24 > DNS 관리 > 구매 도메인 체크 > 서버 호스팅 DNS관리 > -> DNS 관리 로 들어갑니다.

호스트IP(A 레코드) 관리 체크> + A 레코드 추가 버튼을 클릭하면 새 창이 뜹니다.

aiutech.co.kr 는 구메한 도메인 이름이며, IP 포워딩 주소(개인 서버 외부 접속 ip <- PC에서 my ip로 검색)를 입력합니다.

  • 설정하신 DNS정보는 약30분~1시간 후 반영됩니다.

이 외에 도메인 관련 구매는 도메인 서비스 회사를 통해서 하며, 그 외 다른 DNS 설정은 본인이 등록하는 도메인 구매 회사의 도움말을 참조하시기 바랍니다.

11-3. Nginx에 도메인 연결하기

웹서버인 Nginx에 도메인에 대한 정보를 연결하여 서버의 어떤 위치로 연결하라는 라우팅 설정을 합니다.

Nginx의 라우팅 설정은 이전에 index.php 수정을 하였던 /etc/nginx/sites-available/default 에 위치해 있습니다.

#으로 되어 있는 주석을 제외하고 내용을 보면 현재 이렇게 되어 있습니다.

server {
	listen 80 default_server;
	listen [::]:80 default_server;

	root /var/www/html;
	index index.php index.html index.htm index.nginx-debian.html;

	server_name _;

	location / {
		try_files $uri $uri/ =404;
	}

	location ~ \.php$ {
		include snippets/fastcgi-php.conf;
		fastcgi_pass unix:/run/php/php7.4-fpm.sock;
		fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 
		include fastcgi_params;
		fastcgi_read_timeout 300;
	}

	location ~ /\.ht {
	    deny all;
	}
}

여기서 본인이 구매한 도메인으로 적용하여 보겠습니다.

먼저 server_name _;에 도메인 주소를 적습니다. server_name junewoo.com;

server {
	listen 80 default_server;
	listen [::]:80 default_server;

	root /var/www/html;
	index index.php index.html index.htm index.nginx-debian.html;

	server_name junwqoo.com;

EditPlus 에서  /etc/nginx/sites-available/default 수정이 안되시는 분은 파일 사용자 권한을 ubuntu가 가져올 수 있도록 하시기 바랍니다.

명령창에 sudo chgrp ubuntu /etc/nginx/sites-available/default 를 입력합니다.

명령창에 sudo chmod 775 /etc/nginx/sites-available/default 를 입력합니다.

junewoo@cvilla:~$ sudo chgrp ubuntu /etc/nginx/sites-available/default
junewoo@cvilla:~$ sudo chmod 775 /etc/nginx/sites-available/default

작성을 완성하셨으면 Nginx 서버를 재 시작 합니다.

명령창에 sudo nginx -t 과 sudo service nginx restart 를 입력합니다.

sudo nginx -t를 입력했을 때, ~ syntax is ok 와 ~ test is successful 이 나오면 잘 수정이 된 것입니다.

junewoo@cvilla:~$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
junewoo@cvilla:~$ 

이번에는 www를 연결해 보겠습니다.

11-4. CNAME이라 불리는 서브 도메인이나, 도메인 앞의 www를 연결하는 방법입니다.

http://junewoo.com 주소와 http://www.junewoo.com 주소가 반드시 일치한다는 법은 없습니다.

어느 사이트에서는 www는 영어로 kor은 한국어로 cn은 중국어로 앞에 붙여서 사용하기도 합니다.

이건 서브 도메인이라고 도메인 DNS 관리시에 Type A에 붙여서 사용하는 경우입니다.

여기서는 www를 CNAME으로 해서 target을 itreport.tk 로 잡았습니다.

이번에는 www.junewoo.com로 접속된 도메인은 junewoo.com으로 연결되도록 설정해 봅니다.

location ~ / location ~ /\.ht {
deny all;
}
}
하단 부에
server {
listen 80;
listen [::]:80;
server_name www.itreport.tk;

location / {
return 301 http://junewoo.com$request_uri;     ### http://junewoo.com  로 리다이렉트
}
}

위 명령어를 EditPlus에서 defaul파일에 복사 붙여 넣기를 합니다.

명령어 구분을 하기 위하여 주석(###)을 먼저 붙이고 시작합니다.

     location ~ / location ~ /\.ht {
          deny all;
    }
}
### HTTP (CNAME 연결 www.junewoo.com to junewoo.com ) ###
server {
    listen 80;
    listen [::]:80; 
    server_name www.itreport.tk;       

    location / {  
        return 301 http://junewoo.com$request_uri;     ### http://junewoo.com  로 리다이렉트 
     }
}

그러면 default 파일의 내용이 아래와 같이 됩니다.

# Default s그럼 default 파일의 내용이 아래와 같이 됩니다.erver configuration
server {
	listen 80 default_server;
	listen [::]:80 default_server;

	root /var/www/html;
	index index.php index.html index.htm index.nginx-debian.html;

	server_name junewoo.com;

	location / {
		try_files $uri $uri/ =404;
		}
	}

	location ~ \.php$ {
		include snippets/fastcgi-php.conf;
		fastcgi_pass unix:/run/php/php8.3-fpm.sock;
		fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 
		include fastcgi_params;
		fastcgi_read_timeout 300;
	}

	location ~ /\.ht {
	    deny all;
	}
}

### HTTP (CNAME 연결 www.junewoo.com to junewoo.com ) ###
 server {
    listen 80;
    listen [::]:80; 
    server_name www.junewoo.com;

    location / { 
        return 301 http://junewoo.com$request_uri;     ### http://junewoo.com 로 리다이렉팅 
    }
}

작성을 완성한 뒤 Nginx 서버를 재 시작해 줍니다.

명령창에 sudo nginx -t 과 sudo service nginx restart 를 입력합니다.

다음으로 현재 없는 도메인 주소를 웹 브라우저에서 찾을 때 에러 표시 방법입니다.

11-5. 도메인 주소가 변경되어 해당 내용이 없는 경우 보통 404 Error를 표시합니다 만, 여기 서는 특정 주소로 이동하도록 합니다.

해당 인터넷 URL과 관련된 파일이 없을 경우에 무조건 나타내주는 Page를 이동시킬 수 있습니다.

아래 404 페이지 부분가 나타는데 이렇게 하지 않고 메인 페이지로 이동하도록 하는 경우입니다.

try_files $uri $uri/ =404; 하단에 아래와 같이 작성해 줍니다.

if (!-e $request_filename) {
rewrite ^.*$ /index.php last;
}

그러면 index.php로 이동하게 됩니다.

	server_name junewoo.com;

	location / {
		# First attempt to serve request as file, then
		# as directory, then fall back to displaying a 404.
		try_files $uri $uri/ =404;
	       if (!-e $request_filename) { 
                rewrite ^.*$ /index.php last;
                }	
	}

작성을 완성하셨으면 Nginx 서버를 재 시작합니다.

명령창에 sudo nginx -t 과 sudo service nginx restart 를 입력합니다.

junewoo@cvilla:~$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
junewoo@cvilla:~$ sudo service nginx restart

다음에는 HTTPS 적용을 위한 SSL 인증서 발급 받기입니다.

12. 개인 서버에 Ubuntu LEMP WORDPRESS 설치하기

Leave a Comment