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
sudo apt -y install postfix 다운로드
postfix : 메일 서버 소프트웨어
사용자끼리 메시지 주고받기
설치하면 자동으로 뜨는 창, 로컬전용 선택하고(마우스로 조작 X) tab키로 확인, 취소 선택 가능.
그 이후 따로 설정하는 것 없이 확인 선택하여 설정 완료해주면 된다.
systemctl : 데몬을 관리하는 명령어
현재 실행되고 있는지 상태 확인 / q 누르면 나옴
내용 적고, 컨트롤 + d 누르면 빠져나옴
읽으면 메일박스쪽으로 보낸다.
내부 메일용 / 1 하고 엔터해서 읽으면 됨.
at : 사용자가 특정 시간에 한 번만 실행되도록 작업을 예약하는 명령어
sudo apt-get -y install at로 다운로드 받음
systemctl status atd : 시스템에서 atd(at daemon)서비스의 상태를 확인하기 위한 명령어
설치와 동시에 돌아가고있음
( systemctl : 서비스의 상태확인, 시작 / 중지, 재시작, 활성화/비활성화 등)
( status : systemctl명령어의 하위 명령어 중 하나, 특정 서비스의 현재상태를 표시하는 데 사용)
systemctl stop atd 하면 at 실행 멈춤
ps : 프로세스 정보 표시
ps aux : 현재 실행중인 모든 프로세스의 상세한 정보 표시
( a:모든 사용자의 프로세스, u : 상세한 형식으로 출력하라는 옵션)
| (파이프) : 명령어를 연결하여 앞의 명령어의 출력을 뒤의 명령어의 입력으로 전달하는 기능
=> ps aux | grep atd : ps aux를 통해 실행 중인 모든 프로세스를 보고, 그 중에 atd라는 패턴을 가진 프로세스를 필터링하여 출력 / atd만 표시
아무런 값이 없으면 빈 껍데기 생성
확인해보면 list.txt가 생성이 되어있다. 정해준 시간에 확인 후 다시 mail로 확인하면 비어있는 것 확인 가능.
/var/spool/cron/atjobs/ : at 명령을 통해 예약된 작업의 실행 스크립트가 저장되는 디렉토리
주기적인 백업, 로그 파일 정리, 자동화된 스크립드 실행 등 다양한 용도로 사용.
https://jdm.kr/blog/2 <- 참고 (주기별 예제 잘 봐야함)
crontab은 기본적으로 설치되어있다.
crontab -l : crontab파일에 예약된 작업 목록을 표시하는 명령
즉, 현재 사용자의 crontab 파일에 등록된 작업들을 조회할 수 있다.
cron의 현재 서비스 상태를 보기
crontab -e 하고 2번으로 들어감 / 1번은 나노로 들어간다
밑줄진 코드는 매시간 30분에 실행한다는 것
확인
crontab - r : crontab 파일 삭제 / 후 -l 로 확인
Shell : 셸은 사용자가 입력한 명령어를 해석하고 운영 체제에 전달하여 실행, 이를 통해 사용자는 운영체제의 다양한 기능을 활용 가능, 이 외에도 변수, 제어구조 등등.. 많은 기능을 가지고있다.
"#!/bin/sh 는 표준 셸을 나타낸다. 만약 다른 셸을 이요하려면 sh 부분을 바꿔줘야한다.
실행권한 주고 실행하였음
실행하면 list1.txt / list2.txt가 생성된 것을 볼 수 있음.
list1.txt / list2.txt는 rm 으로 다시 삭제해주었음
10시 48분에 실행되게 설정
10시 48분에 파일들이 설정 됨
hdd, usb, cd 등을 넣었을때 확인도 가능
bm 하면 메가바이트 단위
bg 하면 기가바이트 단위
df
du
hdd
엄청 많이나옴
.
.
.
간락하게 보기
ifconfig 하려면 툴을 다운받아야한다.
설치하고 확인해보기
cmd창에서 리눅스 확인해보기
리눅스에서 윈도우 확인해보기
(집 아이피) 리눅스에서 윈도우 ping을 입력하면 무한반복으로 계속 뜬다.
아파치톰캣이나 마리아디비 등 설치하여 실행
https://tomcat.apache.org/ -> 메뉴에서 tomcat9 -> 밑의 이미지에 표시된 것 다운
..../catalina.sh - System.out.println : debugging
..../startup.sh - X : service
복잡한 내용이 출력되만 실행되는지 확인하는 것
멈추고 실행 확인해보면 실행 안되고있음.
윈도우랑 같은 구조로 webapp에 들어감
원래는 jdk가 필요하지만 설치가 되어있어서 괜찮다.
hello.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/에 복사
경로를 변경 후 vi website2.xml 오픈
website2.xml 작성
톰캣 실행
톰캣 실행 확인
다운 받자마자 실행되는 것을 볼 수 있음.
시스템 권한이여서 sudo를 붙여줘야한다.
암호 없어도 접근이 된다. ( password : 시스템에서 관리하는 password )
-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
암호 1234
그러면 window의 cmd에서도 원격으로 접속이 가능하다.
우편번호
윈도우 mariadb -> Linux mariadb
백업 ... Java
Maven ...
# 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
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());
}
}
원격에 있는 리눅스 관리
터미널(CUI) - 속도가 빠르다.
1. telnet - 전송에 데이터가 평문
2. ssh (Secure Shell) - 전송데이터가 암호화(이걸 더 많이 사용)
server - openSSH - 이걸로 접속하면 원격 가능
client
window - putty
linux - ssh
윈도우(GUI) - 속도가 느림 / 편리하게 관리
원격관리도구가 설치되어있지 않다는 것
다운로드
로그아웃
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