13주차 WEB/WAS/DB

정지원·2024년 5월 21일
0

에이블 스쿨 복습

목록 보기
46/51
post-thumbnail

PC(local)에서 Server로 연결하려면 ubuntu를 사용하여 ssh 명령을 통해 git bash를 사용한다.

강사님께서 AWS에서 ec2인스턴스에서 미리 server를 만들어서 우리에게 IP, ID, PW를 배포하였다.

kt.pem 파일은 pw를 사용하는 파일이다. 내가 원하는 경로에 나두고 경로를 꼭 기억해 두자

AWS

인스턴스 생성

  • 로그인 후 인스턴스 시작을 누른다

  • 내가 사용할 애플리케이션, 버전, 인스턴스 유형을 선택함 (강의에선 Ubuntu 사용)

  • 키페어 생성

  • 네트워크 설정

    • 보안 그룹을 사용하여 보안을 높일 수 있음
  • 요약

  • 최종 요약을 보고 내가 원하는 걸로 만들었는지 확인 후 생성함

  • 여기서 server를 생성할 수 있음

git bash

Setting Server

IP 서버 접속

local $ ssh -i <[pem file path> <user name>@<server public ip>

ex)
ssh -i ~/Desktop/kt.pem ubuntu@00.000.00.000

환경설정 파일 전송

  • 로컬pc에 있는 파일을 서버에 전송함
  • AWS에서 만든 kt.pem 파일을 Desktop 경로에 있어야 한다.
local $ scp -ri <pem file path><source file path><user name>@<public ip>:<destination file path>

ex)
local $ scp -ri ~/Desktop/kt.pem ~/Desktop/env ubuntu@00.000.000.000:~/

파이썬 설치

파이썬 설치
ubuntu $ source ~/env/pyenv.sh
파이썬 기본 버전을 3.8.5로 설정
ubuntu $ pyenv global 3.8.5
requirements.txt에 정의된 파이썬 패키지 설치
ubuntu $ pip install -r ~/env/requirements.txt

주피터 노트북 서버 설치

주피터 노트북 설정 파일 생성
ubuntu $ jupyter notebook —generate-config

주피터 노트북에 필요한 설정

  • 패스워드 설정
  • browser = False로 나둬야 함
  • private ip 설정을 추가해야 함

암호화된 패스워드 생성

ubuntu $ ipython

In [1]: from jupyter_server.auth import passwd
In [2]: passwd()
Enter password: ktpw
Verify password: ktpw
Out[3]: ~~~~~~
In [4]: quit

주피터 노트북 서버 설정

Vim Editor 접속
ubuntu $ sudo vi /home/ubuntu/.jupyter/jupyter_notebook_config.py

  • 가장 아래줄로 가려면 G 입력
  • 입력모드 i
c.NotebookApp.ip = '000.00.0.000' # private ip address
c.NotebookApp.open_browser = False # 자동 브라우져 실행 설정
c.NotebookApp.password = 'argon2: ~~~~~~ 위에서 생성된 패스워드'

  • 저장 후 나가기: esc(입력모드 나가기) + : + w(저장) + q(나가기) + enter(입력)
  • IP 환경으로 들어가짐
  • jupyter notebook을 입력 후 기존의 나의 인터넷 창에 IP:8888 입력시 jupyter notebook 접속 가능

주피터 노트북 서버에서 자바스크립트 커널 설정

nodejs 설치

javascript 실행을 위한 패키지 설치
ubuntu $ sudo apt-get install nodejs npm jupyter
ipython에서 실행 가능한 javascript를 npm으로 설치 및 설정
ubuntu $ sudo npm install -g --unsafe-perm ijavascript
ubuntu $ sudo ijsinstall --install=global

  • 서버 실행 확인
    ps -e | grep jup
  • 서버 종료
    kill -9 29497

MongoDB 설치

설치 명령

ubuntu $ sudo apt install software-properties-common gnupg apt-transport-https ca-
certificates -y

ubuntu $ curl -fsSL https://pgp.mongodb.com/server-7.0.asc | sudo gpg -o /usr/share/
keyrings/mongodb-server-7.0.gpg --dearmor

ubuntu $ echo "deb [ arch=amd64,arm64 signed-by=/usr/share/keyrings/mongodb-
server-7.0.gpg ] https://repo.mongodb.org/apt/ubuntu jammy/mongodb-org/7.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-7.0.list

최신 버전으로 업데이트

ubuntu $ sudo apt update

MongoDB 설치

ubuntu $ sudo apt install mongodb-org -y

MongoDB 서버 실행 및 실행확인

ubuntu $ sudo systemctl start mongod
ubuntu $ sudo systemctl status mongod

  • 창 나가려면 q 입력

mongo shell 실행

ubuntu $ mongosh

mongo shell 관리자 계정 생성

test>use admin

admin> db.createUser({ user: "kt", pwd: "ktpw", roles: [ "root" ] })

admin>quit

외부접속 허용 및 패스워드 사용설정

ubuntu $ sudo vi /etc/mongod.conf

  • bindIp: 0.0.0.0
  • security:
    authorization: enabled
  • 저장 후 나가기: :wq

설정 적용을 위한 MongoDB 서버 재시작

ubuntu $ sudo systemctl restart mongod

jupyter notebook 환경

  • jupyter notebook 실행 후

서버 접속 URL

  • pymong 설치
!pip install pymongo
  • 라이브러리 불러오기
import pymongo
import pandas as pd
import numpy as np

서버 접속

# uri = 'mongodb://<user>:<password>@<public ip>:<port>/?authSource=admin'
uri = 'mongodb://kt:ktpw@00.000.0.00:00000/?authSource=admin'
client = pymongo.MongoClient(uri)
list(client.list_databases())

CRUD

# make data
df = pd.DataFrame({
	'name': list('ABCDE'),
    'age': np.random.randint(20, 40, 5),
    'addr': list('SPIDS'),
    })
df

  • create
json_data = df.to_dict('records')
json_data

# DBS(client) > DB(mongo) > Collection(users)
result = client.mongo.users.insert_many(json_data)
result

  • read
collection = client.mongo.users
documents = collection.find({})
data = list(documents)
len(data), data[0]

  • update
collection = client.mongo.users
documents = collection.find({})
data = list(documents)
pd.DataFrame(data)

collection.update_many({'age': {'$lt':30}}, {'$set': {'age':20}})

documents = collection.find({})
data = list(documents)
pd.DataFrame(data)

  • delete
collection = client.mongo.users
collection.delete_many({'addr':'5'})

documents = collection.find({})
data = list(documents)
pd.DataFrame(data)

bash command

  • ubuntu 환경에서 사용함
  • ubuntu 환경에서 나가서 로컬 환경으로 가려면 exit 커멘드 사용

pyenv versions

  • 내가 사용하는 버전을 확인할 수 있음
    ex) pyenv versions

python

  • 파이썬 명령어를 사용할 수 있음
    ex) python

quit()

  • 파이썬 실행을 나옴
    ex) quit()

clear

  • 화면 초기화
    ex) clear

ls

  • 디렉토리의 파일 리스트를 출력함

    ex)

    • ls (현재 디렉토리의 리스트 출력)
    • ls env (env 안에 있는 리스트 출력)
    • ls -al env (모두 출력)

echo

  • 문자열 출력
    ex) echo "hello world!"

touch

  • 파일 생성함

ex)

  • touch test.txt

mkdir

  • 디렉토리 생성

    ex)

    • mkdir notenooks

pwd

  • 현재 디렉토리 위치를 출력함

    ex)

    • pwd

cd

  • 디렉토리 이동

    ex)

    • cd .. : 상위으로 이동
    • cd test : test 디렉토리로 이동

cat

  • 파일 안에 있는 텍스트 모두 출력

    ex)

    • cat requirements.txt : requirements.txt안에 있는 텍스트 출력
  • 파일 안에 있는 텍스트 상단부터 출력

    ex)

    • head -n 10 test.txt

tail

  • 파일의 마지막 문자열 출력

    ex)

    • tail -n test.txt

chmod

  • 파일 권한 수정
    ex) chowd 400 test.txt

chown

  • 파일 소유자 수정
    ex) chown -R ubuntu:ubuntu test.txt

history

  • 이전에 입력한 commands들의 히스토리 출력

    ex)

    • history
  • 내가 실행한 커멘드를 순서대로 출력하고 원하는 커멘드의 번호를 !75 하면 75번의 커멘드가 출력 된다

cp

  • 파일 복사

    ex)

    • notebookes 디렉토리에 test.txt 파일 복사
    • cp test.txt ./notebooks/ (상대경로)
    • cp test.txt notebooks/ (상대경로)
    • cp test.txt /home/ubuntu/notebooks (절대경로)
    • cp test.txt ~/notebooks/ (절대경로)
    • 위 네 개는 모두 같음

mv

  • 파일 이동. 파일이름 바꾸기

    ex)

    • mv test.txt env : notebooks 디렉토리에 test.txt로 파일을 env로 이동

ps

  • 프로세스 출력
    ex) ps -e|grep note

kill

  • 프로세스 종료
    ex) kill -9 1234

df

  • 하드 디스크의 남은 용량 확인

    ex)

    • df -h

free

  • 현재 메모리 사용량 출력

    ex)

    • free -h

tree

  • 트리 형태로 디렉토리의 구조를 출력
    ex) tree

rm

  • 파일을 삭제할때 사용

    ex)

    • rm test.txt

특수 기호들

| (파이프라인)

  • 명령을 실행한 출력 결과에서 특정 조건으로 필터링하여 데이터를 출력

    ex)

    • history | grep cd
    • cd가 들어간 히스토리 리스트를 보여줌

>

  • 출력결과를 over write

    ex)

    • echo "hello world" > test.txt

>>

  • 출력 결과를 append
    ex) echo "hello world" >> test.txt

&&

  • 연결해서 실행

    ex)

    • kt 디렉토리를 생성하고 kt 디렉토리로 이동
    • mkdir kt && cd kt

Vim Editor

  • Linux, Unix 시스템에서 사용할 수 있는 편집기
  • 마우스 없이 키보드 입력으로 모든 기능 사용 가능
  • CLI 환경이나 터미널 환경에서 사용 가능

vi .bashrc

  • vim editor 환경으로 접속
  • alias server = ssh -i ~/Desktop/kt.pem ubuntu@00.000.00.000 를 입력하면
  • 로컬 환경에서 server만 입력해도 IP 환경 접속 가능

Mode

일반모드

  • 문서의 특정 기능이나 위치로 이동할 수 있는 모드
  • esc: 일반모드로 변경
  • w, forword: 단어 뒤로 이동
  • b, backword: 단어 앞으로 이동
  • ^: 행의 가장 앞으로 이동
  • $: 행의 가장 뒤로 이동
  • x: 현재 커서 위치 문자 삭제
  • dw: 현재 커서 위치 단어 삭제
  • D: 현재 위치에서 라인 끝까지 삭제
  • dd: 행 삭제
  • gg: 문서 시작으로 이동
  • G: 문서의 끝으로 이동
  • 숫자 + G: 숫자 라인으로 이동
  • {: 이전 페이지로 이동
  • }: 다음 페이지로 이동
  • yw: 단어 복사
  • yy: 한줄 복사
  • p: 붙여 넣기
  • u: 되돌리기

편집모드

  • 문서 내용을 편집할 수 있는 모드
  • a: 커서 위치의 다음 칸부터 입력
  • i: 커서 위치 부터 입력
  • o: 커서 위치의 다음 줄부터 입력

명령모드

  • 일반모드에서 : 입력하면 에디어 가장 마지막 줄에 : 문자 뒤에 명령실행가능
    ex) :wp : 파일 저장 후 나가기
  • /: 정방향 검색, n: 다음 검색 단어로 이동함
  • ?: 역방향 검색
  • w: 파일 저장
  • q: 나가기
  • !: 강제실행
  • set number: 줄번호 표시

TMUX

  • Terminal Multiplexer
  • Linux 접속 환경의 세션관리

세션

  • 접속 정보를 저장하는 연결
  • 세션 생성: $ tmux new -s s1(세션이름)
  • 세션 종료: $ tmux kill-session -t kt(세션이름)
  • 세션 목록 보기: $ tmux ls
  • 세션 접속: $ tmux a -t kt(세션이름)
    • s1 s2 세션을 생성함
    • s1 한 쪽에만 입력해도 다른 s1 세션에 생성 됨

윈도우

  • 세션이 가지고 있는 여러 개의 명령어 입력 환경
  • 윈도우 생성 $ ctrl + b, c
  • 윈도우 종료 $ ctrl + b, &
  • 윈도우 이동 $ ctrl + b, 0-9
    • ctrl + b, c
    • 0번만 있던 창이 1번도 생성 됨
    • ctrl + b, 창번호
    • 자유롭게 창 이동 가능

  • 윈도우가 가지고 있는 여러 개의 분할된 화면
  • 팬 생성(종): ctrl + b, %
  • 팬 생성(횡): ctrl + b, "
  • 팬 이동: $ ctrl + b, 화살표: $ ctrl + b, q(번호)
  • 팬 종료: $ ctrl + b, x

profile
뒤늦게 프로그래밍을 시작한 응애

0개의 댓글