웹서버 만들기
1. GUEST OS(Linux)의 nginx에 접근하기
- HOST OS(윈도우)의 브라우저를 이용해 GUEST OS(Linux)의 nginx에 접근하기
- 만일 HOsT OS(윈도우)의 IP가 192.168.1.2 이고, GUEST OS(Linux)의 IP가 10.0.2.16이라 할때,
- 윈도우의 브라우저는 자신의 네트워크 인터페이스를 사용(192.168.1.2)
- 윈도우 입장에서 GUEST OS(Linux)의 IP는 실존하지 않음 (윈도우 입장에는 Virtual Box라는 프로그램만 보임)
- 따라서 윈도우로 GUEST OS에 네트워크 접근하려면 Virtual Box에게 신호를 보내야 함
- Virtual Box는 HOST OS(윈도우)에 설치 되어 있음
- 결국 자기 자신에게 네트워크 신호를 보내야 함
- 특정 포트를 Virtual Box로 보내 Virtual Box가 자신의 가상머신으로 보내게 해야 함
- 이를 위해 Virtual Box의 가상머신 설정에서 특정 포트(여기선 8088)에 대한 포트포워딩 설정을 하는 것
2. 크롬 브라우저 이용하기
- 크롬 브라우저를 켜고 주소창에 127.0.0.1:8088 입력
- HOST OS(윈도우)에 8088포트로 네트워크가 들어오면 가상머신으로 돌림
- 가상머신은 포트포워딩에 설정된 대로 127.0.0.1:8088을 10.0.2.16:80으로 연결
- 만일 그래도 안되면 리눅스의 방화벽에 막혀있을 확률이 높음
- systemctl status firewalld 로 방화벽 상태를 확인하고 만일 active(running) 상태이면,
→ sudo systemctl stop firewalld로 서비스 종료
- 브라우저에 127.0.0.1:8088에 치고 들어갔을 때 nginx 페이지가 뜨면 성공
※ 실패했을 때, 따져봐야 하는 것
- 내부적 요인
- 랜카드 on / off 유무
- sudo ifup enp0s3
- network 서비스의 실행 상태
- sudo systemctl status network
- 포트포워딩 설정
- 가상 머신의 포트포워딩 설정 확인
- 방화벽 활성 여부
- sudo systemctl status firewalld
- 외부적 요인
- 외부 네트워크의 결함 상태
- 잘못된 접속 정보 (IP, Port, Protocol)
2. wget
- 웹 서버로부터 콘텐츠를 가져오는 컴퓨터 프로그램 (리눅스용 웹브라우저)
- wget을 이용해 index.html 받아보기
- sudo yum install wget을 이용해 wget 설치
- 설치 완료 후, wget 10.0.2.16을 입력하면 자동으로 10.0.2.16의 80포트 http요청을 보냄
- 그러면 index.html이 생성되었음 (nginx의 index.html이 나타남)
- 실제로 ls를 통해 확인 해보면 index.html 파일이 생성된 것을 확인할 수 있음
- 또한, cat index.html을 입력하면, nginx의 index.html 내용을 확인할 수 있음
3. nginx가 바라보는 root 디렉터리 찾기
- locate를 이용해 nginx가 관리하는 index,html가 어디에 있는지 확인
- locate index,html | grep nginx
- 만약 검색 결과에 안나오면 sudo updatedb 입력하여 업데이트
- /usr/share/nginx/html/ 가 root 디렉터리
4. index.html을 수정해서 실제로 타겟이 맞는지 확인
- 그 전에 cd /usr/share/nginx/html/ 입력하여 이동 후, cp index.html를 입력하여 복사 (backup 파일)
- index.html 파일의 내용을 수정하고 브라우저로 수정된 내용이 나오 는지 확인
- sudo vim /usr/share/nginx/html/index.html
- 파일 내용을 기존의 내용 다 지우고 hello로 수정
- 브라우저를 새로고침하여 hello가 뜨는지 확인 (http://127.0.0.1:8088)
- 내가 원하는 파일을 생성하고 접속할 수 있음
- sudo vim hihi.html를 입력한 후, 내용에 hihi를 입력하고 저장
- 브라우저에 http://127.0.0.1:8088/hihi.html을 입력하면 hihi가 나타남
5. nginx 설정정보를 바꿔 내가 root 디렉터리를 내가 원하는 디렉터리로 바꾸기
- nginx 설정 파일 찾기
- 방법1. 파일명을 유추해서 찾기 (아래 명령어 사용)
- locate nginx | grep conf
- 방법2. 구글링 및 공식 문서
- /etc/nginx/nginx.conf 인 것을 확인
- /etc/nginx/nginx.conf는 메인 설정 파일이며, 내부에서 서브 설정 파일을 include하고 있음
- /etc/nginx/conf.d/default.conf가 서브 설정 파일이며 여기에 상세 설정을 할 수 있음
- 여기서는 default.conf에 직접 작성하지 않고 또 다른 서브 설정 파일 vhost.conf를 새로 생성하여 진행
- 아래와 같이 입력
- sudo vim /etc/nginx/conf.d/vhost.conf
server {
listen 8081;
server_name project1;
location / {
root /my_projects/project1/public;
index index.html;
}
}
server {
listen 8082;
server_name project2;
location / {
root /my_projects/project2/public;
index index.html;
}
}
- sudo mkdir /my_project/project1/public /my_project/project2/public 으로 파일 설정
- 각 public 파일에 index.html 파일을 생성하고 내용 입력
- project1의 index.html엔 hello project1!! 입력
- project2의 index.html엔 hello project2!! 입력
6. selinux 비활성화 하기
- selinux는 리눅스에 기본적으로 설정되어 있는 보안 강화 정책
- 여기서는 비활성화 하여 진행
- sudo vim /etc/selinux/config를 입력
- 파일을 아래와 같이 수정
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
# SELINUX=enforcing
SELINUX=disabled
# SELINUXTYPE= can take one of three values:
# targeted - Targeted processes are protected,
# minimum - Modification of targeted policy. Only selected processes are protected.
# mls - Multi Level Security protection.
SELINUXTYPE=targeted
- 작성이 완료되면, reboot를 입력하여 다시 시작한 뒤, sudo systemctl restart nginx로 재시작
- 포트포워딩에서 다음과 같이 입력후, 브라우저에서 확인 (127.0.0.1:8081)
'Back-End Study > Linux' 카테고리의 다른 글
DB 서버 만들기 (0) | 2022.09.05 |
---|---|
Filezilla (파일 서버 만들기) (0) | 2022.09.05 |
클라이언트와 서버 (0) | 2022.09.01 |
네트워크 상태 확인 (0) | 2022.09.01 |
프로세스 (0) | 2022.08.31 |