Ubuntu Linux4

준동이·2023년 6월 19일
0
1. 팀 프로젝트...
		개인 하고 싶은 프로젝트 ...
        1. 컨텐츠
        2. 기능
        		팀 구성 - 6명 ...
                * 카톡 ...
        		
                * 수요일까지 정하기
        * 팀 프로젝트를 위한 기획서를 발표 => 프로젝트 시작
        		1. 수준 높은 기능 구현
                2. 한 번 - 완벽 
                * 팀장 ... 프로그램 잘 못하는 사람이 팀장
                * 진행 사항 - 1주일 마다(팀원)이 발표 - 소스 공유 ... 줌 ...
        * 디자인(UI / UX)
        
2. linux - 패키지
			시스템 엔지니어(서버 애플리케이션 개발자)
            1. 시스템 관리
            		2. 보안
                    3 백업 / 보완
                    
            2. 자동화 프로그램 개발
            
            백엔드 프로그래머
            		(웹 개발 파트)
                    
            3. 디바이스 드라이버(시스템 스프트웨어 - 하드웨어 제어)
            		=> IoT 프로그래머
                    => robot
                    
                    
백엔드 프로그래머 (웹 개발)
		리눅스의 이해 정도
        		1. 기본 명령어
                		파일 / 디렉토리
                        문서 편집기
                        		vi		-> VScode
                        사용자 계정
                        		허가권, 소유권
                        프로세스 확인 명령(*)		=> java
                        
                        프로그램 설치(*)
                        		압축 - tar.gz
                                설치 
                                	dpkg
                                    apt / apt-get
                        
                2. 주기적인 실행
                		at			- 정해진 시간에 한 번
                        crontab		- 스케줄
                        리눅스에서 서비스(데몬 : 백스라운드 프로세스)로 실행
                        => 메일 형태
                        
                        1. 메일
                        2. at 설치, 설정
                        3. crontab 설치, 설정

sudo apt -y install postfix
sudo apt -y install mailutils

at 10:10 am
at 14:10 pm(x)
at 02:10 pm

mail

mail 설치

sudo apt -y install postfix 다운로드
postfix : 메일 서버 소프트웨어

사용자끼리 메시지 주고받기



설치하면 자동으로 뜨는 창, 로컬전용 선택하고(마우스로 조작 X) tab키로 확인, 취소 선택 가능.
그 이후 따로 설정하는 것 없이 확인 선택하여 설정 완료해주면 된다.



설치 확인

systemctl : 데몬을 관리하는 명령어
현재 실행되고 있는지 상태 확인 / q 누르면 나옴



설치 2



설치확인 2



실행 / 확인

내용 적고, 컨트롤 + d 누르면 빠져나옴



읽으면 메일박스쪽으로 보낸다.



다른 사용자에게 보내기

내부 메일용 / 1 하고 엔터해서 읽으면 됨.



at

at : 사용자가 특정 시간에 한 번만 실행되도록 작업을 예약하는 명령어

설치 / 확인

sudo apt-get -y install at로 다운로드 받음

systemctl status atd : 시스템에서 atd(at daemon)서비스의 상태를 확인하기 위한 명령어
설치와 동시에 돌아가고있음
( systemctl : 서비스의 상태확인, 시작 / 중지, 재시작, 활성화/비활성화 등)
( status : systemctl명령어의 하위 명령어 중 하나, 특정 서비스의 현재상태를 표시하는 데 사용)



실행 중지

systemctl stop atd 하면 at 실행 멈춤



실행 시작



실행 확인방법 2

ps : 프로세스 정보 표시
ps aux : 현재 실행중인 모든 프로세스의 상세한 정보 표시
( a:모든 사용자의 프로세스, u : 상세한 형식으로 출력하라는 옵션)
| (파이프) : 명령어를 연결하여 앞의 명령어의 출력을 뒤의 명령어의 입력으로 전달하는 기능

=> ps aux | grep atd : ps aux를 통해 실행 중인 모든 프로세스를 보고, 그 중에 atd라는 패턴을 가진 프로세스를 필터링하여 출력 / atd만 표시



등록

10시 13분에 ls -l 해달라고 설정

실제 10시 13분이 됐을 때 mail로 확인해보면 ls -l값이 있다.



at로 txt파일 생성 예약

아무런 값이 없으면 빈 껍데기 생성



확인해보면 list.txt가 생성이 되어있다. 정해준 시간에 확인 후 다시 mail로 확인하면 비어있는 것 확인 가능.
/var/spool/cron/atjobs/ : at 명령을 통해 예약된 작업의 실행 스크립트가 저장되는 디렉토리



crontab

주기적인 백업, 로그 파일 정리, 자동화된 스크립드 실행 등 다양한 용도로 사용.

https://jdm.kr/blog/2 <- 참고 (주기별 예제 잘 봐야함)

crontab은 기본적으로 설치되어있다.

crontab -l : crontab파일에 예약된 작업 목록을 표시하는 명령
즉, 현재 사용자의 crontab 파일에 등록된 작업들을 조회할 수 있다.



cron의 현재 서비스 상태를 보기



설정

crontab -e 하고 2번으로 들어감 / 1번은 나노로 들어간다



밑줄진 코드는 매시간 30분에 실행한다는 것



확인



crontab - r : crontab 파일 삭제 / 후 -l 로 확인



sh(셸) 스크립트

Shell : 셸은 사용자가 입력한 명령어를 해석하고 운영 체제에 전달하여 실행, 이를 통해 사용자는 운영체제의 다양한 기능을 활용 가능, 이 외에도 변수, 제어구조 등등.. 많은 기능을 가지고있다.

"#!/bin/sh 는 표준 셸을 나타낸다. 만약 다른 셸을 이요하려면 sh 부분을 바꿔줘야한다.



실행권한 확인 후 실행

실행권한 주고 실행하였음



list1, list2 생성



실행하면 list1.txt / list2.txt가 생성된 것을 볼 수 있음.



특정 시간에 hello.sh를 실행시키게 하기 ( 한 번 )

list1.txt / list2.txt는 rm 으로 다시 삭제해주었음

10시 48분에 실행되게 설정

10시 48분에 파일들이 설정 됨



자바 프로그램 실행



mail로 왔다 확인



filesystem

hdd, usb, cd 등을 넣었을때 확인도 가능

df

bm 하면 메가바이트 단위
bg 하면 기가바이트 단위



du 공간 계산

df
du
	hdd

엄청 많이나옴

.
.
.



간락하게 보기



네트워크 명령어로 보기

ifconfig 하려면 툴을 다운받아야한다.



설치하고 확인해보기



ping 테스트

cmd창에서 리눅스 확인해보기



리눅스에서 윈도우 확인해보기
(집 아이피) 리눅스에서 윈도우 ping을 입력하면 무한반복으로 계속 뜬다.



서버 구축

아파치톰캣이나 마리아디비 등 설치하여 실행



아파치톰캣 설치

https://tomcat.apache.org/ -> 메뉴에서 tomcat9 -> 밑의 이미지에 표시된 것 다운



다운로드 폴더에서 현재 위치로 옮겨줌



압축 풀기



리눅스에는 sh확장자 사용.



실행

..../catalina.sh		- System.out.println		: debugging
..../startup.sh			- X							: service



톰캣 실행되는지 확인

복잡한 내용이 출력되만 실행되는지 확인하는 것



톰캣 멈추기

멈추고 실행 확인해보면 실행 안되고있음.



master에서 실행시키기

경로를 입력하여 실행시켜주었음.



멈추기



포트번호 바꾸기 - server.xml (환경설정 문서)



69번째 줄에 있는 port번호 변경



후 실행



jsp문서 넣기

윈도우랑 같은 구조로 webapp에 들어감



jsp 넣기

원래는 jdk가 필요하지만 설치가 되어있어서 괜찮다.

hello.jsp파일 열기

내용 작성

출력 / 확인



특정 디렉토리 만들고 jsp 실행시키기

경로 하나 위로 변경하여 webapps로 변경하였음


그리고 website1이라는 디렉토리 생성 후 -p 사용하여 디렉토리 안에 WEB-INF 디렉토리를 생성해주었음.
( -p는 디렉토리 안에 디렉토리 만드는 명령어 )
그리고 ./ROOT/hello.jsp 를 website1/에 복사해주었음 (cp : 복사)
복사된 것 확인 후, 톰캣 실행하여 확인


그럼 website1의 hello.jsp가 정상 실행된 것을 볼 수 있음.



가상 디렉토리로 잡아서 실행하기

website2 디렉토리 생성 후 -> -p명령문 이용해 website2 안에 WEB-INF디렉토리 생성
그리고 webapp/website1/hello.jsp를 website2/에 복사



home에서 실행해보기

경로를 변경 후 vi website2.xml 오픈


website2.xml 작성


톰캣 실행


톰캣 실행 확인



데이터베이스 연결

mariadb 다운로드



다운 받자마자 실행되는 것을 볼 수 있음.



데이터베이스 접속

시스템 권한이여서 sudo를 붙여줘야한다.



암호 없어도 접근이 된다. ( password : 시스템에서 관리하는 password )



암호를 통해 접속하게 설정하기

  1. 암호를 설정하고 접속을 하였지만, 입력을 안해도 접속이 되는 문제 발생, select해보면 root에 암호가 걸려있는 것을 볼 수 있음.



  1. 암호입력을 받아서 접속하게 설정



  1. 권한 주기



  1. 이제는 설정했던 암호를 입력해야 접속이 가능하다. / 암호를 입력해주지않으면 접속이 안된다.



ip로 접속하기

-h localhost로도 접속이 가능하다.



-h ip 로는 접속이 가능하지 않다.



mysql -u root -p 로 접속 후 -> % host에게 권한을 생성해주고 비밀번호 설정해주었음.



다시 ip주소로 접속해도 접속은 안된다.



MariaDB 서버의 구성 파일인 50-server.cnf 파일 열기



그리고 설정해주기 ( 복사해서 기존 것은 주석처리하고 새로 설정해주었음. )
bind-address = 0.0.0.0 : MariaDB 서버가 바인딩(bind)되는 IP 주소를 나타냄
기본적으로 MariaDB 서버는 모든 네트워크 인터페이스에서 접속을 허용하기 위해 bind-address 설정이 0.0.0.0로 설정 => 서버가 모든 ip 주소에서의 연결을 허용한다는 것.



Mariadb를 재시작하는 명령

그러면 이렇게 비밀번호 치는 것이 나오고 비밀번호 입력 후 인증 누르면 됨.



systemctl status mariadb로 실행 상태를 확인



그러면 이제 ip값으로 접속이 가능하다.



window의 cmd에서도 원격 접속하기 가능

이렇게 서로 같은 database를 가지고 있는 것을 볼 수 있다.



board 접속 데이터 만들기

데이터베이스명 	board
사용자 아이디 	board
암호				1234


그러면 window의 cmd에서도 원격으로 접속이 가능하다.



우편번호 윈도우 mariadb -> Linux mariadb 백업

우편번호
		윈도우 mariadb -> Linux mariadb
        		백업 ... Java
        
       	Maven ... 



eclipse로 하기

boot 프로젝트 생성




application.properties

# jdbc1
spring.datasource1.driver-class=org.mariadb.jdbc.Driver
spring.datasource1.jdbc-url=jdbc:mariadb://localhost:3306/project
spring.datasource1.username=project
spring.datasource1.password=1234

# jdbc2
spring.datasource2.driver-class=org.mariadb.jdbc.Driver
spring.datasource2.jdbc-url=jdbc:mariadb://192.168.253.130/board
spring.datasource2.username=board
spring.datasource2.password=1234



JdbcEx01Application.java

package com.example.jdbc;

import javax.sql.DataSource;

import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.jdbc.DataSourceBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Primary;

@SpringBootApplication
public class JdbcEx01Application implements CommandLineRunner {
	
	@Bean
	@Primary
	@ConfigurationProperties( "spring.datasource1" )
	public DataSource bootdb1DataSource() {
		return DataSourceBuilder.create().build();
	}
	
	@Bean
	@Primary
	@ConfigurationProperties( "spring.datasource2" )
	public DataSource bootdb2DataSource() {
		return DataSourceBuilder.create().build();
	}
	
	public static void main(String[] args) {
		SpringApplication.run(JdbcEx01Application.class, args);
	}

	@Override
	public void run(String... args) throws Exception {
		// TODO Auto-generated method stub
		
		System.out.println(bootdb1DataSource().getConnection());
		System.out.println(bootdb2DataSource().getConnection());
		
	}

}



window의 cmd에서 하기

project 에 zipcode 확인



mysqldump로 Linux에 백업해주기



원격 접속하여 Linux에 들어갔는지 확인



원격에 있는 리눅스 관리

원격에 있는 리눅스 관리
		터미널(CUI)	-	속도가 빠르다.
        		1. telnet - 전송에 데이터가 평문
                2. ssh (Secure Shell) - 전송데이터가 암호화(이걸 더 많이 사용)
                		server - openSSH - 이걸로 접속하면 원격 가능
                        client
                        		window - putty
                                linux - ssh
                
        윈도우(GUI)	-	속도가 느림 / 편리하게 관리

원격관리도구가 설치되어있지 않다는 것

다운로드



원격에서 접속

로그아웃



윈도우에서 우분투로 접속하기 - putty

https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html
위의 링크로 들어가서 밑에 사진에 밑줄쳐져있는 것을 다운



Host Name과 Saved Session에 원격으로 접속할 Linux의 ifconfig 적어줌
Port는 22가 기본
Save하면 저장



Accept 클릭



putty 에서 master 접속



Linux에서 w 로 접속에 대한 정보 볼 수 있음.



연결 확인 - 연결 끊어보기
putty에서 exit로 나가고 우분투에서 다시 확인해보기
그럼 사라진 것을 볼 수 있음.



putty에서 우분투 원격 리부팅 시키기
sudo reboot 입력 후 암호 입력



포트호는 바꿔줘야한다. / sshd의 환경설정



포트번호를 변경해주었음



그럼 putty에서도 Port번호 변경해서 들어가 줘야함.

다시 해보기

새로운 우분투 리눅스에서 해보기
1. sshd 먼저 설정
		원격 설치
        	apache-tomcat
            mariadb
            
2. aws 
profile
개발자 꿈나무

0개의 댓글