pipeline {
    agent any
    environment {
        IMAGE_NAME = "test-api:lts"
        LOCAL_NAME = "depoly-server-root"
        REMOTE_NAME = "web-server-root"
        SOURCE_FILES = "*"
        REMOTE_DIRECTORY = "/test-api"
    }
    stages {
        stage('Git Clone') {
            steps {
                echo 'echo::Git Clone'
                git url: 'https://github.com/jaehun0210/test-api.git', branch: 'main', credentialsId: 'github_access_token_jaehun0210'
            }
        }
        stage('Docker Build Image') {
    steps {
        echo 'echo::Docker Build Image'
        script {
            sshPublisher(
                        publishers: [
                            sshPublisherDesc(
                                configName: "${LOCAL_NAME}",
                                verbose: true,
                                transfers: [
                                    sshTransfer(
                                        execCommand: 
                                        """
                                        cd /jenkins/workspace/test-api-2 && pwd && docker build -t ${IMAGE_NAME} . && docker save ${IMAGE_NAME} > ${IMAGE_NAME}.tar
                                        """
                                    )
                                ]
                            )
                        ]
                    )
        }
    }
        }
        stage('Docker Depoly Image') {
    steps {
        echo 'echo::Docker Depoly Image'
        script {
            sshPublisher(
                        publishers: [
                            sshPublisherDesc(
                                configName: "${REMOTE_NAME}",
                                verbose: true,
                                transfers: [
                                    sshTransfer(
                                        execCommand: """pwd && docker load -i ${IMAGE_NAME}.tar && docker compose stop && docker compose up -d --build""", // 원격 명령 (비워둘 수 있음)
                                        execTimeout: 120000, // 명령 실행 제한 시간 (밀리초)
                                        flatten: false, // true로 설정하면 원격 경로에서 파일이 복사됩니다.
                                        makeEmptyDirs: false, // true로 설정하면 원격 디렉토리에 빈 디렉토리가 생성됩니다.
                                        noDefaultExcludes: false,
                                        patternSeparator: '[, ]+',
                                        remoteDirectory: "/",
                                        remoteDirectorySDF: false,
                                        removePrefix: '', // 원본 파일 경로에서 제거할 접두사
                                        sourceFiles: """${IMAGE_NAME}.tar, docker-compose.yml"""
                                    )
                                ]
                            )
                        ]
                    )
        }
    }
        }
    }
}

[apt 업데이트]

sudo apt-get update

 

[apt 설치]

sudo apt-get install openssh-server

 

[ssh 시작]

sudo systemctl start ssh

 

[시스템등록 후 자동시작]

sudo ststemctl enable ssh

[활성화]

sudo ufw enable

 

[비활성화]

sudo ufw disable

 

[상태조회]

sudo ufw status verbose

 

[ssh 허용]

sudo ufw allow 22/tcp, sudo ufw allow 22/udp

 

[ssh 차단]

sudo ufw deny 22/tcp, sudo ufw deny 22/udp

 

[ssh 삭제]

sudo ufw delete deny ssh/tcp, sudo ufw delete deny ssh/udp

 

[IP 허용]

sudo ufw allow from 192.168.0.1

sudo ufw allow from 192.168.0.0/24

 

[IP, PORT 허용]

sudo ufw allow from 192.168.0.1 to any port 22

sudo ufw allow from 192.168.0.0/24 to any port 22

[패키지 설치]

apt install 

 

[패키지 삭제]

apt remove

 

[레파지토리 인덱스 갱신]

apt update

 

[패키지 업그레이드]

apt upgrade

 

[패키지 검색]

apt search

 

[패키지 상세 정보 출력]

apt show

 

[패키지 리스트]

apt list

-APT 업데이트 업그레이드
sudo apt update
sudo  apt upgrade

-Mariadb 설치
sudo  apt install mariadb-server
sudo  apt install mariadb-client

-Mariadb 설정
sudo  mysql_secure_installation

-Mariadb 활성화
sudo systemctl enable mariadb

-Mariadb 시작
sudo  systemctl start mariadb

- mysql DB 접속

sudo mysql -u root -p


use mysql;

- DB 만들기
CREATE DATABASE 데이터베이스명;

- DB 확인하기
SHOW DATABASES;

- DB 삭제하기
DROP DATABASE 데이터베이스명;

-사용자 생성
로컬접속용
CREATE USER '사용자명'@'localhost' IDENTIFIED BY '비밀번호';
외부접속용
CREATE USER '사용자명'@'%' IDENTIFIED BY '비밀번호';

-사용자 확인
SELECT host, user, password, plugin FROM mysql.user;

-사용자 삭제
로컬접속용
drop user '사용자명'@'localhost';
외부접속용
drop user '사용자명'@'%';

-권한 부여
로컬접속용
grant all privileges on 데이터베이스명.* to '사용자명'@'localhost';
외부접속용
grant all privileges on 데이터베이스명.* to '사용자명'@'%';

-갱신
flush privileges;

// 비밀번호 변경
update mysql.user set password=password('root') where user='root'; 

sudo apt --install list | grep redis : 설치 확인 명령어

sudo  apt install redis : 설치 명령어

sudo  redis-server: 실행 명령어

sudo  redis-server --port 6380 : 실행 명령어 (포트지정)

redis-cli -p 6379, 접속 후 ping 입력 후 pong 응답받으면 성공 

docker ps : 현재 실행 중인 컨테이너 조회

docker ps -a : 모든 컨테이너 조회

 

docker build -t [생성할 이름] . : 새 이미지 생성
docker run -p 호스트 포트:컨테이너 포트 [이미지 이름] : 컨테이너 실행
docker run -d -p 호스트 포트:컨테이너 포트 [이미지 이름] : 백그라운드에서 컨테이너 실행


docker kill [이미지 이름] : 컨테이너 (Nginx 서버 종료)
docker container ls -a : 컨테이너 목록 조회
docker container rm [컨테이너ID] : 컨테이너 제거

 

docker images : 이미지 생성 및 목록 확인

docker rmi [이미지ID] : 이미지 삭제

docker rmi -f [이미지ID] : 이미지 강제 삭제

1. 우분투 시스템 패키지 업데이트
sudo apt update

2. 필요한 패키지 설치
sudo apt install apt-transport-https ca-certificates curl gnupg-agent software-properties-common

3. Docker의 공식 GPG키를 추가
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

4. Docker의 공식 apt 저장소를 추가
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"

5. 시스템 패키지 업데이트
sudo apt-get update

6. Docker 설치
sudo apt-get install docker-ce docker-ce-cli containerd.io

7. Docker가 설치 확인

7-1. 도커 실행상태 확인
sudo systemctl status docker

7-2. 도커 실행
sudo docker run hello-world

-Creation, Mounting, Updating, Destruction 으로 나눌 수 있음.

Creation : 컴포넌트 초기화 단계
-컴포넌트 초기화단계.
-사이클 중에 가장먼저 실행됨.
-컴포넌트가 DOM에 추가되기전임, 따라서 this.$el을 사용할 수 없음.
-created 훅은 먼저 부모 created 훅이 실행되고 자식이 created 훅이 실행됨.
-beforeCreate 훅과 created 훅이 존재함.

Mounting : DOM 삽입단계
-초기 렌더링 직전에 컴포넌트에 직접 접근할 수 있음. 서버렌더링에서는 지원하지 않음.
-컴포넌트 초기에 셋팅되어야할 데이터는 created 훅 단계에서 사용하는게 좋음.
-beforeMount 훅은 템플릿과 렌더함수들이 컴파일된 후에 첫 렌더링이 일어나기 직전에 실행됨.
-mounted 훅은 컴포넌트, 템플릿, 렌더링된 돔에 접근 가능.
-mounted 훅에서 mounted 훅 순서는 자식 mounted 훅이 실행되고 부모 mounted 훅이 실행됨.
-beforeMount 훅과 mounted 훅이 존재함.

Updating : 재랜더링 단계
-컴포넌트에서 사용되는 반응형 속성들이 변경되거나 어떤 이유로 재 렌더링이되면 실행됨.
-디버깅이나 프로파일링 등을 위해 컴포넌트 재 랜더링 시점을 알고싶을 때 사용하면됨.
-서버렌더링에서는 호출되지 않음.
-beforeUpdate 훅은 컴포넌트의 데이터가 변하여 업데이트 사이클이 시작될때 실행됨.
-beforeUpdate 훅은 DOM이 재 렌더링되고 패치되기 직전에 실행됨.
-beforeUpdate 훅은 재 랜더링 전의 새 상태의 데이터를 얻을 수 있고 더 많은 변경이 가능함. 이변경은 재 랜더링은 트리거되지 않음.

-updated 훅은 데이터가 변하여 재 렌더링이 일어날 후에 실행됨.
-updated 훅은 여기서 상태를 변경하면 무한루프에 빠질 수 있음. 모든 자식컴포넌트의 재 랜더링 상태를 보장하지는 않음.

Destruction : 해제 단계

-beforeDestroy 훅은 해제 되기 직전에 호출됨.
-beforeDestroy 훅은 이벤트리스너 또는 reactive subscription을 제거하고 싶으면 여기서 하면 좋음. 서버렌더링시 호출안됨.
-destroyed 훅은 해제된 후에 호출됨.
-destroyed 훅은 모든 리스너 하위인스턴스도 제거 및 해제됨. 서버렌더링시 호출안됨.

-------------------------------------------------------------------------------------------------------------------

컴포넌트에는 3가지로 이루어짐
- template : html, vue에서 제공하는 디렉티브, 템플릿, 다른 컴포넌트
- script : js 파일들
- style : css, scss 스타일 파일들

-------------------------------------------------------------------------------------------------------------------

assets : 정적인 자원 (img, js, css, font 등등)
components : .vue 파일 존재 (컴포넌트 존재)
router : .js 파일 존재 (http 사용, 또는 컴포넌트간에 통신을 위한 스크립트)
store : : .js 파일 존재 (vuex ??? 내용 존재)
view : .vue 파일 존재 (template, html, script, css 등등 내용이 존재)

Vue.js (JavaScript Framework) , 레퍼런스 : https://ojava.tistory.com/185

개발환경
-VS Code (툴)
-Node.js


1.VS Code 설치

URL = https://code.visualstudio.com/

-시스템 버전으로 설치한다 (유저버전도 있음)

2.Node.js 설치

URL = https://nodejs.org

cmd에서 버전확인 명령어
node -v
npm -v

vscode 터미널에서 npm init -y 명령어 실행하면 package.json 파일이 생성된다.

npm을 통해 Node Module를 설치하는 방법은 npm install [module] [option]이다.

express 설치 : npm install express --save


3. 크롬 브라우저에서 Vue.js devtools를 설치

https://chrome.google.com/webstore/detail/vuejs-devtools/nhdogjmejiglipccpnnnanhbledajbpd


4.vue CLI 3.0 설치

npm install -g @vue/cli 또는 yarn global add @vue/cli

버전확인 
vue --version

터미널에서 버전확인
vue.cmd --version


5.프로젝트 생성
vue create 프로젝트명 (케밥식으로 작성, ex : test-vue)

터미널에서 프로젝트 생성된다
vue.cmd create 프로젝트명

vue/cli 3.x 미만(1.x 혹은 2.x) 인 경우 : vue init webpack 프로젝트명

6.프로젝트 실행

실행 : npm run serve (프로젝트폴더로 이동 후 실행)
종료 : Ctrl + c

7.프로젝트 UI 실행

+ Recent posts