개발 환경구성에서는 Windows 10/11 PC에서 Linux 서브 운영체제로 Ubuntu를 사용해서 Docker 및 Python 개발환경을 구성하도록 합니다.

 

- 서브운영체제를 위한 WSL 설치

- WSL에 Ubuntu 구동

- Docker Desktop 대신 Ubuntu에 Docker 및 Docker Compose 설치

- Python 개발 및 가상환경을 위해 pyenv, virtualenv 설치 및 구성

- 등등..

 

시리즈 목록

윈도우(windows) WSL Ubuntu에 virtualenv 설치 및 vscode 연동
윈도우(windows) WSL Ubuntu에 pyenv 설치
윈도우(windows) WSL Ubuntu에 도커(Docker) 설치
윈도우(windows) WSL에 Ubuntu 20.04 LTS 추가 설치
윈도우(windows) WSL 명령어
윈도우(windows) WSL 설치 및 Ubuntu 구동

 

내 윈도우 PC의 버전을 확인

 

 

windows terminal 설치

 

Windows 11에는 기본으로 설치되어 있습니다.(설치전이면 "다운로드", 설치되어 있어서 "열기")

다운로드 완료

 

관리자 권한으로 Terminal 열기

WSL 설치

 

1. Windows 10에서 설치시 "Linux용 Windows 하위 시스템", "가상 머신 플랫폼" 체크해서 활성화

 

첫 번째 방법 - 윈도우 기능 켜기/끄기

 

appwiz.cpl 입력 > Windows 기능 켜기/끄기 선택 >  "Linux용 Windows 하위 시스템", "가상 머신 플랫폼" 체크해서 활성화

 

두 번째 방법 - 명령행으로 실행 (해당 옵션으로 설치했음)

 

DISM(배포 이미지 서비스 및 관리) 명령어로 Microsoft-Windows-Subsystem-Linux 기능을 활성화

dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart

PS C:\Users\gabriel> dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart

배포 이미지 서비스 및 관리 도구
버전: 10.0.19041.844

이미지 버전: 10.0.19045.2728

기능을 사용하도록 설정하는 중
[==========================100.0%==========================]
작업을 완료했습니다.
PS C:\Users\gabriel>

dism 명령어로 VirtualMachinePlatform 기능을 활성화

dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

PS C:\Users\gabriel> dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

배포 이미지 서비스 및 관리 도구
버전: 10.0.19041.844

이미지 버전: 10.0.19045.2728

기능을 사용하도록 설정하는 중
[==========================100.0%==========================]
작업을 완료했습니다.
PS C:\Users\gabriel>

윈도우 재부팅

 

x64 머신용 최신 WSL2 Linux 커널 업데이트 패키지 (필수)

https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi

 

 

기본적으로 사용할 WSL 버전을 2로 변경

wsl --set-default-version 2

PS C:\Users\gabriel> wsl --set-default-version 2
WSL 2와의 주요 차이점에 대한 자세한 내용은 https://aka.ms/wsl2를 참조하세요
작업을 완료했습니다.
PS C:\Users\gabriel>

 

wsl 버전확인

PS C:\Users\gabriel> wsl --update
업데이트 확인 중입니다.
Linux용 Windows 하위 시스템 최신 버전이 이미 설치되어 있습니다.
PS C:\Users\gabriel> wsl --version
WSL 버전: 1.2.5.0
커널 버전: 5.15.90.1
WSLg 버전: 1.0.51
MSRDC 버전: 1.2.3770
Direct3D 버전: 1.608.2-61064218
DXCore 버전: 10.0.25131.1002-220531-1700.rs-onecore-base2-hyp
Windows 버전: 10.0.19045.2728
PS C:\Users\gabriel>

 

Ubuntu 최신 배포판 설치

Windows 10 버전 2004 이상(빌드 19041 이상) 또는 Windows 11 인경우 아래 명령으로 기본 Ubuntu 최신 (22.02.4) 설치가능

wsl --install

만일 해당 명령으로 설치가 안될경우 아래 두가지 방법으로 수동으로 설치합니다.

첫번째 Microsoft Store에서 ubuntu 설치 (해당 옵션으로 설치했음)

 

 

"열기"를 누르면 자동으로 설치 prompt가 실행되며, 사용자 id, passwd를 입력합니다.

설치가 완료되면 exit

 

관리자 권한으로 터미널 실행

두번째, wsl install을 이용해서 Ubuntu 설치

설치가능한 목록 확인

PS C:\Users\gabriel> wsl --list --online
다음은 설치할 수 있는 유효한 배포 목록입니다.
'wsl --install -d <배포>'를 사용하여 설치하세요.

NAME                                   FRIENDLY NAME
Ubuntu                                 Ubuntu
Debian                                 Debian GNU/Linux
kali-linux                             Kali Linux Rolling
Ubuntu-18.04                           Ubuntu 18.04 LTS
Ubuntu-20.04                           Ubuntu 20.04 LTS
Ubuntu-22.04                           Ubuntu 22.04 LTS
OracleLinux_7_9                        Oracle Linux 7.9
OracleLinux_8_7                        Oracle Linux 8.7
OracleLinux_9_1                        Oracle Linux 9.1
SUSE-Linux-Enterprise-Server-15-SP4    SUSE Linux Enterprise Server 15 SP4
openSUSE-Leap-15.4                     openSUSE Leap 15.4
openSUSE-Tumbleweed                    openSUSE Tumbleweed
PS C:\Users\gabriel>

 

wsl --install -d Ubuntu

PS C:\Users\gabriel> wsl --install -d Ubuntu

ubuntu 설치 prompt가 자동으로 실행, 이때 명시적으로 Ubuntu 버전을 지정하지 않으면 "Ubuntu 22.04 LTS" 가 설치됨.

 

아이디 패스워드 입력

설치된 ubuntu 확인

 

앞단계 WSL 설치후에 "wsl --set-default-version 2" 로 버전을 지정해준후 ubuntu를 설치했기 때문에 VERSION 2로 설치되었지만, 만일 VERSION이 1 이라면 아래 명령으로 2로 바꿔 주도록 합니다.

wsl --set-version Ubuntu 2

 

새로 터미널을 열고 선택박스에서  Ubuntu 를 선택하여 실행 합니다.

설치된 ubuntu의 버전 확인 : cat /etc/lsb-release

설치후 Ubuntu 업데이트 및 업그레이드 

gabriel@NB-15052600:~$ sudo apt update && sudo apt upgrade
[sudo] password for gabriel: <패스워드 입력>
Hit:1 http://archive.ubuntu.com/ubuntu jammy InRelease
Get:2 http://security.ubuntu.com/ubuntu jammy-security InRelease [110 kB]
Get:3 http://archive.ubuntu.com/ubuntu jammy-updates InRelease [119 kB]
Get:4 http://security.ubuntu.com/ubuntu jammy-security/main amd64 Packages [363 kB]
Get:5 http://archive.ubuntu.com/ubuntu jammy-backports InRelease [108 kB]
Get:6 http://security.ubuntu.com/ubuntu jammy-security/main Translation-en [108 kB]
Get:7 http://security.ubuntu.com/ubuntu jammy-security/main amd64 c-n-f Metadata [9732 B]
Get:8 http://security.ubuntu.com/ubuntu jammy-security/restricted amd64 Packages [225 kB]
Get:9 http://archive.ubuntu.com/ubuntu jammy/universe amd64 Packages [14.1 MB]

생략....

Preparing to unpack .../libkrb5-3_1.19.2-2ubuntu0.2_amd64.deb ...
Unpacking libkrb5-3:amd64 (1.19.2-2ubuntu0.2) over (1.19.2-2ubuntu0.1) ...
Setting up libkrb5-3:amd64 (1.19.2-2ubuntu0.2) ...
(Reading database ... 24137 files and directories currently installed.)
Preparing to unpack .../libgssapi-krb5-2_1.19.2-2ubuntu0.2_amd64.deb ...
Unpacking libgssapi-krb5-2:amd64 (1.19.2-2ubuntu0.2) over (1.19.2-2ubuntu0.1) ...
Setting up libgssapi-krb5-2:amd64 (1.19.2-2ubuntu0.2) ...
(Reading database ... 24137 files and directories currently installed.)
Preparing to unpack .../distro-info-data_0.52ubuntu0.4_all.deb ...
Unpacking distro-info-data (0.52ubuntu0.4) over (0.52ubuntu0.3) ...
Setting up distro-info-data (0.52ubuntu0.4) ...
Processing triggers for libc-bin (2.35-0ubuntu3.1) ...
gabriel@NB-15052600:~$

 

Ubuntu 22.04.2가 최신으로 설치됨

 

 

pynecone demo dashboard를 업무 모니터링하는 용도로 사용하기 위해서 사용중인 클라우드의 CentOS서버에 Docker Container로 pynecone 서버를 구동했습니다.

 

서버 (클라우드) : CentOS 7.9 

cat /etc/redhat-release
CentOS Linux release 7.9.2009 (Core)

Mac에서 docker image 받아서 사용해도 괜찮습니다.

 

 

Python 최신 & Node js Docker image

https://hub.docker.com/r/nikolaik/python-nodejs

 

Docker

 

hub.docker.com

https://github.com/nikolaik/docker-python-nodejs

 

GitHub - nikolaik/docker-python-nodejs: 🐳 Python with Node.js docker image

🐳 Python with Node.js docker image. Contribute to nikolaik/docker-python-nodejs development by creating an account on GitHub.

github.com

해당 컨테이너는 수시로 업데이트 됩니다. 

Docker Pull Command

docker pull nikolaik/python-nodejs

All images have a default user pn with uid 1000 and gid 1000.

 

다운받은 Docker Image 확인

$ docker images
REPOSITORY               TAG       IMAGE ID       CREATED         SIZE
nikolaik/python-nodejs   latest    eaeeaf150538   6 weeks ago     1.29GB

(문서만드는 시점에 Docker image의 python, node js 버젼이 올라갔네요 하지만 최신으로 받아도 설치에는 문제 없을겁니다.)

 

Linux 서버의 사용자 디렉토리에 pynecone 폴더를 만들고 해당 폴더를 volume으로 지정해서 컨테이너를 구동합니다.

이때 포튼 기본포트(3000), API 포트 (8000)을 열어야 합니다.

 

물론 3000, 8000 번포트는 클라우드 서버의 방화벽에도 포트를 오픈해야 외부에서 접속 가능합니다. 

 

docker run -it -d --name=demo_board -p 3000:3000 -p 8000:8000 -v /home/<사용자>/pynecone:/pynecone --user 1000 nikolaik/python-nodejs:1.0 bash

docker run -it -d --name=demo_board -p 3000:3000 -p 8000:8000 -v /home/<사용자>/pynecone:/pynecone --user 1000 nikolaik/python-nodejs:1.0 bash

 

root 로 컨테이너 들어가기

docker exec -it --user root demo_board bash

 

$ docker ps
CONTAINER ID   IMAGE                       COMMAND  CREATED       STATUS       PORTS                                                      NAMES
9e1be00f07e1   nikolaik/python-nodejs:1.0   "bash"  5 weeks ago   Up 5 weeks   0.0.0.0:3000->3000/tcp, 0.0.0.0:8000->8000/tcp, 5006/tcp   demo_board
$

 

vim 설치

apt-get update
apt-get install vim

리눅스 버전확인

root@9e1be00f07e1:/pynecone# cd /pynecone
root@9e1be00f07e1:/pynecone# uname -a
Linux 11d0133a3eb6 3.10.0-1160.42.2.el7.x86_64 #1 SMP Tue Sep 7 14:49:57 UTC 2021 x86_64 GNU/Linux
root@9e1be00f07e1:/pynecone# cat /etc/issue
Debian GNU/Linux 11 \n \l
root@9e1be00f07e1:/pynecone#

Python, Node 버전 확인

root@9e1be00f07e1:/pynecone# python -V
Python 3.11.1
root@9e1be00f07e1:/pynecone# node -v
v18.13.0
root@9e1be00f07e1:/pynecone#

pynecone 설치전 pip list 확인

root@9e1be00f07e1:/pynecone# pip list
Package          Version
---------------- ----------
certifi          2022.12.7
distlib          0.3.6
filelock         3.9.0
pip              23.0
pipenv           2022.12.19
platformdirs     2.6.2
setuptools       65.5.1
virtualenv       20.17.1
virtualenv-clone 0.5.7
wheel            0.38.4
root@9e1be00f07e1:/pynecone#

pynecone 설치

root@9e1be00f07e1:/pynecone# pip install pynecone

설치후 pip list 확인

root@9e1be00f07e1:/pynecone# pip list
Package            Version
------------------ ----------
anyio              3.6.2
async-timeout      4.0.2
certifi            2022.12.7
charset-normalizer 3.0.1
click              8.1.3
commonmark         0.9.1
distlib            0.3.6
fastapi            0.88.0
filelock           3.9.0
greenlet           2.0.2
gunicorn           20.1.0
h11                0.14.0
httpcore           0.16.3
httpx              0.23.3
idna               3.4
numpy              1.24.1
pandas             1.5.3
pip                23.0.1
pipenv             2022.12.19
platformdirs       2.6.2
plotly             5.13.0
psutil             5.9.4
pydantic           1.10.2
Pygments           2.14.0
PyMySQL            1.0.2
pynecone           0.1.15
python-dateutil    2.8.2
pytz               2022.7.1
redis              4.4.2
requests           2.28.2
rfc3986            1.5.0
rich               12.6.0
setuptools         65.5.1
six                1.16.0
sniffio            1.3.0
SQLAlchemy         1.4.41
sqlalchemy2-stubs  0.0.2a32
sqlmodel           0.0.8
starlette          0.22.0
tenacity           8.1.0
typer              0.4.2
typing_extensions  4.4.0
urllib3            1.26.14
uvicorn            0.20.0
virtualenv         20.17.1
virtualenv-clone   0.5.7
websockets         10.4
wheel              0.38.4
root@9e1be00f07e1:/pynecone#

 

설치가 완료된 후에는 일반 사용자로 컨테이너로 들어가서 작업하면됩니다.

docker exec -it demo_board bash

 

 

필요한 Python 라이브러리가 설치완료되면 본격적으로 demo 프로젝트를 생성합니다.

 

1.pynecone Demo 프로젝트 생성 참조해서 첫번째 프로젝트를 생성합니다.

https://amnesia.tistory.com/6

 

1.pynecone Demo 프로젝트 생성

pynecone 사이트 https://pynecone.io/docs/getting-started/project-structure 프로젝트 디렉토리 생성 % mkdir demo_board % cd demo_board % ll total 0 drwxr-xr-x 2 dongsik staff 64 2 18 11:02 . drwxr-xr-x 11 dongsik staff 352 2 18 11:02 .. 프로

amnesia.tistory.com

 

+ Recent posts