Vultr를 사용하여 파이썬 서버를 배포, 워드프레스와 연동
오늘은 Vultr를 사용하여 파이썬 서버를 배포하고, 워드프레스와 연동하는 방법을 단계별로 설명하겠습니다.
1. Vultr에서 서버 설정
1.1 Vultr 인스턴스 생성
- Vultr에 로그인합니다.
- 새 인스턴스 배포:
Deploy New Instance
버튼을 클릭합니다.- 서버 위치를 선택합니다.
- 서버 유형으로
Ubuntu 20.04 LTS
를 선택합니다. - 서버 크기를 선택합니다 (예: 1GB RAM, 25GB SSD).
- 추가 옵션을 설정합니다 (필요에 따라).
Deploy Now
버튼을 클릭하여 서버를 생성합니다.
1.2 서버 접속
서버가 생성되면, 주어진 IP 주소와 루트 암호를 사용하여 서버에 SSH로 접속합니다.
ssh root@your_server_ip
2. 파이썬 환경 설정
2.1 패키지 업데이트 및 Python 설치
서버에 접속한 후, 패키지를 업데이트하고 파이썬 및 필요한 패키지를 설치합니다.
apt update
apt upgrade -y
apt install python3 python3-venv python3-pip -y
2.2 가상 환경 생성 및 활성화
mkdir /var/www/zipcode_converter
cd /var/www/zipcode_converter
python3 -m venv venv
source venv/bin/activate
2.3 Flask 및 기타 패키지 설치
pip install Flask requests gunicorn
3.1 server.py
파일 작성
nano /var/www/zipcode_converter/server.py
다음 코드를 작성합니다:
from flask import Flask, request, jsonify
import requests
app = Flask(__name__)
@app.route(‘/search’, methods=[‘GET’])
def search_address():
zipcode = request.args.get(‘zipcode’)
encoded_key = ‘YOUR_ENCODED_KEY’ # 실제 키로 변경
response = requests.get(f’https://api.odcloud.kr/api/15075657/v1/uddi:5e37e2a5-1e12-4129-91cf-e5d0eb0e8e0c?page=1&perPage=10&serviceKey={encoded_key}&zipcode={zipcode}’)
return jsonify(response.json())
@app.route(‘/convert’, methods=[‘GET’])
def convert_address():
address = request.args.get(‘address’)
encoded_key = ‘YOUR_ENCODED_KEY’ # 실제 키로 변경
response = requests.get(f’https://api.addressencoding.example.com?key={encoded_key}&text={address}’)
return jsonify(response.json())
if __name__ == ‘__main__’:
app.run(host=’0.0.0.0′, port=5000)
4. Gunicorn 및 Nginx 설정
4.1 Gunicorn으로 Flask 애플리케이션 실행
gunicorn --workers 3 --bind 0.0.0.0:5000 server:app
4.2 Nginx 설치 및 설정
apt install nginx -y
Nginx 설정 파일을 작성합니다:
nano /etc/nginx/sites-available/zipcode_converter
다음 내용을 추가합니다:
server {
listen 80;
server_name your_server_ip;
location / {
proxy_pass http://127.0.0.1:5000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
Nginx 설정 활성화 및 재시작:
nginx -t
systemctl restart nginx
5. 워드프레스에서 파이썬 서버와 통신
워드프레스 플러그인에서 파이썬 서버와 통신하도록 설정합니다.
5.1 워드프레스 플러그인 코드 수정
<?php
/*
Plugin Name: Zipcode Converter
Description: 우편번호 검색 및 영어 주소 변환 기능을 제공하는 플러그인입니다.
Version: 1.0
Author: Your Name
*/
function zipcode_converter_shortcode() {
ob_start();
?>
<div id=”zipcode-converter”>
<form id=”zipcode-search-form”>
<input type=”text” id=”zipcode” name=”zipcode” placeholder=”우편번호를 입력하세요”>
<button type=”button” onclick=”searchAddress()”>검색</button>
</form>
<div id=”address-results”></div>
<div id=”english-address”></div>
</div>
<script>
function searchAddress() {
const zipcode = document.getElementById(‘zipcode’).value;
fetch(`http://your_server_ip/search?zipcode=${zipcode}`)
.then(response => response.json())
.then(data => {
let results = ‘<ul>’;
data.data.forEach(address => {
results += `<li>
<button type=”button” onclick=”convertToEnglish(‘${address.roadAddr}’)”>${address.roadAddr}</button>
</li>`;
});
results += ‘</ul>’;
document.getElementById(‘address-results’).innerHTML = results;
})
.catch(error => console.error(‘Error:’, error));
}
function convertToEnglish(address) {
fetch(`http://your_server_ip/convert?address=${encodeURIComponent(address)}`)
.then(response => response.json())
.then(data => {
document.getElementById(‘english-address’).innerText = data.encodedText;
})
.catch(error => console.error(‘Error:’, error));
}
</script>
<?php
return ob_get_clean();
}
add_shortcode(‘zipcode_converter’, ‘zipcode_converter_shortcode’);
?>
6. 플러그인 활성화 및 테스트
- 플러그인 활성화: 워드프레스 관리자 페이지로 이동하여, 플러그인 메뉴에서
Zipcode Converter
플러그인을 활성화합니다. - 페이지에 숏코드 추가: 새 페이지나 포스트를 생성하고,
[zipcode_converter]
숏코드를 추가합니다. - 테스트:
- 우편번호를 입력하고 검색 버튼을 클릭하여, 검색 결과가 제대로 나오는지 확인합니다.
- 검색 결과 중 하나를 선택하고 영어로 변환 버튼을 클릭하여, 변환된 영어 주소가 제대로 표시되는지 확인합니다.
이 과정을 통해 Vultr 서버에서 호스팅된 파이썬 서버와 워드프레스 플러그인이 연동되어 우편번호 검색 및 주소 변환 기능을 수행할 수 있습니다.