본문 바로가기
SERVER

무중단 서버이전하기 Window to Ubuntu -2

by 비너발트 2025. 3. 4.

우분투 시작하기

설치는 간단하기 때문에 생략하였습니다

※ 우분투에서는 과거 유료로 서비스됐던 우분투 Pro 버전을 개인에 한하여 5개까지 무료로 제공하고있습니다

개인 용도로 사용하시는 분들은 꼭 이용해 보세요

 

시작하기 전 기본적인 명령어를 알아보도록 하겠습니다

 

파일 및 디렉토리 관리

ls: 현재 디렉토리 파일 목록 보기

ls -l: 상세 정보를 포함하여 파일 목록 보기

ls -a: 숨김 파일 포함하여 보기

cd 디렉토리명: 특정 디렉토리로 이동

pwd: 현재 경로 보기

mkdir 이름: 디렉토리생성

rm -r 디렉토리명: 디렉토리삭제

rm 파일명: 파일삭제

cp 파일명: 파일복사

mv 파일명: 파일이동 또는 이름변경

 

사용자 및 권한 관리

sudo 명령어: 관리자(root) 권한으로 명령을 실행

adduser 이름: 새 사용자 추가

passwd 이름: 사용자 비밀번호 변경

who: 지금 사용 중인 사용자 확인

chmod 777 파일명: 파일권한 변경

chown 사용자: 그룹 파일명 :파일 소유자를 변경

 

프로세스 관리

systemctl start 서비스명: 서비스 시작

systemctl stop 서비스명: 서비스 중지

systemctl restart 서비스명: 서비스 재시작

systemctl status 서비스명: 서비스 상태 확인

 

패키지 관리

sudo apt update: 패키지 목록 업데이트(뭔가 설치하기 전 이 명령을 먼저 하는 걸 권장합니다)

sudo apt upgrade: 설치된 패키지 업그레이드

sudo apt install 패키지명: 해당 패키지를 설치

sudo apt remove 패키지명: 해당 패키지를 삭제

 

기본적인 서버환경을 구성하기

구성해야 하는 구성은 Nginx + PHP&PHPmyadmin(선택) + NODEJS + MySQL입니다

우선 Nginx 부터 설치하겠습니다

sudo apt update  # 패키지 업데이트
sudo apt install nginx -y # NgninX 설치

 

nginx 뒤 -y 는 이 패키지를 설치하시겠습니까? Y/N 문구가 나올 때 자동으로 Y로 생략하고 자동을 설치를 하도록 하는 수식어입니다

 

설치가 끝났으면 서버를 시작하고 자동실행을 시키도록 합니다

sudo systemctl start nginx  # Nginx 시작
sudo systemctl enable nginx  # 부팅 시 자동 시작 설정
sudo systemctl status nginx  # Nginx 상태 확인

 

그리고 서버의 방화벽을 개방해야 외부에서 이쪽 서버로 접속할 수 있습니다

sudo ufw allow 'Nginx Full'  # 80, 443 포트를 개방합니다
sudo ufw enable  # 방화벽 활성화
sudo ufw status  # 방화벽 상태 확인

 

이후 정상적으로 Nginx가 설치되었는지 확인을 위해 명령어를 입력하면

"Welcome to Nginx!" 이라는 문구가 나오면 정상적으로 설치가 된 겁니다

curl -I http://localhost  # 로컬에서 확인

 

 

NODEJS 설치하기

Node 서버를 구동하기 위한 node.js 와 npm 패키지 매니저를 설치하겠습니다-v 명령어로 버전이 정상적으로 출력된다면 정상적으로 설치가 된 겁니다

sudo apt update
sudo apt install nodejs npm -y #node.js, npm 설치하기

node -v  # Node.js 버전 확인
npm -v   # npm 버전 확인

 

 

MySQL 설치하기 

데이터베이스로 사용할 MySQL을 설치해 보겠습니다

 

설치 후 거쳐야 하는 설정항목에 대한 해설 (sudo mysql_secure_installation)

 

  • VALIDATE PASSWORD COMPONENT? → (Y/n) → n (패스워드 강도 설정 y 선택 가능)
    • Y를 할 경우 패스워드 강도 설정 0, 1, 2 단계로 강제합니다
    • 0단계 :  비밀번호 강도 검사를 하지 않음 (아무 비밀번호나 가능)
    • 1단계: 숫자, 대소문자, 특수 문자가 포함되어야 함 (기본값)
    • 2단계: 8자 이상, 숫자, 대문자, 소문자, 특수 문자 포함 & 사전에 있는 단어 사용 불가
  • Set root password? → (Y/n) → y (MySQL root 계정 비밀번호 설정)
  • Remove anonymous users? → y (익명 사용자 제거)
  • Disallow root login remotely? → y (원격 root 접속 차단)
  • Remove test database and access to it? → y (테스트 DB 삭제)
  • Reload privilege tables now? → y (변경 사항 적용)

보통 Y를 하고 넘어가면 됩니다

 

sudo apt update
sudo apt install mysql-server -y

sudo systemctl start mysql   # MySQL 서비스 시작
sudo systemctl enable mysql  # 부팅 시 자동 시작 설정

sudo systemctl status mysql # mysql 실행중인지 상태확인 active (running) 나오면 정상!

sudo mysql_secure_installation # 보안강화 설정

 

이후 설정 전 지금 구성하고 있는 서버의 DB가 로컬에서만 접속해야 하는지 외부에서도 접속이 가능해야 하는지 알아야 합니다

 

MySQL 원격 접속 설정하기

bind-address를 0.0.0.0 을 하게 되면 외부에서 mysql에 접근이 가능하게 됩니다

외부 접근이 필요 없다면 이 설정은 건너뛰셔도 상관없습니다

sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf # mysql 설정 파일 열기

#파일 내용 수정! 원하는대로 입력 후 컨트롤 + s 로 저장 후 컨트롤 + x 편집기 나가기
bind-address = 0.0.0.0 # 외부접근 가능
bind-address = 127.0.0.1 # 로컬에서만 접근 가능

sudo systemctl restart mysql # mysql 재시작하기

sudo ufw allow 3306/tcp   # 외부에서 mysql 서버에 접속할 수 있도록 3306 포트를 개방
sudo ufw reload   #변경된 방화벽 규칙 다시 불러오기

 

MySQL 데이터베이스 생성

CREATE DATABASE mydatabase CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; # UTF-8 사용하는 DB 생성

 

MySQL 사용자 생성

DB에서는 root 계정 사용을 되도록 사용하지 않고 서비스 DB의 사용자를 각각 지정해 사용합니다

CREATE USER 'myuser'@'localhost' IDENTIFIED BY 'mypassword'; #로컬에서만 사용가능한 유저
GRANT ALL PRIVILEGES ON mydatabase.* TO 'myuser'@'localhost'; # 특정 DB에만 모든 권한을 부여
FLUSH PRIVILEGES; # 권한을 적용

 

기본적인 설치가 모두 완료되었습니다!

다음 글에서는 PHP, PHPmyadmin설치 Nginx, 네트워크 설정, 도메인연결, SSL 적용, 접속 보안설정 임시 배포했던 서비스를 본 서버로 옮기는 작업을 진행해 보겠습니다

'SERVER' 카테고리의 다른 글

와일드 SSL을 적용하다!  (0) 2025.06.01
무중단 서버이전하기 Window to Ubuntu -3  (0) 2025.03.11
무중단 서버이전하기 Window to Ubuntu -1  (0) 2025.03.02