Python3.8.3을 Ubuntu에 설치해보자.

아래 글들은 좀 보기 좋기 다듬을 예정이다. 임시글이라고 봐둘.. 쿨럭

Python 설치 가이드

파이썬을 요즘 만지작 만지작 거리는 중인데, 운영체제마다 설치방법이 약간씩 달라서 여간 번거롭다. 우분투는 설치도 잘 안하고, 한번 잘못 설치하면 골치 아프기 때문에 정리를 해놓는 형식이다.

다운로드 경로 찾고 wget으로 우분투에 다운로드

https://www.python.org/downloads/release/python-383/

위 링크로 들어가서 다운로드 항목을 찬찬히 살펴본다.
Gzipped source tarball

https://www.python.org/ftp/python/3.8.3/Python-3.8.3.tgz

링크는 위와 같다.

이제 다시 우분투로 돌아가서 wget으로 다운을 받는다.
10분정도 소요되는군..

wget https://www.python.org/ftp/python/3.8.3/Python-3.8.3.tgz

압축풀고 인스톨

 $ tar xvfz Python-3.8.3.tgz 
./congifure 

이렇게 하면 잘되야 하지만...
내 환경은 언제나 문제가 있지. ㅋㅋㅋ

configure: error: in `/home/magpiebros/downloadFiles/pythone3.8.3/Python-3.8.3':
configure: error: no acceptable C compiler found in $PATH

컴파일러를 설치해줘야 하나보다...
sudo apt-get install gcc
(이전에 visudo에 사용자에 해당 계정을 추가해주어야만 했다.)

다시 명령어를 날려본다.
./configure

후두루루루루룩... 뭔가 잘 된다.
다음 명령어를 실행
make
make도 없네..

sudo apt-get install gcc
make
후두루루루루룩... 뭔가 잘 된다.

sudo make install
후두루루루루룩... 뭔가 잘 된다.

이제 설치가 잘 된지 확인이 남았다.

python3 -V

sudo apt-get install idle-python3.8

idle-python3.8

개발 관련 라이브러리 추가 설치

$ sudo apt-get install build-essential checkinstall
$ sudo apt-get install libreadline-gplv2-dev libncursesw5-dev libssl-dev \
    libsqlite3-dev tk-dev libgdbm-dev libc6-dev libbz2-dev libffi-dev zlib1g-dev

컴파일

$ cd Python-3.8.1
$ sudo ./configure --enable-optimizations
$ sudo make altinstall


pip경로 에러 발생

python-pip is in the universe repositories, therefore use the steps below:

sudo apt-get install software-properties-common
sudo apt-add-repository universe
sudo apt-get update
sudo apt-get install python-pip

참고 사이트

다시 컴파일

sudo make altinstall

https://somjang.tistory.com/entry/PythonUbuntu에-Python-37-설치하기

Ubuntu에서 sudo가 안되네?

아직 우분투를 잘 다루지는 못하지만, root 계정의 권한을 얻으려 하는데.
sudo 커맨드가 없다고 에러가 뜬다.

이때는 su- 명령어를 사용하여 로그인한후 다음과 같이 처리하자.

apt-get update
apt-get install sudo

다시 본인 계정으로 돌아와서 sudo를 사용해본다.
아마도 정상으로 동작할 것이다.

참고 명령어

sudo 명령어 권한을 특정 유저에게만 주고 싶을때는 vi가 아닌 visudo를 사용하여 수정한다.

visudo -f /etc/sudoers

Let’s Encrypt – ACMEv1에서 ACMEv2로 변경하기

학습목표

  • Let’s Encrypt – ACMEv1에서 ACMEv2로 변경하기

Let’s Encrypt에서는 ACMEv1을 2020년 6월 1일부터 중지할것이라는 메일을 보내왔다.
올해 초부터 메일이 왔지만, 잠시 서버쪽 셋팅을 멈추고 있었기 때문에(귀찮았던건 아니…) 무시하고 있었는데.
다음달부터 당장 안된다니.. 미루어놓았던 일을 해치워야 겠다.

주식으로 잃은 돈을 노력으로 얻기 위해서 다시 열심히 학습과 경제적 자유에 대한 열망으로 다시 손을 대기 시작했다.

각설하고 본론으로
Let’s Encrypt에서는 ACMEv1에서 ACMEv2로 변경하기 위한 가이드문서를 읽어보았다.
가이드 문서를 좀 읽어보니, ACME 클라이언트 구현을 위해서 Certbot을 추천하더라.
잘 모르면 추천받는걸로 작업하는게 인지상정.

ACMEv2의 장점 : (star)*인증서를 발급
기본적으로 certbot의 경우 실행시 자동으로 업데이트를 한다.
api주소만 단순히 ACMEv2를 사용하면 동일하게 사용할수 있다.

글로 배운데로 해보려 했지만, 실패

글로 배운 결론은 renewal 폴더 안의 conf 파일의 기존 ACMEv1 주소를 ACMEv2로 변경하면 정상 갱신이 가능하다고 한다.

글로 배운데로 해보려고 하는데, 왜 내 conf파일은 v2로 이미 갱신되어 있냐는 말인가??
server = https://acme-v02.api.letsencrypt.org/directory 로 이미 변경이 되어 있는 상태였다.

유연하게 해결해 나가기

이제 차선책으로 업데이트 전 인증서 상태를 확인해보고, 업데이트 후 인증서가 잘 변경되는지를 확인해보자.

lets encrypt 버전 확인

letsencrypt --version
certbot 0.27.0

인증서 확인 (root로 확인)
root@:~# certbot certificates
Saving debug log to /var/log/letsencrypt/letsencrypt.log

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Found the following certs:
이하 생략

현재 인증서 정보 확인

openssl x509 -noout -text -in /etc/letsencrypt/live/magpiebros.com/fullchain.pem 

ACME 버전 정보 확인은 할수 없었음. 

그래서 그냥 업데이트 하기로 함… ㅠ
뭐 아직 인증서 기간이 남아서 안된다고?

인증서 취소 삭제 다시 설치를 해야 하나….
기간 만료되거나 사용불가면 다시 되겠지라는 마음으로 일단 접는다.

만료되는 6월 다시 확인해보고 조치내용을 공유 예정.

// 인증서 취소 & 삭제
certbot-auto reboke —cert-path /etc/letsencrypt/renewal/www.magpiebros.com.conf
certbot-auto delete —cert-path /etc/letsencrypt/renewal/www.magpiebros.com.conf

crontab -e
min hour1/hour2 * * * /home/../certbot-auto renew —renew-hook “sudo /opt/…/ctlscript.sh restart apache”

SSL인증서 적용하기(03) – Let’s Encrypt Ubuntu 자동 갱신


글 정리중.

학습목표

  1. 3개월 단위로 재갱신을 해야 하는 SSL 인증서를 자동으로 갱신되게 구성한다.
  2. 자동으로 구동은 cron/crontab을 사용

crontab 스케쥴 확인

crontab에 설정되어 있는 스케쥴이 있는지 확인해보자.

# crontab -l
-su: crontab: command not found

현재 crontab 명령어를 실행해보면 없는 명령어라고 한다. crontab을 설치부터 해야할것 같다.

crontab 설치

# apt-get install -y cron

설치 완료후 확인
# crontab -l
no crontab for root

이제 cron 설치는 끝났다. 간단하게 cron에 대해서 학습하고 넘어가자.

crontab 기본 명령어와 설명

사실 우리는 cron을 설치했다. crontab을 설치하지 않았다는거다.
일반적인 개발자들은 crontab으로 스케쥴 관리를 한다고 말하곤 한다. cron은 뭐고 crontab은 뭐야??!

우리가 설치한 cron은 스케쥴러 데몬이고, crontab은 cron 데몬이 사용할 일정리스트라고 인지하면 쉽게 이해가 갈것이라고 생각한다.
cron 데몬은 crontab에 적혀있는 일정을 기억하고 있다가, 적혀있는 일정에 맞춰서 명령어를 수행해준다.

이제 명령어를 살펴보자.

작업스케쥴 보기
# crontab -l
no crontab for root

작업스케쥴 모두 삭제
# crontab -r
no crontab for root

작업스케쥴 수정
# crontab -e
no crontab for root - using an empty one

작업 스케쥴 일정표

[minute] [hour] [day] [month] [weekday] [command]

minute : 0 - 59
hour : 0 - 23
day : 1 - 31
month : 1 - 12
weekday : 0 - 6 (0 : 일요일)
command : 명령어

기타
*는 매분/매시간/매일/매달/매일이라는 의미
,는 여러개의 옵션을 줄때 사용. 1,2 1분과 2분 등
-는 연속된 범위를 나타냅
*/숫자 숫자마다 반복

두달에 한번씩 인증서 갱신을 한다면!

예제> 0 3 2 * * letsencrypt renew; service apache2 restart;

매달 3시 0분 2일에 command를 수행한다는 내용

이제 인증서가 잘 갱신되는지 지켜보는일만 남았다.

Ubuntu에 SFTP를 붙여보자

학습목표

  • FTP/SFTP의 차이점
  • Ubuntu에 FTP 설정

FTP / SFTP는 무엇인가?

FTP (File Transfer Protocol)
SFTP (Secure File Transfer Protocol)

그냥 이름만 풀이해서 보자면 보안이 강화된 파일 전송 프로토콜로 보인다. 안전하게 사용할수 있는 프로토콜이라면, 우리는 무엇을 써야 할까? 당연히 SFTP를 사용해야 하는 것이 맞을 것이다.

SFTP에는 3가지가 보이며, 우리의 생각과는 다른것들이 있다.

  • SFTP (SSL File Transfer Protocol)
  • SecureFTP (FTP/SSH)
  • FTPS (or FTP/SSL)

위에 나열된 것들에 대해서도 설명을 해볼까 했는데, 오랫만에 접속해서 해야 할것들이 많아서 일단은 생략 한다.

Ubuntu에 SFTP 설정

현재 우분투 서버에는 추가적인 설정 없이 SFTP 사용이 가능한 상황이다. SFTP 접속이 가능한 클라이언트를 설치 해야 하는데, 예전에는 파일질라를 주로 사용했었다.

그런데 지금은 자꾸 돈을 내라고 하고, 월정액으로 쓰라고 해서 무료 클라이언트를 찾아보았는데, 오늘자 기준으로 Cyberduck이 괜찮은것 같아 소개 한다.

참고로 포트는 다음과 같다.

FTP port : 21
SFTP port : 22

뭐 이번 글에서는 툴소개 정도로 끝이 나버렸네…
추가적으로 우분투내 sftp 설정은 아래 파일에서 좀더 세부화시킬수 있다.

SFTP 설정을 할수 있는 파일
# vi /etc/ssh/sshd_config 
ssh 재기동 명령
# service ssh reload

참고 사이트

  1. https://cyberduck.io 싸이버덕 다운 받는 url

SSL인증서 적용하기(02) – 우분투 SSL 적용하기

우분투에서 SSL 인증서 적용 목표

  1. Let’s encrypt 패키지 설치
  2. Let’s Encrypt에서 인증서 발급
  3. 발급된 인증서 확인
  4. crontab을 사용하여 자동으로 업데이트 기능 적용
  5. 참조사이트 추가

이제서야 돌고 돌아서 우분투에 SSL을 적용하는 시점에 다다랐다. 한가지씩 따라해보면서 SSL 적용을 해보자.

1 Let’s encrypt 패키지 설치

# apt-get install letsencrypt
Reading package lists... Done
....

2 인증서 발급하기

HTTP로 접속이 가능한 상태에서 인증서를 발급받고 HTTPS 설정을 완료할 것이다.

# letsencrypt certonly --webroot --webroot-path=/var/www/html -d magpiebros.com

몇번의 실패가 반복되었는데.. 원인은 webroot-path의 경로가 올바르지 않아서였다. 다른 사이트들을 참조해보다가.. 다시 한번 시도 해보니 정상 인증서가 발급되었다. 쿨럭…

3 발급된 인증서 확인

ls /etc/letsencrypt/live/도메인명/
README  cert.pem  chain.pem  fullchain.pem  privkey.pem

cert.pem : 인증서
chain.pem : 인증서 발급자 파일
fullchain.pem : cert.pem + chain.pem
privacy.pem : 개인키


위와 같이 발급된것이 확인된다면, 일단은 어려운 고비는 넘겼다.
이제 발급받은 인증서를 서버에 적용할 차례이다.

글이 너무 길어져서 아파치에 적용하는 글은 새로운 글로 시작하려 한다.
변변찮은 글재주를 가진 글을 읽어주신 분께 감사를 드린다.

참고링크

SSL인증서 적용하기(01) – SSL 인증서 간략 설명

현재 내 블로그는 SSL인증서 구성이 정상적으로 이루어지지 않아서, “안전하지 않음”이라는 위험문구가 나타나고 있는 상태이다.

당신이 보는 시점에 따라 녹색의 안전 좌물쇠가 표시되어져 있을 수도 있겠지만 말이다.

(녹색 자물쇠가 표시되어 있다면, 이 글은 신뢰할만한 글이라는 이야기로 받아들여도 될것이다.)

대부분의 질문과 답변 그리고 정보라고 적혀있는 사이트들은 다음과 같은 이야기들이였다.

“이렇게 해봐. 될껄? 안되면 구글 검색 다시 해보시고… 그래도 안되면 스택오버플로어 가서 검색하고 그래도 안되면 당신 운영체제를 다시 설치해봐”

맥파이의 생각

위와 같이 도움도 되지 않고, 그냥 명령어 몇개 따라서 실행해보고 되면 모두 잊어버리는 그런 블로그가 되고 싶지는 않다. 그렇기 때문에 당신이 원하는 답만 툭툭 던져주고 끝내지 않고, 뭔가 얻어갈수 있는 그런 내용들로 채울려고 노력할 것이다.

오늘은 너무 늦었으니..

내일 뀌뚤이(우리아들 애칭??)가 나에게 자유로운 시간을 줄때, 글을 이어가겠다.

이틀이 지나버렸다.

다시 글을 이어가겠다.

SSL(Secure Sockets Layer)는 넷스케이프 내비게이터의 보안 유지 기술이다.

Layer는 계층 단위로 보는것이 이해하기 편한데, 통신위에 Secure Socket 계층이 한단계 더 있어서 보안적인 측면이 한단계 더 높아졌다고 이해한다면, 간략한 이해는 될것으로 보인다.

SSL 인증서의 장점 및 역할

  • 통신 내용이 노출, 변경되는 것을 방지
  • 클라이언트가 접속하려는 서버가 신뢰 할 수 있는 서버인지 확인가능
  • SSL 통신에 사용할 공개키를 클라이언트에게 제공한다.

이제 기본적인 지식은 익혔으니, 다음 글을 통해서 적용해보자.

참고사이트