기본키 + 외래키 + 값 자동 증가 적용

CREATE TABLE [테이블 이름] (
  [칼럼 이름] (속성) NOT NULL AUTO_INCREMENT,
  [칼럼 이름] 속성 ,
  [칼럼 이름] 속성 ,
  PRIMARY KEY (칼럼 이름),
  CONSTRAINT [제약 이름] FOREIGN KEY (칼럼 이름) REFERENCES [테이블 이름] (칼럼 이름));

 

-예시-
CREATE TABLE comments (
  comment_id int(11) NOT NULL AUTO_INCREMENT,
  content_id int(11) ,
  comment varchar(255) ,
  PRIMARY KEY (comment_id),
  CONSTRAINT fk_contents FOREIGN KEY (content_id) REFERENCES contents (id));

 

vue3를 사용하여 게시판 화면을 개발하다가 데이터베이스와 통신하며 데이터를 조회하거나 수정 등의 기능이 필요해서 

프록시 서버를 구축해보기로 했다.

node.js의 기능 중 express를 프레임워크로 사용하여 구축하였다.

프론트서버 + express(백엔드 서버) + Database 구성이기 때문에 Databas가 미리 설치 및 구성이 되어있어야 한다. 

단순 테스트이기 때문에 서버를 외부로 나누진 않고 모두 로컬 PC 에서 진행했다.

 

vue 3

Node.js v20.12

Mysql 8.0

 

 

express 서버를 만들기 전에 먼저 프론트에서 클라이언트의 요청을 proxy를 통해

express 서버로 전달되게 설정했다.

테스트했던 프론트엔드 라이브러리가 Vue3 였기 때문에 vue.config.js를 수정한다.

http://localhost:3000 주소가 express가 통신하는 주소가 된다.

vue.config.js

 

 

 

프론트엔드 역할을 하는 서버의 package.json에도 proxy 설정을 추가해줘야 한다.

프론트에서 package.json에 proxy 설정 추가

 

 

프론트 서버에서의 프록시 설정이 완료되었고, 실제로 프록시를

사용하는 코드를 작성한다.

axios 모듈을 사용했으며, 라우팅 목록에 '/test' 는 없기 때문에 프록시 주소로 요청하게 된다.

프론트에서 프록시를 통해 리퀘스트를 요청

 

 

 

 

이제 백엔드 서버를 만들기 위해 다른 디렉터리에서 새 프로젝트를 시작한다.

먼저 익스프레스와 마이에스큐엘 패키지를 다운 받는다.

> npm install express mysql

 

 

package.json 파일의 "scripts" 부분에 "start" 명령어를 사용할 수 있게 추가한다

scripts 부분 수정

 

 

express와 데이터베이스를 연동시키기 위해 먼저 데이터베이스 접속 정보를

database.js 파일을 생성하여 작성한다.

database.js 파일 작성

 

 

index.js 파일을 만들고 아래와 같이 전부 작성한다.

 

 

이제 통신을 테스트하기 위해 express 서버를 가동시킨다

> npm start

'express server listening on port 3000' 이라는 메시지가 출력되면서

터미널이 입력 불가 대기 상태가 된다.

 

 

프론트 서버에서 작성한 requestAPI 메서드를 실행 시키면 아래와 같은 내용이 express 터미널에 출력된다.

Database의 내용이 정상적으로 조회되면 proxy를 통한 express 백엔드 서버 구축이 성공한 것이다.

express 코드를 수정할 경우  express server를 재시작 해주어야 수정한 코드가 반영된다.

 

 

결과 화면

 

 

 

 

 

axios를 사용할 때 post 방식으로 파라미터를 전달 할 때는 리퀘스트의 .body를 통해 파라미터를

받을 수가 있다.

 

 

express 서버의 터미널에 body의 내용이 콘솔로 출력된다.

 

1. 나의 commit을 다른 git에 병합하는 것은 불가능 한 것 같다

git commit을 실행하고 해당 커밋을 다른 프로젝트의 브랜치에 병합 하려고 하였으나 병합이 되지 않았다.

디렉터리 구조와 파일 이름까지 동일하게 작업을 했지만 깃허브에서는 비교할 커밋이 존재하지 않는 완전히 다른 커밋이라고 출력하며 병합을 시켜주지 않았다.

이유는 git 파일 자체가 다르기 때문에 발생한 것이였다.

A 디렉터리에 깃으로 형상관리를 하고 있고, B디렉터리에서도 같은 내용으로 작업을 한다고 해도,

B디렉터리가 A디렉터리의 깃을 복사하여 작업하는게 아니면 전혀 다른 git 파일이기 때문에 똑같은 디렉터리 구조와 파일이라고 해도 전혀 관련이 없는 git 파일이 되는 것이다.

나무에 비유하면 A나무에서 자라난 가지와 똑같이 생긴 B 나무의 가지를 A 나무에게 붙여줄 수 없다.

모양은 똑같을 지언정 뿌리가 다른 가지이기 때문이다

당연한 소리 같겠지만 팀단위로 깃을 사용할 경우, 최조로 작성된 git 프로젝트를 git clone하고 복사한 파일에서 작업을 시작해야 한다.

 

2. pull request가 승인되어 병합된 브랜치에는 다시 수정된 commit을 push 할 수 없는 것 같다.

작업이 완료되어 작업 결과를 커밋하고 pull request 요청을 하고난 뒤, 관리자께서 병합을 진행해주셨다.

나의 작업 브랜치를 병합한 main 브랜치를 clone 명령어로 받아서 페이지가 정상적으로 동작하는지 테스트 하였으나 CSS쪽에 문제가 있었다.

오류 부분을 수정한 후 다시 병한된 내 작업 브랜치에 push 명령어로 작업 내역을 올리려고 하였으나 에러가 발생하면서 거절당했다. 

non-fast-forward 에러가 발생했는데 구글링을 해보니 '다른 사용자가 동일한 분기에 푸시한 경우 내가 다시 푸시할 수

없다'는 내용이었다. 

병합이 된 브랜치는 이미 역할이 끝났기 때문에 같은 분기의 내용을 다시 올릴 수 없다는 내용같아 보였다.

해결 방안으로는 fetch 명령어와 pull 명령어를 사용하여 다시 시도하라는 글이 있었지만,

fetch와 pull 명령어를 사용하여 git의 분기를 과거가 아닌 현재로 바꾸는 결과이기 때문에  내가 원하는 결과가 아니라고  생각되었다.

가장 일반적인 방법은 새 브랜치를 생성하고 브랜치를 새로 생성한 이유를 잘 작성한 뒤 새로운 commit 내역을 다시 깃허브에 push 하면 된다고 한다.

 

'Git' 카테고리의 다른 글

Git 공부중  (0) 2024.05.02

깃과 파일의 상태 확인

git status

 

수정된 파일의 수정 목록을 자세히 보기

git diff

 

깃 관리 목록에 파일 추가하기

git add

 

파일 수정 내역 확인

git diff

 

 

깃 관리 목록에 있는 파일들의 현재  작업 상태를 저장하기(커밋하기)

git commit

 

커밋된 목록 확인 명령어

git log

 

 

 

 

실제 로컬 디렉터리에 있는 파일을  가장 최근에 커밋 해둔 시점으로 되돌리기 (단순 변경사항 취소와 같음)

git restore 파일명

git restore --source 커밋해시값 파일명  <=(특정 커밋 지점으로 파일 상태를 되돌리기)

git restore --staged 파일명 <= (???)

 

커밋을 삭제

git revert 커밋해시값 <=(?? ㅇㅣ해가 안됨 조사 더 필요)

 

파일과 깃까지 함께 특정 커밋으로 되돌리기

git reset --hard 커밋해시값

 

 

 

 

 

메인 브랜치 이름 변경하기

git branch -M main => (메인 또는 원하는 이름으로 설정할 것)

 

새 브랜치 만들기

git branch 브렌치이름


브랜치 삭제하기

git branch -d 브렌치이름

 

현재 사용중인 브랜치를 다른 브랜치로 변경하기

git switch 브렌치이름

 

 

깃허브 원격 저장소에 로컬 깃을 연결하기

git remote add 원하는이름 https://github.com/Hansangbong/first-shyarbong =>(자신의 레포지토리 주소)

 

깃허브에 깃 내용을 올리기

git push -u origin main  => git push -u (원격저장소에 연결할 때 사용한 이름) (연결된 브랜치)

 

깃허브에 있는 브랜치 중 특정 브랜치만 내려받기

 git clone --branch <브랜치 이름> <원격래포주소>

 

깃허브 연결 삭제

git remote remove (origin 등 원격 연결 이름)

 

깃허브 원격 브랜치 목록 확인

git branch -r

 

깃허브의 특정 원격 브랜치를 가져오기

git checkout -t <브랜치이름>

 

트러블 슈팅 목록

error: failled to push some refs to 'https://github.com/Hansangbong/first-shyarbong/AIFFEL_TFMaster.git'

 

https://iambeginnerdeveloper.tistory.com/entry/github-%EC%97%90%EB%9F%AC-%ED%95%B4%EA%B2%B0%ED%95%98%EA%B8%B0-error-failed-to-push-some-refs-to-warning-LF-will-be-replaced-by-CRLF-in-%EA%B0%95%EC%A0%9C-push-%ED%95%98%EC%A7%80%EB%A7%88%EC%84%B8%EC%9A%94%EC%A0%9C%EB%B0%9C

'Git' 카테고리의 다른 글

깃과 깃허브를 사용하면서 겪은 이슈  (0) 2024.05.30

리눅스 환경에서 파일 확인 시 한글이름으로 된 파일 또는 파일명이 깨져보이는 파일은 윈도우에서 삼바로 연결했을 때 보이지 않는 경우가 있습니다.

smb 설정파일에 아래 내용을 추간 후 데몬을 재시작하니 해결되었습니다.

 

vi /etc/samba/smb.conf

 

[gloval]

dos charset = cp949
display charset = cp949
unix charset = cp949

'기타' 카테고리의 다른 글

잇힝  (0) 2019.01.30

(linux)

owasp zap을 설치하기 위해 먼저 java를 설치해야 합니다.

# yum install java

 

java 설치 후 리눅스용 owasp zap 설치 파일을 다운받습니다.

 

# wget https://github.com/zaproxy/zaproxy/releases/download/v2.9.0/ZAP_2_9_0_unix.sh

 

설치 파일을 실행합니다.

# sh ZAP_2_9_0_unix.sh

 

언어 선택 화면이 출력됩니다. 기본 언어인 English를 선택했습니다.

 

설치를 계속 진행할지 묻는 화면입니다. o를 입력하여 계속 진행합니다.

 

라이선스 약관에 대한 안내 구문이 출력됩니다.

여러 단락이 나오는데 계속 엔터를 입력해서 진행합니다.

 

라이선스 약관에 동의하는지 묻는 구문이 나옵니다.

설치 진행을 위해 1을 입력합니다.

 

설치 경로를 변경할지 묻는 구문입니다. 기본 디렉터리에 설치하기 위해 Standard를 선택했습니다.

여기까지 입력하면 설치가 완료됩니다.

 

취약점 점검 테스트를 위해 공격 명령어를 실행합니다.

sh ./zap.sh -cmd -quickurl http://test.sangbong.xyz -quickout report -quickprogress

 

 

 

(windows)

owasp zap 사용을 위해 먼저 java를 설치해야 합니다.

오라클 사이트에서 java 설치 프로그램을 다운받고 설치를 진행했습니다.

www.oracle.com

 

자바 설치 후 OWASP ZAP을 설치합니다.

www.zaproxy.org/download/

 

동의 선택 후 계속 진행합니다.

 

잠시 기다리면 설치가 완료됩니다.

 

OWASP ZAP 실행 후 초기 화면입니다.

시작 버튼을 클릭합니다.

 

취약점 공격 테스트를 위해 'Run an automated scan' 버튼을 클릭합니다.

 

테스트할 도메인은 입력한 후 '공격' 버튼을 클릭합니다.

 

점검이 완료되면 결과에 대한 보고서를 받을 수 있습니다.

https://centos.pkgs.org/6/epel-x86_64/httpd-itk-2.2.22-7.el6.x86_64.rpm.html

 

httpd-itk-2.2.22-7.el6.x86_64.rpm CentOS 6 Download

/usr/sbin/httpd.itk /usr/share/doc/httpd-itk-2.2.22/README.Fedora

centos.pkgs.org

 

'APM' 카테고리의 다른 글

mysql 점검  (0) 2020.06.28
open jdk 설치  (0) 2020.04.08
그누보드 와 영카트 설치  (0) 2020.01.12
Ubuntu APM 컴파일 설치  (0) 2019.12.14
centos6 apache2.2 + php5.3 + mysql5.1  (0) 2019.06.26

파일의 현재 설정된 언어셋 확인

# file -i test.html

 

현재 서버에서 사용 가능한 언어셋들 확인 (iconv가 세팅되어 있어야 가능)

# iconv --list

 

언어셋 변경

# iconv -t EUC-KR test.html

 

언어셋 변경 시도 시 cat 출력이 되면서 변경이 되지 않는 경우가 있다.

파일을 새로 생성하는 옵션을 추가하여 해당 파일을 덮어쓰면 해결되었다.

# iconv -t EUC-KR test.html -o test.html

 

출처:https://m.blog.naver.com/PostView.nhn?blogId=antimidal&logNo=220192718002&proxyReferer=https:%2F%2Fwww.google.com%2F

'스크립트' 카테고리의 다른 글

자동 백업 스크립트  (0) 2019.04.27

+ Recent posts