아는 데까지는 빠르게 올릴 생각이다.
터미널을 처음 열었더니 root 초기 비번 설정을 하라고 한다. 모르고 su -를 쳤다가 빠꾸먹은 모습. sudo passwd root를 적으면 현 id에 대한 pw를 요구하고, 이어서 root의 pw와 confirm을 받는다.

또한 한가지 설정을 더 해주었는데, 노트북을 닫고 있더라도 계속 작동하도록 하는 것이다. 아래와 같이 설정해주었다.
nano /etc/systemd/logind.conf
HandleLidSwitch=ignore
HandleLidSwitchExternalPower=ignore
HandleLidSwitchDocked=ignore
설정하고서 한 것들은 다음과 같다. 전에는 약간은 주먹구구식으로 했는데 이번에는 GPT의 말을 듣고 좀 체계적으로(..?) 하려고 한다.
build-essential, curl, wget, git, ufw, ssh, Nginx, 네트워크 설정
- build-essential: 컴파일 도구(gcc, make 등) 소스 코드 설치에 사용
gcc(C 및 C++ 컴파일러), g++, ld(링커), make(Makefile로 프로젝트 빌드), dpkg-dev(Debian 패키지 빌드 ex. 소스코드에서 .deb 파일 생성), libc6-dev(C 표준 라이브러리의 개발 헤더 파일 및 필요한 파일), binutils(객체 파일 처리 및 링커를 포함한 필수 유틸리티)가 포함돼있다. GPT가 개발 환경 준비, 혹시 모를 의존성 등을 위해 설치하는 것이 일반적인 관행이라고 한다.
- curl/wget: 파일 다운로드 및 HTTP 요청
둘 다 파일 다운로드에 쓰이는데 curl은 REST API(요청-응답 기반 처리), 데이터 처리에 적합하고 wget은 대량 다운로드와 디렉터리 복사에 적합하다.
- git: 버전 관리 도구
우리가 생각하는 그거 맞다. 협업과 파일 버전 관리에 사용되는 그거.
- ufw: 방화벽 설정
원래는 Netfilter라는 커널 수준의 방화벽 프레임워크를 사용하는데 이는 iptables 명령을 사용해야 한다. 이를 좀 더 간단한 명령으로 할 수 있게 해주는 것이 ufw라고 한다. 또한 초기 상태의 우분투는 SSH, HTTP, FTP 등이 활성화돼있지 않은 상황이고 Netfilter는 기본적으로 모든 포트가 열려있다고 한다. 따라서 ufw도 깔아야 한다.
sudo apt install -y build-essential curl wget git ufw
깔고 나면 우선 기본적인 네트워크 설정부터 해줘야 한다. 아래처럼 들어가서 IP, 서브넷 마스크, 게이트웨이를 설정하고 재시작해주면 윈도우11에서 핑이 나가는 것을 확인할 수 있다.



ufw는 기본적으로 비활성화 상태로, 설정을 하고서 킨다는 개념으로 보면 된다.
ufw deny 22 22번 포트(ssh) deny
ufw allow 22 22번 포트(ssh) allow
ufw allow 80 80번 포트(http) allow
ufw allow 443 443번 포트(https) allow
ufw enable로 ufw 활성화
ufw disable로 ufw 비활성화
설정하지 않은 포트는 기본적으로 들어오는 트래픽 deny, 나가는 트래픽 allow로 설정된다.

- ssh(사실 필요 없을 수도 있는데 그냥 필요할 것 같아서 미리 해둔다.)
sudo apt install -y openssh-server openssh-client
최초 설치 시 자동으로 시작되고, 이후 아래와 같은 명령으로 켜고 끌 수 있다.
sudo systemctl start ssh 시작
sudo systemctl stop ssh 중지
sudo systemctl restart ssh 재시작
sudo systemctl enable ssh 부팅 시 자동 시작
자세한 설정은 아래와 같은 명령으로 할 수 있다.
sudo nano /etc/ssh/sshd_config로 접근
Port 22 부분을 건드리면 ssh 통신하는 데 쓰이는 포트 변경
PermitRootLogin prohibit-password 부분을 no로 바꾸면 루트 로그인 비활성화
PasswordAuthentication no 로 바꾸면 키 인증으로만 접속 가능


뭣모르는 시절에는 Nginx보다 Apache를 더 많이 들었었기에 일단 Apache를 설치했지만 당시에 어려워했던 기억이 나기에 이번에는 Nginx를 선택해보기로 한다. 내가 일단 동적 모듈을 사용할 수 있느냐, 그리고 .htaccess를 사용할 수 있느냐부터가 문제이기에...
설치 및 기본 명령은 다음과 같다.
apt install nginx -y Nginx 설치
systemctl status nginx 현재 작동 상태 확인
sudo systemctl start nginx 시작
sudo systemctl stop nginx 중지
sudo systemctl restart nginx 재시작
sudo systemctl reload nginx 설정 변경 적용 후 리로드
sudo systemctl enable nginx 부팅 시 자동 실행 활성화
sudo systemctl disable nginx 부팅 시 자동 실행 비활성화
아래와 같이 ufw app list 명령에서 Nginx 프로필이 잘 등록돼있는지 확인한다.

아래 명령으로 Nginx 트래픽을 허용한다.
sudo ufw allow 'Nginx HTTP'
sudo ufw allow 'Nginx HTTPS'
그러면 일단 http://127.0.0.1 또는 내부 IP로는 접속이 가능해진 걸 알 수 있다. 그러나 https://127.0.0.1은 아직 접속이 불가능하다.



https를 활성화하려면 SSL 인증서를 설치하면 되고, 추가적으로 http→https 리다이렉션 등 몇 가지 기초 작업을 수행해놓을 수도 있다. 그런데 아래 문구와 함께 예상치 못한 일이 생겼다.

바로 도메인이 필요하다는 것.. freenom 등의 무료 도메인도 가능하지만 평이 별로 좋지 않았다. 그래서 다음에는 도메인에 대한 공부와 인증서 설치에 대해 알아보겠다.
'웹 서버 공부' 카테고리의 다른 글
홈 서버 만들기 5 - SSL 인증서 발급, 자동 갱신 설정(Let's Encrypt, crontab) (1) | 2025.01.05 |
---|---|
홈 서버 만들기 4 - 도메인 발급, DDNS 설정, 외부 접속 설정(No-IP, 공유기 설정) (1) | 2025.01.03 |
홈 서버 만들기 3 - 기초 네트워크 지식 및 웹 서비스 공개를 위한 방법 (3) | 2024.12.30 |
홈 서버 만들기 1 - 윈11에서 파티션 생성, 우분투 설치 (1) | 2024.12.23 |