우분투 시작하기
설치는 간단하기 때문에 생략하였습니다
※ 우분투에서는 과거 유료로 서비스됐던 우분투 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 |