리눅스
리눅스 7일차
hyestar
2022. 5. 2. 22:00
nginx 웹서버 설치
- nginx라고 불리는 웹서버를 설치, 시작
- 기본적으로 웹은 80포트 이용
- firewalled 라는 방화벽이 있는데, 이게 80번포트 포워딩을 방해
- firewalled 종료
- 크롬에서 http://127.0.0.1/8011 접속 시
- 리눅스 안의 nginx 웹서버에 접속
- 명령어 예시
- sudo yum install 서비스 : 설치
- sudo yum remove 서비스 : 설치
- sudo systemctl start 서비스 : 서비스 시작
- sudo systemctl restart 서비스 : 서비스 재시작
- sudo systemctl stop 서비스 : 서비스 중지
nginx 웹서버 설치
- sbsst) sudo yum install -y nginx
- 이 경우 yum이 여러버전 중 랜덤으로 설치
nginx 웹서버 제거
- sbsst) sudo yum remove -y nginx
yum repository 설정으로 nginx 최신버전 설치
외부문서 - Install Nginx (Latest Version) on CentOS 7
yum install nginx latest 키워드로 구글링
- sudo vim /etc/yum.repos.d/nginx.repo
- nano는 vim으로 변경해서 입력
- a 눌르서 끼워넣기 모드로 진입 후
- 아래내용 추가 후 저장(wq!)
- 다시 nginx 설치하면 최신버전으로 설치된다
- sudo yum install nginx -y
- 최신버전 확인
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/mainline/centos/7/$basearch/
gpgcheck=0
systemctl 명령어 개요
system 자원을 켜고 끄는 등의 system 관련 명령어
- systemctl status 서비스명
- 상태만 보기 (일반유저 접근가능)
- active 상태인지 확인 가능
- systemctl start 서비스명
- ex) systemctl start nginx
- 프로그램 시작
- systemctl stop 서비스명
- 프로그램 중지
- systemctl restart 서비스명
- 프로그램 재시작
- systemctl enable 서비스명
- 다음 부팅시 부터 자동으로 시작해라
- systemctl disable 서비스명
- 지금 당장 off하는 것이 아닌 다음 부팅때부턴 자동시작하지 마라
71강 : nginx 서비스 활성화, 시작, 상태확인
- sudo systemctl status nginx
- sudo systemctl start nginx
- sudo systemctl status nginx
프로세스
프로세스 : 실행중인 프로그램
- sudo systemctl status nginx 입력 시
- process: 1584
- Main PID : (nginx)
- CGroup : /system.slice~
- 1585 nginx
- 1586 nginx
- 1584 : 부모 스레드 (프로세스)
- 1585, 1586 : 자식 스레드 (프로세스)
- 프로그램 => 실행* 2 => 프로세스 * 2
- 프로그램을 동시에 2개이상 실행하면, 프로세스(메인)도 2개
- 프로세스는 기본적으로 번호로 출력
- main 프로세스 번호를 보자
ps -ef 명령으로 프로세스 리스트 확인 가능
명령어
- sudo ps -ef | less
- sudo ps -ef | fgrep 프로세스번호
- 특정 단어와 관련된 프로세스
netstat -nlp 명령으로 네트워크와 포트 사용현황을 확인
- sudo netstat -nlp
- 네크워크 상태 확인
- sudo netstat -nlp less
- 창에 맞게 편하고 쉽게 볼 수 있음
- sudo를 안붙일 시 PID/Program name이 숨겨져 나옴
- sudo netstat -nlp | fgrep nginx
- nginx와 연결된 포트번호 확인
오류시 확인 절차
if) 윈도우(외부) 에서 SSH, nginx 등 접근이 안될 시
- 원인
- 연결할 내부 프로그램 (SSH, nginx 등)에서의 문제
- ssh로 내부에서 접속을 해도 안될 시, 서비스 자체의 문제
- 접근이 막혀있음
- ssh로 내부에선 접속에 성공했지만, 외부에선 접속이 안되면 접근이 막혀있는 것
- 연결할 내부 프로그램 (SSH, nginx 등)에서의 문제
서버와 클라이언트와 프로토콜
SSH 프로토콜
클라이언트 / 서버
putty, ssh / sshd
HTTP 프로토콜
클라이언트 / 서버
IE, 크롬, 사파리, wget / nginx, apache
윈도우는 gui(그래픽 사용자 인터페이스) 사용자가 알기 쉽게 그래픽 즉,
아이콘 같은걸로 나타내주지만 리눅스는 아니라서 성능이나 기능이
윈도우보다 많이 떨어짐
ssh 명령으로 내부에서 sshd 서버의 유효성 테스트
ssh는 외부세상의 putty 급
ssh 10.0.2.16 내부용 접속기를 통해 sshd 서버에 접속되는지 확인
- ssh 127.0.0.1
- 여기서의 127.0.0.1은 리눅스 자신
- ex) ssh root@127.0.0.1
- ssh 아이디@서버
- ip addr
- inet 10.0.2.16 : ip 확인
- ssh root@10.0.2.16
- 로그인까지 완료하면 접속 완료
- 확인 후 exit
wget 명령으로 내부에서 웹서버가 잘 작동하는지 확인
nginx 접속이 안되니 리눅스 wget을 통해 먼저 내부에서 접속시도
- wget 127.0.0.1
- 200 OK이라 나오면 성공
- 다운 완료
- index.html 저장됨
- wget는 잘 작동되고 있다
명령어
- wget http://웹서버IP:포트
- ex) wget http://127.0.0.1:80
- ex) wget http://10.0.2.16:80
78강 외부세상의 8011 포트를 내부세상의 80과 연결
- nginx 설치 - on
- nginx 포트 확인 : 80
- netstat -nlp | fgrep nginx
- 80 : 포트 확인
- wget 10.0.2.16:80
- 내부에서 wget으로 접속 성공
- netstat -nlp | fgrep nginx
- 크롬 주소창에 http://10.0.2.16:80 입력
- 안될 시 포트포워딩
- 포트포워딩
- 이름 : HTTPD 8011
- 프로토콜 : TCP
- 호스트 ip : 0.0.0.0
- 호스트 포트 : 8011
- 게스트 ip : 10.0.2.16
- 게스트 포트 : 80
- 크롬 주소창에 127.0.0.1:8011
- 안됨
왜 안될까?
- 연결할 프로그램이 활성화 상태인지 확인
- ssh root@10.0.2.16
- wget 10.0.2.16:80
- 포트포워딩
=> 2개해도 안되면, 방화벽 때문에 막힌 것
방화벽
방화벽 (firewall)
- 포트를 기본적으로 방어하고 있고, 선택적으로 개방해 포트연결이 가능
현재 nginx 웹서버 연결을 위해 방화벽을 비활성화 해야 하는 상황
- 먼저 방화벽 활성화 상태인지 확인
- sudo systemctl status firewalld
- active 상태일시 비활성화
- sudo systemctl stop firewalld
- sudo systemctl disable firewalld
크롬으로 내부세상의 nginx 웹서버에 접속
모든 장애물을 제거했으니 nginx 웹서버에 접속시도
- 접속 주소 : 크롬에서 http://127.0.0.1:8011
- nginx 웹서버에 접속 성공 화면
728x90