옛날에 한 번 만들었다가 방치 끝에 삭제를 당해버린 서버의 부활 프로젝트 !!! ^^
"오라클 클라우드"를 처음 들어보신 분도 계실 수 있는데,
나름 어느 정도의 시장은 갖고 있는 ... 우리나라 리전도 갖고 있는 클라우드 플랫폼이다.
https://www.oracle.com/kr/cloud/
다른 클라우드들과 마찬가지로
계정 등록을 할 때 신용카드 정보가 필요하다. (1달라인가? 결제하고 곧바로 취소된다)
가입을 까막득한 옛날에 했다보니 기억이 가물거려서.... ^^
가입 후 화면을 보면 다음과 같다.
밑에 내려보면 "리소스 실행" 부분에 "VM 인스턴스 생성" 카드가 보인다.
이것을 선택하면 된다.
기본 이미지가 Orable Linux인데... 다른 배포판을 고를 수도 있다.
눈치빠른 분은 이미 파악하셨겠지만, 고를 수 있다고 해서 모두 무료가 아니다.
회색 뱃지가 붙어있는 것을 잘 확인해야 한다.
나는 익숙한 우분투로 골라봤다.
SSH 키 생성해서 내려받는 방법도 있지만,
내가 사용하는 작업용 우분투에 이미 있는 Public-Key를 등록하는 방식으로 진행해봤다.
갖고 있는 Public-Key 복사해서 넣어줬다.
이렇게 하면 내 작업용 우분투에서 바로 오라클 서버로 접속할 수 있게 된다.
열심히 생성중이다.
확인해야 할 것은 "공용 IP 주소" 와 "사용자 이름"이다.
그냥 "ssh ubuntu@ip" 방식으로 접속하면 된다.
Disk 용량은 위에서 보듯이 50GB가 주어진 것을 알 수 있고,
메모리 용량은 다음과 같이 확인해볼 수 있다.
무료임에도 1GB를 주는 것은 대단한거다.
하지만, 뭣 좀 해보려면 좀 부족한 것도 사실이니.... swap을 잡아줘보자.
ubuntu@instance-20230626-2355:~$ free -h total used free shared buff/cache available Mem: 964Mi 201Mi 168Mi 1.0Mi 594Mi 627Mi Swap: 0B 0B 0B ubuntu@instance-20230626-2355:~$ sudo fallocate -l 2G /swapfile ubuntu@instance-20230626-2355:~$ sudo chmod 600 /swapfile ubuntu@instance-20230626-2355:~$ sudo mkswap /swapfile Setting up swapspace version 1, size = 2 GiB (2147479552 bytes) no label, UUID=6be33865-5c3a-4cce-bca3-96b4e1880438 ubuntu@instance-20230626-2355:~$ sudo swapon /swapfile ubuntu@instance-20230626-2355:~$ sudo swapon --show NAME TYPE SIZE USED PRIO /swapfile file 2G 0B -2 ubuntu@instance-20230626-2355:~$ free -h total used free shared buff/cache available Mem: 964Mi 202Mi 165Mi 1.0Mi 596Mi 626Mi Swap: 2.0Gi 0B 2.0Gi |
위 명령어들을 따라해보면 2GB 사이즈의 swap 메모리를 만들어줄 수 있다.
하지만, 재부팅하게 되면 사라지니... 재부팅해도 유지될 수 있도록 추가 작업을 해주자.
ubuntu@instance-20230626-2355:~$ sudo nano /etc/fstab |
아래 한 줄 추가해주면 된다. (탭으로 구분하는 것 잊지 말고!)
추가로... 우리는 대한민국 사람이니, 타임존을 맞춰주자.
ubuntu@instance-20230626-2355:~$ sudo timedatectl set-timezone Asia/Seoul ubuntu@instance-20230626-2355:~$ timedatectl Local time: Tue 2023-06-27 00:32:32 KST Universal time: Mon 2023-06-26 15:32:32 UTC RTC time: Mon 2023-06-26 15:32:32 Time zone: Asia/Seoul (KST, +0900) System clock synchronized: yes NTP service: active RTC in local TZ: no |
굳이 왜 이렇게까지 하냐면.... ^^
예전에 이렇게 만들어놓고 잊어먹어서.... 접속을 하지 않다가.... 결국은 삭제를 당했기에....
파이썬 환경을 만들어보자.
ubuntu@instance-20230626-2355:/srv/workspace/python-gmail$ sudo apt install python3 ubuntu@instance-20230626-2355:/srv/workspace/python-gmail$ sudo apt install python-is-python3 ubuntu@instance-20230626-2355:/srv/workspace/python-gmail$ sudo apt install python3-pip ubuntu@instance-20230626-2355:/srv/workspace/python-gmail$ pip install requests |
아래 소스코드를 저장해놓자.
#!/usr/bin/env python3 """ Send email via Gmail SMTP """ __author__ = "whatwant" __version__ = "0.1.0" __license__ = "BEER-WARE" import smtplib from email.mime.text import MIMEText from email.mime.multipart import MIMEMultipart from requests import get def send_email(sender_email, receiver_email, app_password, subject, text, html): message = MIMEMultipart("alternative") message["Subject"] = subject message["From"] = sender_email message["To"] = receiver_email part1 = MIMEText(text, "plain") part2 = MIMEText(html, "html") message.attach(part1) message.attach(part2) with smtplib.SMTP_SSL("smtp.gmail.com", 465) as server: server.login(sender_email, app_password) server.sendmail(sender_email, receiver_email, message.as_string()) def get_ip(): ip = get("https://api.ipify.org").text return ip if __name__ == "__main__": sender_email = "whatwant@whatwant.com" receiver_email = "whatwant@gmail.com" app_password = "xxxxxx" subject = "This is a lucky email from Python" text = f"My public IP address : {get_ip()}" html = f"<html><body><p>{text}</p></body></html>" send_email(sender_email, receiver_email, app_password, subject, text, html) |
위 코드를 실행하면 다음과 같이 메일이 온다.
하루에 한 번씩 보내도록 하자 ^^
만날 헷갈리는 crontab ... 예쁜 사이트의 도움을 받자.
crontab 등록을 해보자.
ubuntu@instance-20230626-2355:/srv/workspace/python-gmail$ crontab -e |
이제, 매일 새벽 4시에 메일을 보내준다 ^^