1. 시스템 정보 명령어
# 시스템 정보 확인
uname -a # 커널 버전, 아키텍처 등
lsb_release -a # Ubuntu 버전 정보
더보기
- uname (unix name -> 유닉스 시스템 이름 출력)
- lsb_release (Linux Standard Base release -> 리눅스 표준 버전 정보)
- -a (all -> 모든 정보 표시)
2. 디렉토리 / 파일 관련 명령어
# 현재 디렉토리와 파일 확인
pwd # 현재 디렉토리
ls -l # 파일 목록 상세 보기
ls -lh # 사람이 읽기 좋은 파일 크기
# 디렉토리 이동
cd / # 루트로 이동
cd ~ # 홈 디렉토리로 이동
cd /etc # 설정 파일들이 있는 디렉토리로 이동
# 파일/디렉토리 조작
touch test.txt # 빈 파일 생성
mkdir myfolder # 폴더 생성
cp file1 file2 # 파일 복사
mv file1 file2 # 파일 이동/이름 변경
rm file1 # 파일 삭제
rm -rf myfolder # 폴더와 내부 파일 삭제
ln -s /var/www/html/index.html ~/index_link.html #심볼릭 링크
# 파일 내용 확인
cat file.txt # 전체 내용 보기
less file.txt # 페이지 단위로 보기
head -n 5 file.txt # 앞에서 5줄 보기
tail -n 10 file.txt # 뒤에서 10줄 보기
더보기
- pwd (print working directory -> 현재 작업 디렉토리 출력)
- ls (list -> 목록 보기)
- cd (change directory -> 디렉토리 변경)
- cp (copy -> 복사)
- mkdir (make direcotry)
- touch (빈파일 생성하기)
- mv (move -> 이동 또는 이름 변경)
- rm (remove -> 삭제)
- cat (catenate -> 전체 내용을 이어서 보여줌)
- less (더 적게 보여주면서 페이지 단위로 출력)
- head (머리 부분 표시)
- tail (꼬리 부분 표시)
3. 권한/사용자 관련 명령어 약자
# 사용자/권한
whoami # 현재 사용자
sudo command # 관리자 권한으로 실행
chmod 755 file # 권한 변경
chown user:group file # 소유자 변경
더보기
- whoami (who am I -> 현재 사용자 출력)
- sudo (super user do -> 관리자 권한으로 실행)
- chmod (change mode -> 권한(모드) 변경
- chown (change owner -> 소유자 변경)
4. 패키지 설치와 업데이트
1) 패키지 목록 및 시스템 업데이트
# 패키지 목록 업데이트 (리포지토리 새로고침)
sudo apt update
# 모든 패키지 최신 버전으로 업그레이드
sudo apt upgrade -y
# 커널 포함 전체 업그레이드 (신중)
sudo apt full-upgrade -y
# 사용하지 않는 패키지 삭제
sudo apt autoremove -y
- apt (Advanced Package Tool -> Ubuntu 패키지 관리자)
- -y ("yes"를 자동으로 입력하는 옵션)
2) 패키지 설치/삭제
# nano 에디터 설치
sudo apt install nano -y
# nginx 웹서버 설치
sudo apt install nginx -y
# 패키지 삭제
sudo apt remove nginx -y
# 설정까지 완전히 삭제
sudo apt purge nginx -y
5. 사용자 관리하기
# 사용자 UID/GID 조회
id
# 속한 그룹 확인
groups id
# 비번 변경
passwd
# 새 사용자 추가
sudo adduser myuser
# 사용자 삭제
sudo deluser myuser
# 사용자 그룹 추가
sudo groupadd mygroup
# 사용자 그룹 삭제
sudo groubdel mygroup
# 사용자 그룹에 추가
sudo usermod -aG mygroup myuser
# sudo 그룹(관리자 권한)에 추가
sudo usermod -aG sudo myuser
- -a (append -> 기존 그룹에 추가)
- -G (groub -> 그룹 지정)
6. 권한 관리하기
# 권한 변경
chmod 755 myfile.txt # 소유자는 읽기/쓰기/실행, 그룹/기타는 읽기+실행
chmod 644 myfile.txt # 소유자 읽기/쓰기, 나머지 읽기만
# 소유자 변경
sudo chown myuser:mygroup myfile.txt
7. 네트워크 정보 확인
# IP 주소 확인
ip addr show
# 간단히 확인
ip a
# 네트워크 연결 상태 확인
ping google.com
# 현재 라우팅 테이블 확인
ip route show
1) 고정 IP 설정 (Netplan)
Netplan 설정 파일은 보통 /etc/netplan/에 있습니다.
2) 방화벽(UFW) 설정
# UFW 활성화
sudo ufw enable
# 특정 포트 허용 (예: SSH)
sudo ufw allow 22/tcp
# HTTP(80), HTTPS(443) 허용
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
# 특정 IP만 허용
sudo ufw allow from 192.168.0.10
# 포트 차단
sudo ufw deny 3306/tcp
# 상태 확인
sudo ufw status verbose
3) SSH 보안 설정
# SSH 설정 파일 수정
sudo nano /etc/ssh/sshd_config
# 예시 설정
Port 2222 # SSH 포트 변경
PermitRootLogin no # root 로그인 비활성화
PasswordAuthentication no # 키 인증만 허용
# SSH 재시작
sudo systemctl restart ssh
8. 서비스 관리(systemd, nginx, mysql 등)
Ubuntu에서 서비스(데몬) 관리의 핵심 도구는 systemd 입니다.
웹 서버(Nginx, Apache), 데이터베이스(MySQL, MariaDB) 같은 서버 프로세스는 systemctl 명령으로 시작/중지/자동시작 설정을 관리합니다.
1) 서비스 상태 확인
# 서비스 상태 확인
sudo systemctl status nginx
# 실행 중인지 간단히 확인
systemctl is-active nginx
# 부팅 시 자동 실행 여부 확인
systemctl is-enabled nginx
2) 서비스 시작/중지/재시작
# 서비스 시작
sudo systemctl start nginx
# 서비스 중지
sudo systemctl stop nginx
# 서비스 재시작
sudo systemctl restart nginx
# 설정 파일만 다시 읽기 (다운타임 없음)
sudo systemctl reload nginx
3) 서비스 자동 시작 설정
# 부팅 시 자동 시작
sudo systemctl enable nginx
# 부팅 시 자동 시작 해제
sudo systemctl disable nginx
4) Nginx 설치/테스트
# Nginx 설치
sudo apt install nginx -y
# Nginx 상태 확인
sudo systemctl status nginx
# 브라우저에서 http://서버IP 접속
5) MySQL 설치/관리
# MySQL 설치
sudo apt install mysql-server -y
# MySQL 서비스 상태 확인
sudo systemctl status mysql
# MySQL 보안 설정
sudo mysql_secure_installation
# root 계정으로 접속 (Ubuntu 24.04 기본)
sudo mysql
# 사용자 생성
CREATE USER 'myuser'@'localhost' IDENTIFIED BY 'mypassword';
# 권한 부여
GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'localhost' WITH GRANT OPTION;
# 변경사항 적용
FLUSH PRIVILEGES;
9. PHP 8.x 설치 및 설정 (Apache/Nginx 연동)
- Ubuntu 24.04에서는 PHP 8.x 기본 지원
- Nginx는 PHP를 직접 처리 못 함 → PHP-FPM이 필요
- 확장 모듈(extensions)을 설치해 Laravel, WordPress 등에서 필요한 기능 제공
- Nginx 설정 파일에서 fastcgi_pass를 통해 PHP-FPM과 연동
1) PHP 8.x 설치
# 패키지 목록 업데이트
sudo apt update
# PHP 8.2 + FPM + 필수 확장 모듈 설치
sudo apt install php8.2 php8.2-fpm php8.2-cli php8.2-mysql php8.2-xml php8.2-mbstring php8.2-curl php8.2-zip unzip -y
# 설치 확인
php -v
2) PHP-FPM 서비스 관리
# PHP-FPM 상태 확인
sudo systemctl status php8.2-fpm
# 재시작
sudo systemctl restart php8.2-fpm
# 부팅 시 자동 실행
sudo systemctl enable php8.2-fpm
3) Nginx 연동 설정
# Nginx 기본 사이트 설정 파일 수정
sudo nano /etc/nginx/sites-available/default
server {
listen 80;
server_name example.com;
root /var/www/html;
index index.php index.html;
location / {
try_files $uri $uri/ =404;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.2-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
4) Nginx 설정 테스트 & 재시작
sudo nginx -t
sudo systemctl restart nginx
5) PHP 테스트 파일 생성
echo "<?php phpinfo(); ?>" | sudo tee /var/www/html/info.php
10. MySQL 8.x 설치, 보안 설정, 기본 쿼리, 백업/복원
MySQL 8.x는 Ubuntu 24.04 기본 리포지토리에서 바로 설치 가능하며, 보안 설정 → 사용자/권한 관리 → 기본 CRUD 쿼리 → 백업/복원 순으로 운영합니다.
1) 설치 및 보안 설정
# 설치
sudo apt update
sudo apt install mysql-server -y
# 서비스 상태 확인
sudo systemctl status mysql
# 보안 설정
sudo mysql_secure_installation
보안 설정 시:
- root 비밀번호 설정
- 익명 사용자 삭제
- 원격 root 로그인 비활성화
- test DB 삭제
- 권한 테이블 새로고침
2) MySQL 접속
# root 계정으로 접속
sudo mysql
# 또는
mysql -u root -p
3) 사용자 및 권한 관리
-- 사용자 생성
CREATE USER 'devuser'@'localhost' IDENTIFIED BY 'password123!';
-- 특정 데이터베이스에 모든 권한 부여
GRANT ALL PRIVILEGES ON mydb.* TO 'devuser'@'localhost';
-- 모든 DB에 권한 부여
GRANT ALL PRIVILEGES ON *.* TO 'devuser'@'localhost' WITH GRANT OPTION;
-- 변경 사항 적용
FLUSH PRIVILEGES;
4) 기본 쿼리
-- 데이터베이스 생성
CREATE DATABASE mydb;
-- 데이터베이스 목록 보기
SHOW DATABASES;
-- 테이블 생성
USE mydb;
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(50),
email VARCHAR(100)
);
-- 데이터 삽입
INSERT INTO users (name, email) VALUES ('Alice', 'alice@example.com');
-- 데이터 조회
SELECT * FROM users;
-- 데이터 수정
UPDATE users SET email='alice@newmail.com' WHERE id=1;
-- 데이터 삭제
DELETE FROM users WHERE id=1;
5) 백업 & 복원
# 백업 (mysqldump)
mysqldump -u root -p mydb > mydb_backup.sql
# 모든 DB 백업
mysqldump -u root -p --all-databases > all_backup.sql
# 복원
mysql -u root -p mydb < mydb_backup.sql
11. 이메일 서버 구축 (Postfix, Dovecot, SSL/TLS, Spam 방지)
Ubuntu에서 이메일 서버를 구축하려면 크게 MTA(Postfix) + MDA(Dovecot) 조합이 필요합니다.
- Postfix → 메일 송신 담당 (SMTP)
- Dovecot → 메일 수신/저장 및 클라이언트 제공 (IMAP, POP3)
- SSL/TLS → 보안 암호화
- Spam 방지 → SPF, DKIM, DMARC, Rspamd/SpamAssassin
구축 순서:
- Postfix 설치/설정
- Dovecot 설치/설정
- SSL 인증서 발급/적용 (Let's Encrypt)
- 스팸 방지 설정
1) Postfix 설치
sudo apt update
sudo apt install postfix -y
설치 중 Internet Site 선택 후, mail.example.com 입력.
Postfix 기본 설정 확인:
postconf -n
2) Dovecot 설치
sudo apt install dovecot-imapd dovecot-pop3d -y
# 상태 확인
sudo systemctl status dovecot
3) SSL 인증서 발급 (Let's Encrypt)
sudo apt install certbot python3-certbot-nginx -y
# 도메인 인증
sudo certbot certonly --nginx -d mail.example.com
# 인증서 경로 확인
ls -l /etc/letsencrypt/live/mail.example.com/
4) Postfix SSL 설정 (/etc/postfix/main.cf)
smtpd_tls_cert_file=/etc/letsencrypt/live/mail.example.com/fullchain.pem
smtpd_tls_key_file=/etc/letsencrypt/live/mail.example.com/privkey.pem
smtpd_use_tls=yes
smtpd_tls_auth_only=yes
5) Dovecot SSL 설정 (/etc/dovecot/conf.d/10-ssl.conf)
ssl = required
ssl_cert = </etc/letsencrypt/live/mail.example.com/fullchain.pem
ssl_key = </etc/letsencrypt/live/mail.example.com/privkey.pem
6) 서비스 재시작
sudo systemctl restart postfix dovecot
7) Spam 방지 기본 설정
SPF (DNS TXT)
v=spf1 mx ~all
DKIM (opendkim 설치)
sudo apt install opendkim opendkim-tools -y
DMARC (DNS TXT)
v=DMARC1; p=quarantine; rua=mailto:admin@example.com반응형
'리눅스 Linux' 카테고리의 다른 글
| SSH 접속하기 - 키생성 및 서버 등록하기 (4) | 2025.08.23 |
|---|---|
| vi, vim 에디터 다루기 (암기하기) (3) | 2025.08.16 |
| 리눅스 버전 확인 - linux OS (1) | 2025.08.16 |
| Ubuntu - Nginx 리버스 프록시 설정 (외부IP -> 내부IP 로 연결하기) (0) | 2025.03.08 |
| ssh 접속 포트 변경하기 22 (0) | 2025.02.07 |