14주차 리눅스 환경 설치

Cheoly·2023년 12월 28일
post-thumbnail

Virtualbox에서 Linux 사용하기

Virtual Box 설치

만약 visual C++ 설치하라고 한다면

여기서 설치

우분투 설치


virtual box에서 우분투 환경 설치하기

기본메모리는 pc 메모리의 절반정도를 넣으면 되고
cpu도 절반정도 할당하면 괜찮습니다.

입력 -> 키보드설정에서 host 키는 컨트롤 알트로 하면 됩니다.


# Linux Window 연결 이제 terminators 설치해서 terminal 작업을 하면됩니다. 여기서 sudo 권한이 없다면 새로운 계정을 만들면 되고, 만들때 관리자 권한을 주면 된다.

terminal 에서
sudo apt-get install openssh-server
sudo service ssh status
여기까지 준비하면 된다.

이후에는 다시 virtual box에서 설정-> 네트워크 -> 어댑터 2에서 호스트 전용 어댑터를 추가해주고 ubuntu 다시 실행한다.

terminal에서 ip addr을 쳐보면 3번에 ip가 하나 보일거다. window용 ip를 확인했다면 그걸 virtual box 밖에있는 기존 window에서 cmd 창을 키고
ssh play@[serverip]
이걸 입력하면 된다.
그러면 ubuntu와 window가 연결성공이다.

기타

play@ubuntu:~$ ls -al
합계 84
drwxr-x--- 16 play play 4096 12월 22 16:37 .
drwxr-xr-x  4 root root 4096 12월 22 15:41 ..
-rw-------  1 play play  306 12월 22 16:19 .bash_history
-rw-r--r--  1 play play  220 12월 22 15:41 .bash_logout
-rw-r--r--  1 play play 3771 12월 22 15:41 .bashrc
drwx------ 10 play play 4096 12월 22 16:23 .cache
drwx------  3 play play 4096 12월 22 16:14 .local
-rw-r--r--  1 play play  807 12월 22 15:41 .profile
-rw-------  1 play play    7 12월 22 16:37 .python_history
drwx------  2 play play 4096 12월 22 16:15 .ssh
-rw-r--r--  1 play play    0 12월 22 15:44 .sudo_as_admin_successful
drwx------  3 play play 4096 12월 22 16:14 snap
drwxr-xr-x  2 play play 4096 12월 22 16:14 비디오
drwxr-xr-x  2 play play 4096 12월 22 16:14 사진
drwxr-xr-x  2 play play 4096 12월 22 16:14 음악
drwxr-xr-x  2 play play 4096 12월 22 16:14 템플릿

rwx(소유자) , r-x(그룹), r-x(others)
r: read , w: write, x: excute
rwx는 2^2+ 2^1+ 2^0 = 7
r-x는 5
rw-는 6을 의미한다.

컴퓨터 이름 변경하기
sudo hostnamectl set-hostname client

file 전송 프로그램 scp
scp ./dog_model_service.7z play@192.123.45.678:/home/play/
scp [대상파일] [계정]@[ip]:[경로]


Miniconda 설치

wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh

권한 변경
chmod 700 ./Miniconda3-latest-Linux-x86_64.sh

실행
./Miniconda3-latest-Linux-x86_64.sh

source ~/.bashrc

pip install jupyter

ls -al ~/ | grep bash

hash 구조: key value가 있는것 dict도 hash 구조를 갖음
hash 구조를 갖으면 속도가 빠르다

운영체제

  1. 데스크탑 - 윈도우, 맥OS
  2. 서버 - 유닉스 - Linux - 안드로이드, 서버용(RedHat-CentOS, Ubuntu)
    유닉스 - iOS
  3. 서버 - CLI(Command Line Interface), GUI(Graphic User Interface)
  4. 서버 - 편집기 - vi(vim), emacs, nano

네트워크

  1. Private IP
  2. Public IP
  3. IPv4 (32bit(8bit(A class).8bit(B).8bit(C).8bit(D)(255.255.255.255))) -
  4. IPv6(64bit)

vim(편집기) 사용기

Vim(Vi Improved)이란 Unix, Linux 환경에서 사용되는 텍스트 편집기(editor)인 Vi의 업그레이드 버전이다.

vim /home/play/.jupyter/jupyter_notebook_config.py
i나 insert키 눌러서 편집모드 실행
esc 누르면 다시 일반모드 실행
나가기 하는법
esc -> :q! -> 엔터 누르면 됨
저장후 나가기 :wq 하면됩니다.

pwd는 현재 위치를 알려줌

ip=0.0.0.0으로 두면 모든 ip를 의미한다.
그래서 server 터미널에서 주피터 노트북을 열고 이것을 모든 ip에서 허용하려고 한다면 다음과 같이 치면 된다.
jupyter lab --ip=0.0.0.0
근데 이렇게 하면 터미널이 프롬프트가 계속 실행중이게 되어서 그 터미널을 사용할 수가 없다. 그래서 백그라운드에서 작동하도록 하기위해 아래와 같은 코드를 사용하는 것이 좋다.
nohup jupyter lab --ip=0.0.0.0 &

사용중인 포트 확인
netstat -nao | grep 8888

netstat -lntp | grep 8888

실행중인 프로세스 목록 확인
ps -ef | grep vim

kill -> 프로세스 죽이기
kill -9 < pid >

rm 삭제 명령어
폴더 삭제
rm -rf

데이터 크롤링

스벅 데이터

스타벅스 데이터 중에서도 이번에는 매장의 정보를 가져오려고 한다. 스타벅스 홈페이지에 들어가서 매장찾기에 들어간다. 그곳에서 dev tools를 켜서 네트워크 -> dev tools 검색창에 get을 친다. 아무것도 나오지 않는다면 화면을 움직여서 새로운 정보를 요청하면 나올것이다. /getStore.do?r=YKWS2U9PS5 이러한 url 요청사항이 있을텐데 여기서 헤더에 가서 요청 url 정보를 복사한다. 그리고 payload에 있는 json타입의 data를 가져온다.
가져온 url 정보와 payload 정보가 있으면 이제 크롤링을 할 수 있다.

url_cd = "https://www.starbucks.co.kr/store/getSidoList.do"
url_place = "https://www.starbucks.co.kr/store/getStore.do?r=YKWS2U9PS5"
r = requests.post(url_cd)
total = []
for x in tqdm(r.json()['list']):
    #print(x['sido_nm'], x['sido_cd'])
    payload['p_sido_cd'] = x['sido_cd']
    r = requests.post(url_place, data=payload)
    total.append(pd.DataFrame(r.json()['list']))
starbuck_df = pd.concat(total)

이런 식으로 가져오면 국내 스타벅스 갯수는 1887개이다.
이제 이렇게 수집한 데이터를 분석하고 그래프로 시각화도 하고 하면 된다.


Filezilla

이건 내 컴퓨터에서 server 컴퓨터로 보내는 방법이다.
다운은 알아서 잘하면 되고 설치할 때 광고 파일도 다운받아지려고 하는게 있으니 decline 잘 하면된다.
파일을 설치한 이후에는 filezilla를 실행하여 파일 아래에 있는 아이콘(사이트 관리자 열기)에 들어가서 server pc의 ip주소를 입력하고 유저 아이디와 비밀번호를 입력하면 연결이 된다. 이렇게 연결이 되면 두 컴퓨터간에 파일 전송이 손쉽게 가능해진다.


MariaDB

sudo apt install mariadb-server
sudo service mysql status
(active 상태인거 확인한 후 나가고 싶을땐 q를 누르면 된다.)
sudo mysql_secure_installation
이렇게 설치하면 된다.

아래 두개는 하면 좋은 것들인 것같은데 정확히 무엇인지는 모른다.
sudo apt update
sudo apt install net-tools

MariaDB를 사용할 도구는 heidisql나 DBeaver를 사용하면 된다.
DBeaver에서 연결하다 보면 서버 컴퓨터에서 사용하는 것이기때문에 IP 권한이 없다고 나온다. 이것은 아래에 들어가서 변경해주면 된다.
sudo vim /etc/mysql/mariadb.conf.d/50-server.cnf

vim 편집기에서 명령어 모드로 :/bind 를 쳐서 나온 곳에서 IP를 0.0.0.0으로 해서 모든 IP에서 접근 가능하게 설정해준다. 이러면 보안적인 면에서 취약하긴 하다. 해커조심!

이렇게 하면 IP권한은 획득했지만 계정권한이 아직 없어서 막힐 것이다.
계정권한은

mysql -uroot -p 으로 접속해서 아래와 같은 코드 두줄을 입력해주면 된다.

CREATE USER '설정할 계정이름'@'%' IDENTIFIED BY '설정할 pwd';
GRANT ALL PRIVILEGES ON . TO '설정한 계정이름'@'%';
이 과정을 완료하면 IP 권한, 계정 권한 모두를 받았기에 실행이 될 것이다.

이제 이렇게 설정을 완료했다면, python에서 DB에 작업을 넣을 수 있게끔 설정해주면 된다.

import pymysql
con = pymysql.connect(host = "192.168.56.102", user="설정한 이름", password='설정한 비번', db='만든 DB이름')
cur= con.cursor()

이렇게 연결이 되었다면 cur를 이용해 쿼리문을 실행시키고, 마지막에 con.commit()하면 된다.

다른 방법으로는 sqlalchemy로도 가능하다. 이건 pypi.org에 들어가서 해당 모듈을 검색해서 설치하는 방법을 보면 된다. 설치후 import해서 아래와 같은 코드 짜면 된다.

user = "설정한 유저 이름"
password = "설정한 비밀번호"
host = "호스트 주소"
port = "3306"
database = "설정한 DB이름"

engine = sqlalchemy.create_engine(f"mysql://{user}:{password}@{host}:{port}/{database}")

star_df.to_sql(name="star2", if_exists="replace", con=engine)

ORM은 관계 객체 매핑이다.
Demon은 백그라운드에서 실행되고 있는 것을 의미한다.


IP

IP는 일반적으로 public 공용 IP는 유니크해야한다.
private은 내가 사용하는 네트워크 내에서만 사용가능한 IP 주소이다. 이건 192또는 172로 시작하는 경향이 있다.
IP 주소와 넷마스크, 서브넷마스크가 있는데 이건 기본 IP주소와 넷마스크를 2진수로 표현한 후 and 연산을 하면 네트워크 주소를 얻을 수 있다.
IP주소 뒤에 /20 이런 것을 써서 넷마스크의 1의 갯수를 알려준다.

ex) IP 주소가 192.168.72.162/20 이라면
netmask가 255.255.240.0 -> 11111111.11111111.11110000.00000000 으로 나온다.

gateway 는 IP주소와 똑같은데 D클래스만 1로 설정된다. (192.168.72.1)

Hadoop

새로운 계정(hadoop)을 만들고
sudo adduser hadoop
+) sudo passwd [계정]

su hadoop 계정을 이동한다. 근데 아직 hadoop에게 권한이 부여되어 있지 않기때문에 다시 메인 계정으로 돌아와서 권한을 부여해줘야한다.

sudo visudo 을 실행한다. 그러면 nano창이 나오는데 여기서 root아래에 hadoop을 만들고 위와 똑같이 쓰면 된다. (ALL:ALL) ALL

이제 sudo 권한이 생겼으니 새로 만든 계정에 java를 설치해주면 된다.

sudo apt update
sudo apt install openjdk-8-jdk

java를 설치했으면 java home을 지정해줘야한다. 기존에는 환경변수 설정에서 설정했지만 linux 터미널에서 진행하려면 아래와 같이 진행하면 된다.

vim ~/.bashrc으로 들어가서 export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64를 넣어주면 된다.

근데 이 위치는 아무곳에나 해도 되는건지 아니면 특정한 위치에 해줘야하는지 잘 모르겠다. 일단 나같은 경우에는 4번째 줄에 작성해주었다. (for example 써있는 아래줄) 그리고 잘 설정되었는지 확인하려면 echo $JAVA_HOME 이걸 사용해서 있나 확인하면 된다.

이제 hadoop을 설치한다.
cd ~
wget https://dlcdn.apache.org/hadoop/common/hadoop-3.3.6/hadoop-3.3.6.tar.gz
이걸 하면 되는데 주소정보는 hadoop 홈페이지에서 확인하는걸 추천한다.

hadoop에서 map reduce를 알아야한다.
병렬처리와 직렬처리도 알아야할듯
sql문을 공부하는게 중요하다.
분석: 코딩 통계 도메인. 이 3개가 중요하다

profile
데이터 엔지니어

0개의 댓글