SCP : Secure copy의 줄임말로 ssh프로토콜을 이용하여 로컬 호스트와 원격 호스트간 파일을 전송하는 수단이다. 

 

 

옵션

-r : 하위의 디렉터리 및 파일까지 복사
-p : 원본 파일의 변경 시간, 접근 시간, 퍼미션을 보존
-P port : 포트 지정 (ssh 프로토콜 포트가 22번이 아닌 경우 사용)
-v : 상세 정보 출력
-F ssh_config : 설정파일 지정
-c : 압축 복사
-a : 아카이브 모드 복사

 

 

1. 로컬 -> 원격지 (파일 보내기)

scp [옵션] [원본 경로] [원격지user명]@[원격지IP]:[복사할 경로]

1-1. 단일파일

scp /home/tester/temp/abc.txt root@xxx.xxx.xxx.xxx:/test

1-2. 복수파일

scp /home/tester/temp/abc.txt /home/tester/temp/def.txt root@xxx.xxx.xxx.xxx:/test

1-3. 디렉토리

scp -r /home/tester/temp/dir root@xxx.xxx.xxx.xxx:/test

 

 

2. 로컬 <- 원격지 (파일 가져오기)

scp [옵션] [원격지user명]@[원격지IP]:[원본 경로] [복사할 경로]

2-1. 단일파일

scp root@xxx.xxx.xxx.xxx:/test/abc.txt /home/tester/temp/

2-2. 복수파일 (원격지 복수파일을 ""로 묶어야함)

scp root@xxx.xxx.xxx.xxx:"/test/abc.txt /test/def.txt" /home/tester/temp/

2-3. 디렉토리

scp -r root@xxx.xxx.xxx.xxx:/test/dir /home/tester/temp/

tar : 흔히 압축 형식의 일종으로 간주되지만 압축은 전혀 하지 않으며 단순히 파일을 묶어주는 개념이다. Tape Archive의 약자.

 

tar.gz : tar파일을 gzip으로 압축시킨 파일 확장자.

 

 

 

tar

압축

tar -cvf [압축파일명.tar] [압축할 파일 or 디렉토리]

디렉토리를 지정하면 하위 내용 포함 모두 묶인다.

 

해제

tar -xvf [압축파일명.tar]

 

 

 

tar.gz

z만 추가하면 된다.

압축

tar -zcvf [압축파일명.tar.gz] [압축할 파일 or 디렉토리]

디렉토리를 지정하면 하위 내용 포함 모두 묶인다.

 

해제

tar -zxvf [압축파일명.tar]

 

 

 

옵션 설명

-z gzip(gz)으로 압축
-c tar로 묶기
-x tar를 풀기
-v 각 파일 압축 메시지 출력
-f 파일을 묶도록 지정 (반드시 추가되어야 함)
-p 파일의 권한 저장

됐지만

bad interpreter: No such file or directory 라는 에러 메세지와 함께 쉘파일 실행이 안되었었다.

 

원인은 윈도우 개행문자가 포함되어 있었던것

그냥 vi로 보면 다른점이 없지만 vi 바이너리 모드(-b)로 실행해보면 ^M 문자가 포함된 것 을 볼 수 있다.

 

vi -b test.txt

 

:%s/^M/

vi replace 명령어로 윈도우 개행문자를 모두 지워주면 된다.

이 때 ^M은 단순 문자가 아닌 Ctrl + v + m 으로 입력해야 한다.

치환 후

 

 

++ MobaXterm을 이용중인 경우 Ctrl + m을 누르면 창이 최소화 되는데 기본 단축키를 변경 해주자

Settings -> Keyboard shortcuts 에서 Ctr + M 키 변경 (한번 껐다 켜야 적용되었음)

실행중인 프로세스를 종료시키기 위해

컨트롤 C, 컨트롤 Z 두개를 구분없이 사용해왔다.

 

차이점을 알아보니 명확한 차이가 있었다.

 

Ctrl + z : 프로세스 정지

 

Ctrl + c : 프로세스 종료

 

나는 종료시키는걸 원했으므로 컨트롤 C를 사용하면 되겠다.

리눅스 우분투를 처음 접하면서 처음으로 당황스러웠던 점은 

뭐만하면 퍼미션 디나이가 뜨는 것이었다. 즉 권한이 없다는 말인데 그래서 처음 배운게 sudo명령어를 앞에 붙이는 방법이었다.

 

매번 명령어마다 앞에 sudo를 붙이는게 귀찮아 조금 더 알아보니 su 명령어로 root계정으로 전환하는 방법 이었다.

 

처음에는 su가 superUser의 줄임말인줄 알았다. 

 

그러던중 /etc/profile 에 분명히 alias를 등록해 놓았는데 su로 계정을 전환해도 매번 source /etc/profile을 안하면 alias가 초기화 되있었다.

 

모르고 쓰니 알턱이 없었고 구글링으로 약간의 공부를 한 결과 정말 내가 모르고 썼다는걸 느껴 정리를 해본다.

 

1. su (Swich User)

 우선 su는 그저 root계정으로 전환하는 Super User인줄 알았는데 Swich User 즉 사용자 전환 명령어였다.

파라미터를 안주면 기본으로 root계정으로 전환되었던 것뿐..

 

로그아웃 없이, 다른 사용자로 로그인을 가능하게하는 리눅스 명령어
파라미터가 없으면 "su"는 "su root"와 동일(=root 계정으로 로그인)
로그인 하려는 계정의 패스워드가 필요하다
- 전환 하려는 계정의 환경변수는 가져오지 않는다.

 

저 마지막 줄 때문에 alias를 가져오지 못했던 것이다.

su -  로 계정을 전환하면 해당 계정에 환경변수까지 가져올 수 있다.

 

2. sudo (Substitute User Do)

sudo 명령어는 유닉스  유닉스 계열 운영 체제에서, 다른 사용자의 보안 권한, 보통 슈퍼유저로서 프로그램을 구동할 수 있도록 하는 프로그램이다. 명칭은 본래 슈퍼유저로서의 실행에 사용되던 것에서 “superuser do”에서 유래하였으나, 후에 프로그램의 기능이 확장되며 “substitute user do”(다른 사용자의 권한으로 실행)의 줄임말로 해석되게 되었다. 

위키백과에 정리가 잘되어있어 가져왔다.

 

https://ko.wikipedia.org/wiki/Sudo

 

sudo - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전. sudo 명령어는 유닉스 및 유닉스 계열 운영 체제에서, 다른 사용자의 보안 권한, 보통 슈퍼유저로서 프로그램을 구동할 수 있도록 하는 프로그램이다. 명칭은 본래 슈퍼유저로서의 실행에 사용되던 것에서 “superuser do”에서 유래하였으나, 후에 프로그램의 기능이 확장되며 “substitute user do”(다른 사용자의 권한으로 실행)의 줄임말로 해석되게 되었다. 기본적으로 Sudo는 사용자 비밀번호를 요구하지만

ko.wikipedia.org

 

- 로그아웃 없이, 다른 사용자의 권한으로 명령을 실행 가능하게하는 리눅스 명령어

- 파라미터가 없는 "sudo"는 "sudo -u root"와 동일(=root 권한으로 실행)

- 현재 로그인된 계정의 패스워드가 필요

- sudo -l : sudo 사용 시 관련 권한을 확인하는 방법

 

 

출처, 참고 : https://infosecguide.tistory.com/88




지난번 포스팅에 이어서 db설정과 웹프로젝트 배포하는법을 알아보자

지난번 포스팅 : https://sleepyeyes.tistory.com/40?category=799682

 

[ubuntu] 우분투 서버 세팅 [18.04]

보통 웹서버는 윈도우 환경이 아닌 리눅스 환경에 구축한다. 그러므로 리눅스 중에서 잘 알려진 우분투에 웹 프로젝트를 동작하기 위한 서버 환경 구축을 해보기로 한다. 1. JDK 설치 open jdk와 oracle jdk 두가..

sleepyeyes.tistory.com

1. DB 설정

설정할 내용은 윈도우에서와 비슷하다.

utf8을 잡아주어 한글이 안깨지게 해주고 사용할 port를 지정해준다.

추가적인 내용은 윈도우에서 mysql이나 maraiDB를 사용할때 대소문자를 구분하지 않는데 우분투에서는 default로 대소문자가 구분된다. 

그러므로 대소문자를 구분하지 않게 하기 위해 설정이 필요하다.

 

$ vi (mysql or mariadb 설치경로)/my.cnf

명령어로 설정파일을 열어주고 아래와 같은 내용을 밑에 추가해준다

 

[mysqld]
port=3307
innodb_buffer_pool_size=1015M
init_connect="SET collation_connection = utf8_general_ci"
init_connect="SET NAMES utf8"
character-set-server=utf8
collation-server = utf8_general_ci
lower_case_table_names = 1

[client]
port=3307
default-character-set = utf8

[mysqldump]
default-character-set = utf8

[mysql]
default-character-set = utf8

 

my.cnf

:wq

저장후

$ systemctl restart mariadb

재시작 해주어 설정이 적용되게 한다.

 

 

2. 웹프로젝트 배포

 자 이제 필요한 기본적인 설정이 끝이났다.

이제 윈도우 환경에서 개발한 웹프로젝트를 서버 톰캣에 배포해주면 된다.

 

먼저 해당 웹프로젝트 war파일을 우분투에 옮겨준 후 tomcat에 webapps 폴더로 이동후 풀어주면된다.

webapps에 바로 풀어도 되지만 여러 프로젝트를 돌릴 수 있으니 webapps 하위에 프로젝트명디렉토리를 만들어 관리하도록 했다.

 

$ mv (war파일경로) (톰캣설치폴더경로)/webapps/(프로젝트명)/

명령어로 옮겨주고

 

$ jar -xvf (war파일명) 

명령어로 배포해주자

 

이제 배포가 끝났으니 server.xml 에 해당 프로젝트 <Context>설정만 남았다.

 

$ vi (톰캣설치경로)/conf/server.xml

명령어로 들어가서

<Host> 태그 안에

<Context docbase="webapps폴더안에 war파일 배포해준 경로" path="">  를 추가해주자

 

server.xml

:wq

저장후

 

이제 톰캣을 켜 웹브라우저로 접속해 잘 작동하나 테스트만 해보면 된다.

 

$ (톰캣설치경로)/bin/startup.sh

명령어로 톰캣을 켜고

 

$ tail -f (톰캣설치경로)/logs/catalina.out

으로 잘 켜지나 톰캣log를 보자 (이클립스 콘솔)

 

에러 없이 잘 켜졌다!

 

자 이제 localhost:8080 or 127.0.0.1:8080 으로 접속하면 

리눅스에서도 고양이 화면이 아닌 다른 화면을 볼 수 있다!

 

여기서 한가지.. 로컬에서 테스트할때 항상 8080포트를 붙여주는데 이는 톰캣에 기본 포트이니 당연하지만

만약 실제 웹서비스를 제공한다면 이를 없애야 할 것이다. 

이는 다음 포스팅에 계속..

 보통 웹서버는 윈도우 환경이 아닌 리눅스 환경에 구축한다. 그러므로 리눅스 중에서 잘 알려진 우분투에 웹 프로젝트를 동작하기 위한 서버 환경 구축을 해보기로 한다. 

 

1. JDK 설치

 open jdk와 oracle jdk 두가지 종류가 있다. 원하는 jdk를 받으면 된다.

설치 방법도 크게 두가지가 있다. 

1. apt-get 과같은 명령어로 다운받는 방법.

2. 윈도우 환경에서 tar.gz 파일을 받고 FTP나 SSH로 전송시키는 방법.

 

1-1 명령어 방법

 

$ sudo add-apt-repository ppa:webupd8team/java

 

$ sudo apt-get update

 

$ sudo apt-get install oracle-java8-installer


1-2 윈도우에서 전송하는 방법

익숙한 oracle 홈페이지

맨날 깔던 윈도우용이 아닌 각자 환경에 맞는 리눅스용에서 tar.gz 파일로 다운을 받는다.

이제 우분투 서버 컴퓨터로 업로드 해야하는데 mobaXterm을 이용해 업로드 해주었다.

 

업로드 후

$ tar -xvzf [압축파일명] 으로 압축을 풀어주면 된다.

 

설치 후

$ java -version

$ javac -version 명령어로 잘 설치되었는지 확인

 

* 환경변수는 톰캣, 메이븐을 깔고 한번에 잡아줄 예정 *

 

 

2. tomcat , maven 설치

웹서버 역할을 해주는 톰캣과 빌드를 위한 메이븐을 설치해준다.

이 역시 명령어로 다운받거나, 직접 다운받아 압축을 푸는 두가지 방법이 있다.

톰캣을 명령어로 다운받을경우 서비스에 등록되어 항상 구동되므로 2번 방법으로 다운을 받아보자.

 

역시 익숙한 tomcat 홈페이지

jdk 와 마찬가지로 Core: 하위에 tar.gz 파일을 다운받아 서버로 업로드 해주자

업로드 후

$ tar -xvzf [압축파일명] 으로 압축을 풀어주면 된다.

 

구글에 한글로 메이븐 검색을해도 홈페이지가 나온다

역시 tar.gz 파일을 다운받아 서버로 업로드

업로드 후

$ tar -xvzf [압축파일명] 으로 압축을 풀어주면 된다.

 

 

3. 환경변수 설정

 자바와 톰캣, 메이븐 설치를 마쳤다. 이제 환경변수를 잡아야 하는데 윈도우와는 달리 무궁무진한 방법들이 있었다.

아직 우분투에 익숙하지 않으므로 가장 쉬워보이는 방법으로 해보았다.

 

$ vi /etc/profile 

위 명령어를 치면 아래와 같은게 나온다.

쭉 밑으로 내려 아래 환경변수들을 몽땅 입력해 주고 저장한다.

 

export set JAVA_HOME=(압축푼jdk경로)
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=$CALSSPATH:$JAVA_HOME/lib

export set CATALINA_HOME=(압축푼톰캣경로)
export PATH=$PATH:$CATALINA_HOME/bin

export set M2_HOME=(압축푼메이븐경로)
export set M2=$M2_HOME/bin
export PATH=$PATH:$M2

 

:wq

:wq로 저장 후 

$ sourece /etc/profile

명령어로 reboot할 필요없이 적용시켜 준다.

 

4. DB 설치 (MariaDB)

$ apt-cache search mariadb-server

설치가능한 mariadb를 찾아보고

 

$ apt-get install mariadb-server-10.1

명령어로 다운받으면 설치가 완료된다.

 

$ mariadb --version

으로 설치 확인

 

 

기본적으로 웹프로젝트를 구동시키기 위해 필요한것들을 설치해보았다. 

목표인 윈도우환경, 흔히 이클립스에서 개발한 웹프로젝트를 동작시키기 위해선

db설정과 웹프로젝트 배포등에 작업이 더 필요하다. 이는 다음 포스팅에서 계속~

+ Recent posts