리눅스(1) : 기본 명령어

NOHHYEONGJUN·2024년 9월 4일

리눅스

목록 보기
2/16

파일 및 디렉토리 관련 명령


1. ls(list) : 디렉토리의 파일 목록 출력

  1. -l : 파일의 자세한 정보 출력

  2. -a : 모든 파일 출력 (숨김 파일 포함)

  3. -h : 파일 크기를 읽기 쉽게 출력

  4. ls directory : directory의 파일 목록 출력

ls -lh

df -h

ls --help

ls -al

ls .ssh

-- : 풀 네임 / - : 한 글자 (첫 글자)

ls -a : 숨김 파일 확인 / ls -l : 권한 확인


2. cd(change directory) : 작업 디렉토리 변경

  1. cd 변경할 디렉토리

  2. cd - : 현재 디렉토리로 오기 전 디렉토리로 이동

  3. cd : home 디렉토리로 이동 /home/사용자명

  4. cd ~ : 홈 디렉토리

  5. cd . : 현재 디렉토리로 이동

  6. cd .. : 상위 디렉토리로 이동 (cd ../..)

  • 절대 경로 : '/'부터 전체 경로를 모두 표시
        - /var/log/messages
  • 상대 경로 : 현재 위치를 기준으로 표시

3. cp(copy) : 파일 복사

  1. cp 원본파일 복사할 디렉토리

  2. cp 원본파일 복사파일

  3. -r : 하위 디렉토리까지 모두 복사

# 디렉토리 안의 모든 파일들 복사 #
cp -r /etc/* /tmp 

# 디렉토리 자체를 복사 # 
cp -r /etc /tmp

4. mv(move) : 파일/디렉토리 이동, 파일명 변경

  1. mv 옮길 디렉토리 옮겨갈 디렉토리
mv /lab /home/hj

# 디렉토리 옮기면서 디렉토리명 변경 #
mv /lab /home/hj/lab2 

# 파일명 변경 #
mv test test2 

5. mkdir(make directory) : 디렉토리 생성

  1. mkdir 생성할 디렉토리명
# 상위 디렉토리가 없으면 생성 #
mkdir -p a/b/c/d

6. rmdir(remove directory) : 디렉토리 제거

  1. rmdir : 빈 디렉토리만 제거 가능

7. rm(remove) : 파일 삭제

  1. -r : 디렉토리까지 삭제

8. less , more : 긴 문서 파일 보기

  1. less 파일명

    → less는 뒤로 가기 가능

    → v 키를 입력하면 편집 가능


9. cat : 짧은 문서 파일 보기, 짧은 문서 작성

  1. cat 파일명 : 문서 보기

  2. cat > 파일명 : 화면에 입력하는 내용을 파일에 저장. 입력 후에 ctrl + d 를 입력해서 저장하고 종료.

  3. cat >> 파일명 : 기존 파일 내용에 추가하기


10. 표준 파일 입력(0), 출력(1), 표준 에러(2), Redirection(표준 입출력, 에러의 방향을 바꿈)

cat > test2 < test

→ test2를 만들고, test의 내용을 입력

 

a 2> error.txt

cat error.txt
-bash: a: command not found

a 2> /dev/null

11. 소유권(Ownership), 허가권(Permission)

 

소유권

  • 파일이나 디렉토리의 소유자, 그룹을 표시, 소유자도 그룹도 아닌 사용자는 그 외(Other).

  • 해당 사용자가 파일에 접근하고자 할 때 소유권에 다라 접근 권한이 달라짐.

 

  1. ls -l : 소유권을 확인하는 명령
-rw-r--r-- 1   hj    hj  390 Jul  1 09:23 authorized_keys
             소유자  그룹 

→ 사용자(User), 그룹(group), 그 외(other) 별로 권한을 가짐.

 

허가권

  • 파일이나 디렉토리에 대한 권한(Read, Write, eXecute).

  • permission denied의 원인.

 

  1. 파일 : r(읽기), w(쓰기), x(실행)

  2. 디렉토리 : r(목록 읽기), w(디렉토리에 파일 쓰기), x(cd로 접근하기).

 

→ 허가권은 user, group, other 별로 부여됨.

⇒ rwx rwx rwx (user, group, other) 

⇒ 7 7 7 (permission을 숫자로 표시)

ex) 644 = rw-r—r—

 

 

chown new_user.new_group 파일명

chgrp new_group 파일명

소유권 변경

 

chmod 숫자 방식/문자 방식 파일명

=> 숫자 방식은 모든 사용자별로 모두 작성 : 755, 640, 400
=> 문자 방식은 변경되는 사용자만 작성 : u+x, o-w, ug+x, a=rw

허가권 변경

 

usermod -aG 그룹명 사용자 

→ 사용자를 특정 그룹에 포함시킬 경우

 

 

 

특수 퍼미션

보안과 관련!

  1. <setuid / setgid>

    • 실행 파일을 실행할 때 실행 파일의 소유자 권한이 아닌 실행하는 사용자의 권한으로 실행이 되는 것이 일반적인 상황.

    • 소유자 혹은 소유 그룹의 권한으로 실행하는 것이 필요할 경우 setuid, setgid 퍼미션을 부여해야함.

  2. <'stickybit'>

    • 디렉토리에 부여하는 특수 퍼미션으로, 해당 퍼미션이 부여된 디렉토리는 모든 사용자가 쓰기 가능하지만 삭제는 소유자만 가능.
ex) 4755, 2644, 17554755(setuid), 2755(setgid), 1755(stickybit)

→ 기존 퍼미션 앞에 붙음.

 

 


12. 프로세스와 서비스

프로세스

프로그램이 실행되어 메모리에서 동작하고 있는 상태

서비스

데몬이라고도 하며 백그라운드에서 동작하면서 요청이 있을 경우 응답하는 프로세스

 

  1. ps : 현재 터미널에서 동작시킨 프로세스 확인

  2. ps -ef : 현재 시스템에서 동작 중인 모든 프로세스

  3. ps aux :                 “

  4. kill -l : 시그널 출력

# 시그널 #
SIGHUP(1) : 행 업. 프로세스 일시 중지 했다가 다시 실행. 설정 파일을 다시 읽어 들임.
SIGINT(2) : ctrl + c 에 의해 발생. 강제 종료
SIGKILL(9) : 강제 종료
SIGTERM(15) : 기본 시그널. 정상 종료
SIGTSTP(20) : 일시 정지

# EX #
sleep 1000
jobs
bg %1

kill %1 or kill -9 %1
  1. systemctl, service : 서비스(데몬)를 제어하는 명령

    systemctl 명령 서비스명.service ⇒ service 생략 가능

    systemctl 명령 서비스명.socket

# 명령 #
1. start : 서비스 시작
2. stop : 서비스 종료
3. restart : 서비스 재시작
4. status : 서비스 상태 확인
5. enable : 부팅 시 서비스 시작
6. disable : 부팅 시 서비스 시작 안함

# EX #
systemctl start docker = service docker start
systemctl start telnet.socket = service telnet.socket start

 

 

Rocky Linux SELinux 비활성화

vi /etc/sysconfig/selinux

SELINUX=enforcing => disabled 
로 변경하고 저장 후 리부팅 (영구적 적용.)

setenforce 0 
=> 일시적으로 해제

13. job control : 현재 터미널에서 동작 중인 작업 제어

  1. jobs : 작업 목록 출력

  2. fg : 중단된 프로세스(작업)를 포그라운드에서 동작

  3. fg %작업번호 : 현재 멈춰있는 작업을 포그라운드로 동작

    → 포그라운드에서 동작 중인 프로세스를 중단 시킬때 ctrl + z (SIGTSTP)

    → % 생략 가능

  4. bg : 중단된 프로세스(작업)를 백그라운드에서 동작

  5. bg %작업번호 : 현재 멈춰있는 작업을 백그라운드로 동작

    → % 생략 가능

  6. 명령 & : 해당 명령을 백그라운드에서 동작시킴.

  7. kill %작업번호 : 해당 작업 종료

    → % 생략하면 PID가 됨.


14. at, cron : 작업 자동화

at : 특정 시점에 수행할 작업을 지정하고 해당 시점에서 자동으로 작업 수행
cron : 주기적으로 수행할 작업을 지정하고 매 시점에서 해당 작업 수행

 

at 14:17 today

실행할 작업1
실행할 작업2

ctrl + d

→ at 날짜, 시간 지정

 

crontab -e

분 시간 일 월 요일(0~6)
40 * * * 2 mkdir /root/testdir ; cp /usr/bin/s* /root/testdir

→ crontab -e : 반복적으로 수행할 작업 / 쉘 스크립트 등록(vi)

 

 

at, cron에 대한 접근 제어

at.deny, at.allow / cron.deny, cron.allow

  1. .deny : 해당 파일에 등록된 사용자는 at, cron 사용 불가

  2. .allow : 해당 파일에 등록된 사용자만 at, cron 사용 가능

  3. .deny, .allow 파일이 모두 있는 경우 .allow 가 적용

  4. 내용이 비어있는 경우 모두 허용


15. sudo : 일반 사용자가 root 권한으로 명령을 수행할 필요가 있는 경우

/etc/sudoers 파일에 사용자를 등록하고 사용할 수 있는 명령을 지정

su 명령으로 root로 사용자를 전환하고 명령을 수행할 수 있으나 특정 명령만 허용할 수 없음.

  1. visudo : /etc/sudoers 파일을 수정할 수 있음.

16. tar, 압축 프로그램

  1. tar(tape archive) : 여러 파일들을 묶어서 하나의 파일로 만드는 유틸리티.
# 옵션 #
1. c : 파일 묶기
2. x : 묶인 파일 풀기
3. v : 묶거나 푸는 과정 출력
4. t : 실제로 풀거나 묶지 않고 파일 확인
5. f : 장치나 파일 지정

# EX #
tar cvf test.tar c*
tar xvf test.tar 
tar tvf test.tar
tar xvf test.tar -C /tmp  : -C 옵션은 tar 해제 위치 지정

 

  1. 압축 프로그램 : gzip(gunzip), bzip2(bunzip2), xz, compress, zip(unzip)
# 압축 #
gzip 파일명
bzip2 파일명
xz 파일명
cmpress 파일명
zip 파일명.zip 파일명

# 압축 해제 #
gunzip 파일명 = gzip -d 파일명
bunzip2 파일명 = bzip2 -d 파일명
xz -d 파일명
uncompress 파일명
unzip 파일명

 

  1. tar와 압축 해제 한번에 처리
tar xvfz 파일명.tar.gz 

→ gzip으로 압축 해제하고 tar 파일 풀기 동시에 진행.

 

tar xvfj 파일명.tar.bz2

→ bz2로 압축 해제하고 tar 파일 풀기 동시 진행.

 

tar xvfJ 파일명.tar.xz

→ xz로 압축 해제하고 tar 파일 풀기 동시 진행.

 

tar xvfZ 파일명.tar.Z

→ compress로 압축 해제하고 tar 파일 풀기 동시 진행.


17. 파일 시스템 : 물리적인 하드디스크에 파일을 저장하기 위한 체계

ext2, ext3, ext4, xfs : 리눅스 파일 시스템

 

df -Th

→ 파일 시스템 확인 명령어

 

리눅스에서는 모든 장치를 파일로 취급함. 그리고 모든 장치는 마운트가 되어야 사용할 수 있음.

xfs → /lost+found 디렉토리 생성 X

ext4 → /lost+found 디렉토리 생성 O (마운트 지점)

 

 

시스템 종료 명령

poweroff
halt
shutdown -h now
init 0

시스템 리부팅 명령

reboot
shutdown -r now
init 6

 

 

새로운 하드디스크 추가

ls /dev

fdisk -l

fdisk /dev/sda

new

enter
enter
enter

w

fdisk /dev/sda 

mkfs -t ext4 /dev/sda1

mkdir /mnt/mpoint

cp /usr/sbin/x* /mnt/mpoint

mount -t ext4 /dev/sda1 /mnt/mpoint

새로운 하드디스크를 추가한 경우

  1. 파티션 생성 : 파티션은 파일 시스템을 생성하기 위한 구역

  2. 파일 시스템 : 파일 시스템은 파일을 저장하기 위한 체계. OS마다 다름.

  3. 생성된 파일 시스템을 리눅스에서 사용가능하도록 mount 함 : mount는 장치를 리눅스에서 사용가능하도록 연결하는 것.

  4. 시스템이 리부팅 후에도 mount된 상태로 사용하기 위해 /etc/fstab 파일에 등록을 해야함.


18. DNS Service

/var/named/chroot/var/named

→ Resource Record : NS(name server), A(IPv4주소), AAAA(IPv6주소), MX(메일서버), CNAME(canonical name), PTR(pointer)


19. FTP, Samba, NFS : 파일 공유 서비스

FTP (필요할 때만 연결)

FTP 서버에 파일을 저장하고 클라이언트에서 파일을 다운로드하거나 업로드하는 서비스
→ (TCP 21(세션), 데이터 포트(20, 또는 임의의 포트))
→ FTP는 보안 취약 (패킷 캡쳐 시, 파악 가능)

FTP 모드 (클라이언트 기준)

  1. Active

→ 서버가 클라이언트에 접속
→ 탐색기, cmd는 Active로 접속

 

  1. Passive

 

 

 

chroot

local_enable=YES 설정 시, 사용자가 로그인 했을 경우 해당 사용자의 홈 디렉토리를 ‘/’(root)로 인식하도록 하는 설정

 

 

 

VSFTP 서버 프로그램 사용해 FTP 서비스

Rocky

vsftp 설치

dnf install vsftpd

systemctl start vsftpd

systemctl stop firewalld
systemctl disable firewalld

netstat -ntlp : n(numeric), t(tcp), l(listening), p(pid)

 

Window

ftp 192.168.187.130
사용자 : admin
암호 : 

 

AWS EC2

#인스턴스 -> 보안 -> 인바운드 규칙 추가 -> 21번 TCP 추가

sudo apt install vsftpd

 

Rocky

Rocky FTP 설정 파일 : /etc/vsftpd/vsftpd.conf
Ubuntu FTP 설정 파일 : /etc/vsftpd.conf

anonymous 접속 허용

cd /etc/vsftpd

vi vsftpd.conf

내용 수정

12 anonymous_enable=YES
15 local_enable=NO

 

Window

ftp 192.168.187.130
사용자 : anonymous
암호 : X (enter)

→ ls → pub 존재

 

Rocky

cd /var/ftp

ls
 pub

→ pub 위치

 

AWS EC2

Passive 접속 허용

sudo vi /etc/vsftpd.conf

listen=YES
listen_ipv6=NO

pasv_min_port=5001
pasv_max_port=5002
pasv_address=43.200.245.174

→ 서버가 private주소를 가지고 있는 경우 공인 주소를 설정함

 

chroot 설정

sudo vi /etc/vsftpd.conf

122 chroot_local_user=YES
123 chroot_list_enable=YES

125 chroot_list_file=/etc/vsftpd.chroot_list
126 allow_writeable_chroot=YES

cd /etc

sudo touch vsftpd.chroot_list

sudo systemctl restart vsftpd

sudo vi vsftpd.chroot_list
	admin2
	
sudo useradd -g admin -s /bin/bash -m -d /home/admin admin

sudo passwd admin

vi vsftpd.chroot_list
	admin2
	admin

sudo systemctl restart vsftpd

→사용자에 따라 홈 디렉토리를 벗어나지 못하도록 설정

 

ubuntu@ip-172-31-6-203:/etc$ sudo echo "admin3" > vsftpd.chroot_list
-bash: vsftpd.chroot_list: Permission denied


echo "admin3" | sudo tee -a vsftpd.chroot_list

→ echo는 setuid가 없음 → tee 사용으로 해결

 

 

 

Samba (상시 연결)

→ window ↔ unix 사이의 파일 및 장치 공유 서비스
smb, cifs 프로토콜 사용
TCP 137, 139, 445번 사용
rpm → 레드햇 계열 패키지 매니저

 

  • Window : 폴더 공유 → 리눅스에서 해당 폴더 접근

  • Linux : samba 패키지(서버) 설치, samba-client 패키지 설치

 

 

Rocky

Samba 서버 패키지 설치

dnf install samba

cd /etc/samba/smb.conf 
=> samba 설정 파일 
=> 기본값은 로컬 사용자의 홈 디렉토리를 공유함.

systemctl start smb

systemctl start nmb 
=> IP 대신 컴퓨터 이름으로 접근 할 수 있는 서비스 

netstat -ntlp
	tcp6       0      0 :::139                  :::*                    LISTEN      4515/smbd
	tcp6       0      0 :::445                  :::*                    LISTEN      4515/smbd

Samba 사용자 등록

smbpasswd -a admin

vi /etc/sysconfig/selinux
	SELINUX=disabled
	
setenforce 0 

 

Window

Window → 탐색기

\\192.168.187.130

네트워크 우클릭 → 네트워크 드라이버 연결 → 폴더

\\192.168.187.130\admin

 

→ 내 PC의 드라이브처럼 사용 가능 (mount해서 사용)

→ 네트워크 드라이브로 연결

 

 

WSL

samba-client, cifs-utils 설치

sudo -i
apt install samba-client cifs-utils

mount / 연결

mkdir /mnt/admin
mount -t cifs //192.168.187.130/admin /mnt/admin -o username=admin,password=password

연결 해제 (/mnt/admin 디렉토리에 있으면 X)

umount /mnt/admin

 

Rocky

홈 디렉토리가 아닌 별도의 디렉토리를 공유하는 경우

samba 설정 파일 수정 (최 하단 추가)

vi /etc/samba/smb.conf
     45 [share]
     46         path = /var/samba
     47         public = yes
     48         force_user = share
     49         force_group = share
     50         writable = yes

사용자 추가

useradd -s /bin/nologin share

smbpasswd -a share

공유 폴더

mkdir /var/samba

 

WSL

mount / 연결

mkdir /mnt/share-dir
mount -t cifs //192.168.187.130/share /mnt/share-dir -o username=share,password=password

 

 

 

NFS (상시 연결)

→ Network File System
→ 네트워크를 통해 다른 시스템(NFS 서버)이 공유하고 있는 디렉토리를 파일 시스템처럼 연결(mount)해서 사용하는 것.
TCP 2049번 포트 사용

 

Rocky

NFS 설치

dnf install nfs-utils

공유 디렉토리 설정

vi /etc/exports
	공유할 디렉토리  클라이언트 주소/네트워크(NFS 옵션)
	/var/nfs-share  172.21.185.172(rw)
	/var/nfs-share *(rw,insecure)
	/var/nfs-share *(rw,insecure,no_root_squash)
	=> root 권한으로 쓸 수 있게 함.
	
mkdir /var/nfs-share

NFS 서비스 실행

systemctl start nfs-server
systemctl enable nfs-server

공유 목록 확인

exportfs -v

 

WSL

NFS-client 설치

apt install nfs-common

mount 및 접속

mkdir /mnt/nfs-dir

mount -t nfs 192.168.187.130:/var/nfs-share

20. 20. SMTP : 메일 서비스

→ SMTP(TCP 25번).
→ 메일 서비스를 위해서는 DNS 서비스 필수. (MX resource record 필요)

 

Rocky

zone 파일 수정

cd /var/named

vi nhj.zone
      1 $TTL 86400
      2 @       IN SOA  ns      admin (
      3                         20240703 ; serial
      4                         1D       ; refresh
      5                         1H       ; retry
      6                         1W       ; expire
      7                         3H )     ; minimum
      8         IN NS   ns
      9         IN MX 10 mail
     10
     11 ns      IN A    192.168.187.130
     12 aws     IN A    43.200.245.174
     14 www     IN A    192.168.187.130
     17 mail    IN A    192.168.187.130


systemctl restart named

 

Window

ncpa.cpl → wifi 연결 → 속성 → DNS 주소 → Rocky IP로 수정

nslookup mail.nhj.com
서버:    ns.nhj.com
Address:  192.168.187.130

이름:    mail.nhj.com
Address:  192.168.187.130

 

Rocky

postfix, dovecot 설치

dnf install postfix dovecot

postfix 주 설정파일

/etc/postfix/main.cf

명령으로 설정 가능 vi 사용 X

메일 서버 호스트 설정

postconf -e 'myhostname = mail.nhj.com'

메일 도메인 설정

postconf -e 'mydomain = nhj.com'

발송자 도메인 설정

postconf -e 'myorigin = $mydomain'

리스닝 인터페이스 설정

postconf -e 'inet_interfaces = all'

ipv4만 사용하도록 설정

postconf -e 'inet_protocols = ipv4'

메일을 받을 도메인 설정

postconf -e 'mydestination = $mydomain,localhost.$mydomain,localhost,$mydomain,/etc/postfix/local-host-names'
touch /etc/postfix/local-host-names

SMTP 인증을 위한 설정

postconf -e 'smtpd_sasl_type = dovecot'
postconf -e 'smtpd_sasl_path = private/auth'
postconf -e 'smtpd_sasl_auth_enable = yes'
postconf -e 'smtpd_sasl_security_options = noanonymous'
postconf -e 'smtpd_sasl_local_domain = $myhostname'
postconf -e 'smtpd_client_restrictions = permit_mynetworks,permit'
postconf -e 'smtpd_recipient_restrictions = permit_mynetworks,permit_auth_destination,permit_sasl_authenticated,reject'

dovecot 주 설정파일

vi /etc/dovecot/dovecot.conf

프로토콜 설정

protocols = imap pop3 lmtp   =>  protocols = imap pop3

리스닝 인터페이스 설정

listen = *, ::  => listen = *

비밀번호 인증 설정

vi /etc/dovecot/conf.d/10-auth.conf
#disable_plaintext_auth = yes => disable_plaintext_auth = no

auth_mechanisms = plain => auth_mechanisms = plain login

메일박스 위치 변경

vi /etc/dovecot/conf.d/10-mail.conf
#mail_location  => mail_location = mbox:/var/empty:INBOX=/var/spool/mail/%u:INDEX=MEMORY

SMTP 인증 설정

vi /etc/dovecot/conf.d/10-master.conf
	# Postfix smtp-auth
	unix_listener /var/spool/postfix/private/auth {
	 mode = 0666
	 user = postfix
	 group = postfix
	}
	
vi /etc/dovecot/conf.d/10-ssl.conf
ssl = no

메일서버 시작

systemctl restart postfix dovecot

포트 개방 확인

netstat -ntlp
	tcp        0      0 0.0.0.0:110             0.0.0.0:*               LISTEN
	tcp        0      0 0.0.0.0:143             0.0.0.0:*               LISTEN
	tcp        0      0 0.0.0.0:25              0.0.0.0:*               LISTEN

telnet 설치

dnf install telnet

telnet을 통해 접속

telnet localhost 110
user admin
pass 

telnet을 통해 접속 (dovecot)

telnet localhost 25
ehlo naver.com
auth login
334 VXNlcm5hbWU6
YWRtaW4=    => admin
334 UGFzc3dvcmQ6
Z3Vkd25zNTYzNw== => pass
=> base64로 인코딩 된 값

nslookup을 위한 설치

dnf install bind-utils

nslookup mail.nhj.com

 

 

 

ThunderBird

C:\Windows\System32\drivers\etc\hosts
-> 최 하단에 192.168.187.130 mail.nhj.com 추가

 

 

Rocky

web mail 프로그램 설치(roundcube)

mariadb 설치

yum install mariadb-server
systemctl start mariadb

roundcube에서 사용할 데이터베이스 생성

mysql -uroot -p (passwd X -> Enter)

CREATE DATABASE roundcubemail CHARACTER SET utf8 COLLATE utf8_general_ci;
GRANT ALL PRIVILEGES ON roundcubemail.* TO round@localhost IDENTIFIED BY 'goodee@0205';

roundcube가 동작하기 위해 필요한 패키지 설치

sudo dnf install httpd -y
sudo dnf install epel-release -y
sudo dnf install wget postfix certbot postfix-mysql httpd vim policycoreutils-python-utils -y

sudo dnf install -y https://rpms.remirepo.net/enterprise/remi-release-8.rpm 
sudo dnf module -y reset php
sudo dnf module enable php:remi-8.0 -y
sudo dnf install php-{pear,cgi,common,curl,gmp,fpm,mbstring,gd,mysqli,gettext,bcmath,json,xml,fpm,intl,zip} -y

systemctl start httpd

roundcube 설치

wget https://github.com/roundcube/roundcubemail/releases/download/1.6.7/roundcubemail-1.6.7-complete.tar.gz

압축 해제 및 이동

tar xfz roundcubemail-1.6.7-complete.tar.gz -C /var/www/html/

디렉토리 이름 변경

mv roundcubemail-1.6.7/ rc

브라우저로 접속

http://mail.nhj.com/rc/installer/

Roundcube Webmail Installer

cd /config
vi config.inc.php -> 붙여넣기

나머지 설정

cd /var/www/html/rc
chown apache.apache temp logs

접속 확인

http://mail.nhj.com/rc/

 

AWS EC2

unzip 설치 및 압축 해제

sudo apt install unzip

mkdir guestbook

cd guestbook

unzip guestbook.zip

JDK 설치

sudo apt install openjdk-11-jdk

mariadb-server 설치

sudo apt install mariadb-server

src 파일 수정

cd /src/main/resources
vi application.properties
	server.port=80
	spring.datasource.initialization-mode=always
	
	### Static setting
	spring.datasource.url=jdbc:mysql://localhost/guestbook
	spring.datasource.username=root
	spring.datasource.password=edu
	
	### Use Environment Variable
	#spring.datasource.url=jdbc:mysql://${MYSQL_IP}:${MYSQL_PORT}/${MYSQL_DATABASE}
	#spring.datasource.username=${MYSQL_USER}
	#spring.datasource.password=${MYSQL_PASSWORD}
	~

mariadb 추가

sudo mariadb -uroot -p
	create database guestbook
	grant all privileges on guestbook.* to root@localhost identified by 'edu';

build

cd /home/ubuntu/guestbook
chmod a+x mvnw
./mvnw clean package

실행

sudo systemctl stop nginx (80번 사용중)
sudo java -jar target/guestbook-0.0.1-SNAPSHOT.jar

접속

http://AWS우분투IP

 

⇒ 배포가 복잡.

⇒ 배포 자동화(CI/CD)가 필요


profile
Cloud/DevOps & Network Virtualization에 관심 있는 Engineer입니다. 🐳⚓️👨‍✈️

0개의 댓글