인터넷, 네트워크 그리고 서버
1. Internet 1
- 통신 : request와 response가 왔다갔다하는 대화
- client : request를 한 컴퓨터
- server : request를 받아서 response한 컴퓨터
- domain name : 서버에 접속하기 위해 사용 ex) google.com
1) ip address로 변환해서 접속
- ip address : 서버에 접속하기 위해 사용
1) 리눅스에서 PING google.com
2) 172.217.25.78 라는 주소 나옴
3) 붙여넣기로 접속
- DNS server : domain name을 ip address로 변환해줌
2. Internet 2
- 자산의 ip를 알아내는 방법
1) ip addr
2) 127.0.01 제외하고 inet이라고 된 곳에서 /앞 부분이 컴퓨터의 IP address
3) ipinfo.io/ip 주소로 접속하면 컴퓨터의 IP 알려줌(웹브라우저의 경우)
4) curl google.com 하면 goole.com을 html로 보여줌
5) curl ipinfo.io/ip (셸 환경에서)
- ip address(컴퓨터에 부여된 실제 ip)와 curl(접속한 컴퓨터가 어떤 ip로 접속했는지 결과적으로 확인)로 조회한 결과가 다름, 같은 경우 실제 ip와 접속 ip가 같은 걸 의미
- 라우터(공유기)라는 장치를 통해 통신사와 하나의 회선 계약을 통해 여러 개에 사용
- public address : 대표 회선, ip addr
- private address : 자체적으로 사용x, 외부 공개x, curl
웹서버(아파치)
1. intro
1) google.com/index.html
2) 웹 서버의 HDD에서 index.html를 찾아 웹브라우저로 전송
- Web brouser : firefox, ie, chrome
- Web server : Apache, ngonx, IIS
2. install
1) sudo apt-get install apache2
2) sudo service apache2 start : end, restart 가능
3) htop -> F4
4) 이링크스 : 쉘에서 웹브라우저 사용
5) sudo aot-get install elinks
6) elinks : URL 입력
7) ip addr로 ip주소 확인
8) elinks http://[ip주소]/
- localhost : 웹브라우저가 같은 컴퓨터에 있는 웹서버에 접속, 127.0.0.1
- elinks http://127.0.0.1/ = elinks http://localhost/
3. configuration
1) 10.0.2.15/index.html
2) 웹 서버에서 Storage에서 있는 어떤 특정 디렉토리에서 index.html를 읽어와서 웹브라우저에게 응답
3) cd /etc/, cd apache2/, ls -al
4) nano apache2.conf : 설정 파일에 대한 설명 있음
5) cd sites-enabled/, ls -l
6) nano 000-default.conf
7) cd /var/www/html, ls -al
8) sudo mv index.html index.html.bak
9) elinks http://127.0.0.1/index.html -> Not Found
10) sudo nano index.html
11) elinks http://127.0.0.1/index.html -> 위에서 만든 문서 뜸
- 웹페이지를 찾는 최상의 디렉토리 : document root
4. log
- 000-default.conf에 /var/www/html으로 되어있기 때문, 수정시 동작하는 방식 달라짐
1) 000-default.conf에서 ErrorLog {APACHE_LOG_DIR}/error.log : 아파치 웹서버가 동작할 때 오류발생를 기록
2) cd /var/log/appche2/, ls -al 에서 acees.log 파일
3) tail -f /var/log/apache2/acess.log : 파일에 대해서 끝에 추가되는 정보를 실시간으로 출력
4) 404 : 웹서버에 파일 없음, 오류
- log : 서버 프로그램의 공통적으로 가지고 있음
5) tail -f /var/log/apache2/error.log : 실행했는데 동작 안됐을 때 확인
원격제어 (ssh)
1. intro
- ssh : 원격으로 쉘을 제어
- SSH 클라이언트에 명령어를 입력해서 SSH SERVER가 설치되어있는 컴퓨터 제어
- 유닉스 계열은 SSH 서버 설치되어 있음
2. ssh 2
- sudo apt-get purge openssh-server openssh-client : purge는 환경설정 파일까지 같이 삭제
1) sudo apt-get install openssh-server openssh-client
2) sudo service ssh start
3) sudo ps aux | grep ssh
4) id addr로 ip 주소 알아냄
5) du) ssh egoing@[ip주소] -> 원격 제어
포트 (port)
1. port 1
- ssh 클라이언트 통해 접속
1) ssh -p 22 egoing@192.168.0.66 -> 접속됨
2) ssh -p 2222 egoing@192.168.0.66 -> 접속안됨
- web : 80, ssh : 22
- 포트 : 서버 밖 구멍, 특정 번호로 접근하도록 됨
- 클라이언트에서 웹브라우저는 80번 포트를 거쳐 서버에 접속, 포트 번호를 적지 않아도됨
- sudo nano /etc/ssh/sshd_config에서 Port 22를 Port 2222로 바꾸면 다시 서버 접속시 포트 2222 사용
2. port 2 : Port forwarding 1
- ISP -> Public ip adresss : 공인IP(라우터의 IP) -> 라우터(공유기) -> private ip adress -> 기기
- Port forwarding : 라우터의 port를 활용해서 private ip를 통해 접속
ex) 라우터의 9000포트는 private ip : 192.168.0.4:80으로 신호 보내고 받음
- 공유기마다 환경설정이 다름
- default gateway : 공유기가 갖고 있는 ip
3. port 3 : Port forwarding 2
1) ip addr, ifconfig
2) ip route : default gate의 IP
3) 브라우저에 default gate의 IP 입력
4) 관리도구 - 고급설정 - NAT/라우터 관리 - 포트포워드 설정
5) 내부 IP 주소에 ip addr에서 나온 IP 입력, 규칙이름 : linux love
6) 외부 보트 9000~, 내부포트 80~ - 추가
7) curl http://ipinfo.io/ip 에서 나온 주소 : 9000
ex) 9000 -> ~65:80
도메인(domain)
1. Domain1 basic
- 컴퓨터 -> DNS S(도메인 네임 시스템 서버) -> IP Adress -> 컴퓨터
2. Domain2 host
- hosts file : 어떤 도메인이 어떤 IP인지를 갖고 있는 파일
- elinks [주소] : 쉘에서 사용할 수 있는 홈페이지
- elinks http://localhost/
1) sudo nano /etc/hosts : 호스트 파일 수정
2) 127.0.0.1 google.com
3) cat /etc/hosts
4) elinks google.com = elinks http://localhost/
- 호스트 파일 : 호스트들의 이름이 각각 어떤 IP를 갖는가를 적어논 것
3. Domain3 purchase
1) cat /etc/resolv.conf 에서 nameserver
- nameserver : 회사에서 서비스로 제공하는 도메인 네임 시스템 서버 IP, 두번째 nameserver는 백업이나 부하를 분산
- 도메인의 이름의 체계에 따라서 관리하는 주체가 다름
2) freenem : 도메인 사용가능한지 검색, check out에서 구매
4. Domain 4 : sub domain
- 도메인 재사용 : egoing.ga -> server1, admin.egoing.ga -> server2, blog.egoing.ga -> server3
- freenem -> DNS MANAGEMENT for egoing.ga -> 추가 admin하고 ip 주소를 0.0.0.aaa에서 aaa수정
- 서브 도메인에 따라 서로 다른 IP 줄 수 있음
5. Domain 5 : DNS principle
1) dig +trace egoing.ga : dns에게 egoing.ga라는 도메인 IP 의뢰
- egoing.ga. -> .는 root 도메인
- root DNS Server 주소 : DNS가 기본적으로 알고 있는 정보
2) 첫번째 단락 : dig +trace egoing.ga 에서 첫줄부터 root DNS List
3) 두번째 단락 : .ga를 담당하는 DNS 서버(root dns 서버에게 .ga를 담당하는 DNS 서버 물어봄)
4) 세번째 단락 : egoing.ga.을 관리하는 DNS 서버(ga DNS 서버에게 egoing.ga.을 관리하는 DNS 서버 물어봄)
5) 네번째 단락 : egoing.ga DNS 서버의 IP(egoing.ga DNS 서버에게 IP 물어봄)
- 서브 도메인 등록 : DNS 서버에 IP 를 등록하는 과정
- back to domain detail -> management tool (도메인 네임 서버 제공, 수정 가능)
인터넷을 통한 서버간 동기화 (rsync)
1. rsync 1 : basic
- sync : 변경사항이 서로 변경되어 같은 상태 유지, 방향성 있음
- r : remote
- rsync : 원격으로 서로 독립되어 있는 곳에 있는 컴퓨터들끼리 인터넷을 통해서 싱크를 할 수 있게 해주는 프로그램
- 파일 카피, 백업할 때도 쓸 수 있음
1) mkdir rsync, cd rsync/
2) mkdir dirl, mv dirl src
3) mkdir dest
4) cd src, touch test{1...10} : test1~test10까지 파일 생성, cd ..
5) rsync -a src/ dest : src 밑에 있는(/) 파일들 동기화, -a는 아카이브 모드로 동작
6) du) cd dest, rm test10
10) rsync -av src/ dest
11) du) touch test11
12) rsync -av src/ dest : 추가된 test11 전송
2. rsync 2 : Remote sync
1) du) mkdir rsync, cd rsync, mkdir dest
2) rsync -azP ~/rsync/src/ k8805 : z는 압축, P는 전송되는 상황