linux - 패키지 (리눅스 구조 기억하기 - 하드웨어..리눅스 커널..셸..응용프로그램..)
1.시스템 엔지니어(서버 애플리케이션 개발자)
시스템 관리
- 보안
- 백업/복원
자동화 프로그램 개발
2.백엔드 프로그래머 (웹 개발)
3.디바이스 드라이버(시스템 소프트웨어 - 하드웨어 제어)
=> iot 프로그래머 ===> 로봇
백엔드 프로그래머
1. 기본 명령어
파일 / 디렉토리
문서 편집기
사용자 계정(허가권 / 소유권)
프로세스 확인 명령어
프로그램 설치
압축 - tar.gz
설치 - dpkg / apt, apt-get
2. 주기적인 실행
at - 정해진 시간에 한번
crontab - 스케줄
리눅스 서비스(데몬 : 백그라운드 프로세스)로 실행
=> 실행 결과 : 메일 형태로 보여줌
->
1. 메일 시스템 가동 확인
2. at 시스템 설치 / 설정
3. 또는 crontab 설치 / 설정
내부적으로 메세지를 주고 받기 위해 postfix 설치(로컬 전용으로 설치)
설치된 것 확인하기(active 되어 있으므로 현재 실행 중인 상태인 것을 알 수 있음, q누르면 멈춤)
mailutils도 설치
mail master(받는 사람) : 메일 보내기
cc: 첨부, 메일 보내기 : ctrl + d
mail을 쳐보면 mail이 온 것 확인 가능, 다 읽고 나가면 mail이 mailbox로 이동함
내부적으로 메일 보내기
상태 확인 : system status(atd는 at demon)
상태 멈추기 : system stop ~~
상태 시작 : system start ~~
start 해주면 다시 시작
프로세스 검색으로도 실행 확인 가능
at 사용 - 10:13분에 ls -l 해달라는 요청을 한 것(at -l = atq 해도 된다)
10:13에 mail을 치면 나오는 모습
10:17에 list.txt에 실행 결과 넣으라는 뜻
list.txt에 담겨있는 모습(여기에 담았기 때문에 mail로는 오지 않음)
시간에서 pm을 붙이는 순간 (예시) 14시가 아니라 02라고 쳐야한다.
at 14 : 10 pm (x)
at 02 : 10 pm (o)
스케줄러와 비슷한 형식으로 사용된다고 보면 된다.
특정 시간에 특정 작업을 하는 것
기본적으로 리눅스에 설치가 되어있다.
crontab 쓰기 : -e
crontab -l : e로 썼던 내용 읽기
1번 클릭시 nano로 들어감
nano 에디터에서 명령어 쓰고 저장 (30분에 저 명령어 실행)
-l로 썼던 내용 확인
30분에 list1.txt 만들어진 것 확인 가능
crontab -r : 삭제
분-시간-일-월-요일 순이고 괄호 안의 숫자 범위 내로 별 대신 입력 가능
vi로 shell 스크립트 생성(.sh)
( 내용 적기 )
실행 권한이 없으므로 실행권한 주고 실행
이렇게 만들고 실행 시키면 list1 / list2가 생성된다.
10:46에 list1.txt / list2.txt 생성(가능하면 다음부터는 절대경로(/home/mastger/hello.sh 사용)
일반 실행 방법 말고 sh로도 실행 가능
at로 실행(mail에서 확인 가능)
파일 용량 확인 (bf)
BM : 메가 / BG : 기가
du ~~ : ~~ 바이트 단위로 전부 보여줌
du -s ~~ -> 읽기 쉽게(하나로 합쳐서 보여줌)
기가로 표현 : -sh
df : 파일시스템과 유사
du : 파일 목록과 유사
net-tools 설치
ipconfig ip 확인
tar.gz로 다운받고 압축 풀기
확장자 확인
실행 : start.up(서비스용) catalina는 디버깅 용)
톰캣 실행 모습 확인
멈추기(shutdown.sh)
servel.xml - 환경설정 문서
vi로 xml 실행 모습
port 번호 저기서 바꾸기 (9090으로 해보기)
톰캣 키고... 9090으로 실행되는 모습
webapps에 넣기
vi로 hello.jsp 쓰기
웹에서 실행
website1 디렉토리 만들고 안에 WEB-INF 넣기
hello.jsp 가져와서 넣기
아파치 키고 실행
전과 동일하게 website2 폴더 만들고 WEB-INF, hello.jsp 집어넣기
vi에 써주기 (website2.xml)
실행
설치
실행 확인( 설치하자마자 active 되어있음)
sudo mysql로 접속(그냥 mysql 접속 허가 안된다), 기본적으로 암호가 없음
이렇게 접속하면 암호 사용하여 접속 가능
계정 정보 확인 (비밀번호 설정 안되어있고 시스템에서 관리하는 패스워드 적용)
현재 localhost로는 접속 가능, 내 ip로는 접속 불가
mysql 접속하여 권한 생성 (% host에 권한이 새로 생성된 것 확인)
vi로 해당 경로로 이동 (sudo 써서 편집도 가능하게끔)
27라인 부분 가서 bind-address 바꿔주기
설정 적용 위해 마리아디비 restart
내 아이피로 접속 -> 성공
window에서도 접속 성공(원격 접속이 가능해진다, 백엔드는 원격 접속 자연스럽게 하기!!)
create database board;
grant all privileges on board.* to 'board'@'%' identified by '1234';
원격도 접속 가능하다.
방법2
#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.128:3306/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
@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) - 속도 느림 / 관리 편리
현재 원격 관리 도구 설치 x
설치 후 가동 확인
접속하기 / 접속끊기
putty 다운로드 ( https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html )
putty 실행 (설정화면 나옴)
accept 클릭하면 실행
master / master 비밀번호 치면 접속
리눅스에서 접속 중인 기록 확인 가능 ( w )
putty exit로 나가고 다시 w보면 접속 중 기록 없어져있음
이렇게 원격에서 리부팅까지 시킬 수 있다.
sshd는 포트번호 바꿔줘야함( 보안을 위해서 )
vi로 해당 경로 들어가기(sshd 환경설정 은 곳)
들어가서 포트번호 바꾸기
sshd restart 하고 실행하면 접속 안된다.
바꾼 포트번호 같이 입력하고 접속하면 접속 완료
putty도 포트 바꿔서 들어가기