골방잡담
리눅스 복습 (feat. 생활코딩) - 2 본문
network
-
curl google.com : google.com의 html 파일을 가져옴
-
자신의 서버 IP 알아내기
-
curl ipinfo.io/ip → public address
- ip addr → private address
-
- public/private은 어떻게 다를까?
- public address는, 온라인 서비스 입장에서 접속한 컴퓨터가 어떤 IP로 접속했는지 확인. router(공유기)을 통해서 외부에서 붙은 주소를 봄
- ip addr은 컴퓨터에 실질적으로 어떤 IP가 붙어있는지 확인하기 때문에 private ip가 나옴
-
어떤 회사에 전화했을 때, 대표번호가 있는 것과 내선번호가 있는 비유를 생각해보면 편하다.
라우터 안에 묶여있는 컴퓨터 끼리는 서로 접속이 가능. (마치 사내에서 내선번호로 서로 왔다 갔다 할 수 있듯) 즉, 같은 망 안에서는 서로 접속해서 확인 가능
apache
-
로컬에서 우리가 인터넷을 사용하기 위해 firefox, ie, chrome과 같은 webbrowser를 설치하듯이 web server에 속하는 소프트웨어도 설치해서 이용해야 함 → 예시 ) apache, nginx, IIS
-
sudo를 이용해서 뭔가 설치하려고 하기 전, sudo apt-get update을 항상 해주면 좋음
-
ubuntu@ip-172-31-43-2:~$ sudo service apache2 start : 켜짐
-
ubuntu@ip-172-31-43-2:~$ sudo service apache2 stop : 꺼짐
-
ubuntu@ip-172-31-43-2:~$ sudo service apache2 restart
-
apache2 실행 시, htop으로 보면, apache2가 여러 개 뜸.
apache의 경우 web server이기 때문에 많은 접속에 대비하기 위해 많은 프로세스가 뜸 -
웹서버에 접속해야 잘 설치됐는지 확인이 가능한데, 특정 IP를 가지고 접근해서 web server에 접속하는 건 현실적인 이유로 난관이 많을 수 있기 때문에, 가장 간단한 건 shell에서 직접 웹서버에 접속하는 것. shell에서 웹 브라우징을 할 수 있는 프로그램이 elinks라는 것.
- elinks http://{서버IP} 해서, 아래와 같이 화면이 뜨면 성공한 것!
-
그럼 apache라는 web server을 설치했고, elinks라는 브라우저를 이용해서 request를 한 것이고, 이때 IP를 이용해서 접속한 것.
-
참고로 이렇게 한 서버에서 web browser, server 다 있으면 그냥 localhost or 127.0.0.1 써도 됨.
elinks 127.0.0.1, elinks localhost로 해도 동일.
그렇다면, apache를 띄우면 index.html은 어디서 가져오는 걸까?
-
/etc/apache2/apache2.conf 에 들어가면, apache 관련 세팅들을 볼 수 있음. 이 중 아래 설정을 보고, 경로를 따라가 보자
-
sites-enabled라는 디렉터리에 있는 conf 파일을 모두 읽는다는 뜻
-
그러면, 저 디렉터리를 찾아서 들어가 보자.
-
conf파일을 까 보면, 저 경로로 들어가 보면, documentroot라고 해서 어떤 파일을 참조하고 있는지 나옴 (=최상위 페이지라는 뜻!)
-
/var/www/html에 들어가면, index.html이 있음🙂
결론적으로, 사용자가 web browser에서 접속했을 때 webserver은 /etc/apache2라는 경로의 설정 파일을 참고해서, 서버 storage의 어느 경로를 참고해서(/var/www/html) 어느 파일 읽어서 web browser에게 보내주는 거라고 생각하면 됨.
* 즉, 운영할 때는 설정이 매우 중요!!! *
/var/www/html은 설정을 바꾸면 언제든 다른 위치로 바꿀 수 있음.
*요약 *
-
web browser를 띄울 때, /etc/apache2 밑에 있는 설정 파일을 보고, 그 설정 파일이 알려주는 rootdocument 위치에 있는 index.html을 참조함.
-
/etc/apache2/sites-enabled/000-default.conf 에 있었음
Apache 로그
-
같은 경로에, 로그에 대한 내용도 있음.
-
아래에서 ${APACHE_LOG_DIR}/error.log 경로는, /var/log/apache2 임. 이 밑에 access.log, error.log 가 있음.
-
access.log 파일을 tail -f 하면서, localhost로 curl 하거나, elinks를 사용하면 접근 이력이 아래와 같이 찍힘
SSH
-
리눅스는 서버 시장에서 대부분을 차지하고 있고, 특히 사물인터넷에서 많이 이용되고 있음
-
이런 서버를 원격으로 제어하고 싶으면, client / server 양 쪽에 프로그램을 설치해야 함
-
client : SSH client 설치 ------> server : SSH server 설치
-
SSH client라는 프로그램에 명령어를 입력해서, (rm, ls, pwd) SSH server가 설치된 컴퓨터를 제어하는 것. SSH server가 server computer를 제어하고, client 에다가 결과를 보여줌
-
-
이런 서버-클라이언트 관계가 webserver와 web browser 관계와 거의 비슷하다고 생각하면 됨.
-
대부분의 서버들은 ssh가 이미 설치돼있음.
SSH 설치해보기
-
sudo apt-get purge openssh-server openssh-client 하면 삭제가 됨
-
sudo apt-get install openssh-server openssh-client
: 여기서 openssh-server는 구체적인 이름의 ssh-server임. (마치 apache - web server 같은 )
-
sudo service ssh start
-
sudo ps aux | grep ssh 했을 때, sshd라는 이름들이 나오면 잘 된 것.
SSH 이용해서 원격 접속하기
-
ssh client를 설치한 B 서버에서, ssh server 설치한 A 서버에 접속할 수 있음.
ssh {host ip} 식으로
-
(회사에서 ssh로 다른 서버 가는 게 다 이렇게 하는 거였음!!!!)
Port
-
ssh -p 22 {ip} 이런 식으로 포트를 추가해서 접속할 수도 있음
-
서버에는 6만 5천여 개의 port가 있음. 0~65000
-
ssh 서버는 22번 포트를 'listen' 하다가 22번 을 호출하면 옴
-
0~1024는 well-known server 용
-
1024~65000 은 아무거나 쓰면 됨
-
/etc/ssh/sshd_config에 포트 번호가 정의되어 있음. 여기서 바꿔주고 ssh restart 하면, 다시 서버에 접속할 때에는 해당 포트로 들어가야 함
port forwarding
- 이것도 업무에서 처음 정말 이해가 안 갔었는데... 몇 번 사용해보니 익숙해진 개념.
- 이렇게 체계적으로 그림을 그려서 설명해주시니 한방에 이해가 됐다 ㅎㅎㅎ
-
public IP:port로 들어왔을 때, 특정 포트로 들어오면 특정 사설 IP로 들어가게 세팅할 수 있음
-
보통 공유기에는 기본적으로 web server를 띄우고 있음.
-
공유기의 ip는 default gateway라고 함, ip route로 알아낼 수 있음.
-
공유기 화면에서 port forwarding setting 가능
Domain , DNS(domain name system)
- hosts 파일은 어떤 도메인이 어떤 IP다, 라는걸 갖고 있는 파일. 각 서버마다 hosts 파일이 있어서, dns에게 물어보는 게 아니라 hosts 파일에 적혀있는 domain name의 IP를 보고 접속.
- hosts 파일 조작의 경우, 테스트를 할 때 정말 많이 사용했었다. (그냥 로컬 피씨에서..) 특정 도메인에 대해서, STG-PRD를 왔다 갔다 하고 싶을 때 hosts를 주석 처리해가면서 사용했었다.
-
google.com으로 들어가면, 내 서버의 web server가 출력되게 하고 싶다면?
-
/etc/hosts 파일 바꾸기 : naver.com으로 가면, 127.0.0.1로 가게
-
-
hosts 파일을 1순위로 보고, 그다음에 dns 서버를 봄.
- /etc/resolv.conf를 까 보면 뜨는 nameserver는, 통신사의 것
- host {도메인 주소} 치면 IP 확인 가능
- ex) host google.com
서브도메인
-
도메인 앞에 prefix (admin.egoing.ga처럼)를 붙여서 운영하는 방법
DNS의 동작 원리
-
사실 도메인에는 마지막에. 이 생략돼있어 : google.com.으로 해도 잘 감
-
이. 을 'root'라고 표현해
-
root dns server는 성능/안정성을 위해 전 세계에 골고루 퍼져있음.
-
egoing.ga를 요청하면, dns server가. ga를 담당하는 서버를 root dns server가 돌려줌.
-
그럼 우리 dns server는, ga의 dna server에게 egoing.ga의 IP를 물어봄.
- linux에 직접 dns 서버를 구축할 수도 있지만, 요즘은 점점 그런 게 없어지고 있음.
인터넷을 통한 서버 간 동기화
-
인터넷을 통해서 컴퓨터와 컴퓨터의 파일을 동기화하는 방법인 rsync
-
참고로 여기서 rsync -a src/ dest에서 src 뒤에 /를 빼면, src 폴더가 통째로 dest 밑으로 복사됨. /를 하면 그 하위에 있는 것들만 들어감.
-
증분에 대해서만 싱크를 시킬 수도 있어. rsync -av src/ dest 하면, dest에 없는 애들만 복사됨
-
-a : archive mode, 디렉터리 전체를 다 복사하고, 파일의 속성/ 권한도 같이 전송, 한다는 의미
ssh key로 로그인하기
-
다른 서버 로그인할 때 비번 안 치고 들어갈 수 있게 설정할 수 있음!
-
장점은, 크론 이용해서 자동화할 때 자동 로그인을 해야만 할 수 있음.
'PC방에서 > 리눅스' 카테고리의 다른 글
ssh 공개키 인증 설정 방법 (패스워드 없이 ssh 하기) (0) | 2021.01.24 |
---|---|
버추얼박스로 나만의 CentOS 7 리눅스 서버 환경 만들기 (2) | 2020.10.20 |
리눅스 파일시스템, 디스크 관리 개념 정리 (2) | 2020.10.10 |
실무에 많이 사용하는 리눅스 명령어 (0) | 2020.09.26 |
리눅스 복습 (feat. 생활코딩) - 1 (0) | 2020.07.22 |