23.06.19

이준영·2023년 6월 19일
0
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로 이동함


내부적으로 메일 보내기



at 설치


상태 확인 : 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

스케줄러와 비슷한 형식으로 사용된다고 보면 된다.

특정 시간에 특정 작업을 하는 것

기본적으로 리눅스에 설치가 되어있다.


crontab 쓰기 : -e

crontab -l : e로 썼던 내용 읽기

1번 클릭시 nano로 들어감


nano 에디터에서 명령어 쓰고 저장 (30분에 저 명령어 실행)


-l로 썼던 내용 확인


30분에 list1.txt 만들어진 것 확인 가능


crontab -r : 삭제



주기 결정

분-시간-일-월-요일 순이고 괄호 안의 숫자 범위 내로 별 대신 입력 가능


주기별 예제



셸(shell) 스크립트

vi로 shell 스크립트 생성(.sh)


( 내용 적기 )


실행 권한이 없으므로 실행권한 주고 실행


이렇게 만들고 실행 시키면 list1 / list2가 생성된다.

at 응용

10:46에 list1.txt / list2.txt 생성(가능하면 다음부터는 절대경로(/home/mastger/hello.sh 사용)



자바 파일 실행

일반 실행 방법 말고 sh로도 실행 가능


at로 실행(mail에서 확인 가능)



파일 시스템 관련

파일 용량 확인 (bf)

BM : 메가 / BG : 기가


du ~~ : ~~ 바이트 단위로 전부 보여줌


du -s ~~ -> 읽기 쉽게(하나로 합쳐서 보여줌)


기가로 표현 : -sh


df : 파일시스템과 유사

du : 파일 목록과 유사



ip 확인

net-tools 설치


ipconfig ip 확인



리눅스에서 아파치 톰캣 다운

tar.gz로 다운받고 압축 풀기


확장자 확인


실행 : start.up(서비스용) catalina는 디버깅 용)


톰캣 실행 모습 확인


멈추기(shutdown.sh)



포트 번호 바꾸기

servel.xml - 환경설정 문서


vi로 xml 실행 모습


port 번호 저기서 바꾸기 (9090으로 해보기)


톰캣 키고... 9090으로 실행되는 모습



jsp 파일 넣기

webapps에 넣기


vi로 hello.jsp 쓰기


웹에서 실행



가상 디렉토리 만들어 실행

website1 디렉토리 만들고 안에 WEB-INF 넣기


hello.jsp 가져와서 넣기


아파치 키고 실행



home에서도 실행하게 하기

전과 동일하게 website2 폴더 만들고 WEB-INF, hello.jsp 집어넣기


vi에 써주기 (website2.xml)


실행



mariadb 설치 / 실행

설치


실행 확인( 설치하자마자 active 되어있음)


sudo mysql로 접속(그냥 mysql 접속 허가 안된다), 기본적으로 암호가 없음


이렇게 접속하면 암호 사용하여 접속 가능


계정 정보 확인 (비밀번호 설정 안되어있고 시스템에서 관리하는 패스워드 적용)



항상 암호를 검사하고 들어갈 수 있게끔 바꿔주기

  1. 암호생성


  1. 암호를 입력 안 해도 접속이 되지만, 정작 암호는 생성되어있는 문제 발생


  1. 설정한 패스워드가 적용될 수 있게끔 바꿔주기


  1. 권한 설정 다시 해주기


  1. 확인 해주기 (그냥 못 들어가고 암호를 입력해야 들어가게끔 설정됨)



내 ip로 접속하기

현재 localhost로는 접속 가능, 내 ip로는 접속 불가


mysql 접속하여 권한 생성 (% host에 권한이 새로 생성된 것 확인)


vi로 해당 경로로 이동 (sudo 써서 편집도 가능하게끔)


27라인 부분 가서 bind-address 바꿔주기


설정 적용 위해 마리아디비 restart


내 아이피로 접속 -> 성공


window에서도 접속 성공(원격 접속이 가능해진다, 백엔드는 원격 접속 자연스럽게 하기!!)



응용 : board 사용자 만들고 board 데이터베이스 만들기

create database board;

grant all privileges on board.* to 'board'@'%' identified by '1234';


원격도 접속 가능하다.



window 마리아디비 -> 리눅스 마리아디비로 옮기기

  1. mysqldump 사용하기


  1. 리눅스 mariadb에서 확인




방법2

  1. boot 설정하고 생성


  1. 프로퍼티 작성
#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

  1. 실행 클래스 작성 (미완성임)

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 포트번호 바꾸기

sshd는 포트번호 바꿔줘야함( 보안을 위해서 )

vi로 해당 경로 들어가기(sshd 환경설정 은 곳)


들어가서 포트번호 바꾸기


sshd restart 하고 실행하면 접속 안된다.


바꾼 포트번호 같이 입력하고 접속하면 접속 완료




putty도 포트 바꿔서 들어가기

profile
끄적끄적

0개의 댓글