설치 명령어다. 

# apt-get install mysql-server

기본적으로 리눅스 계열의 세팅이 필요한듯하다.

# ufw allow mysql
# systemctl start mysql
# systemctl enable mysql

1 외부접속 기능 설정(Port 3306 개방)

2 mysql 실행

3 서버 리부팅 시 mysql 자동 재시작

 

Mysql은 설치 후 추가 설치 과정이 필요하다.

# mysql_secure_installation

암호 검증을 말하는 것 같다. 

암호 난이도? 인듯 하다. 

 

루트 계정 암호 입력이다.  암호를 입력하면 입력한 암호의 보안 강도를 나타내며 사용할 것인지 또 묻는다.

MySQL은 디폴트로 익명의 유저를 있고, 어차피 이건 필요하지 않으니 지울거냐고 물어보네요

일반적으로 루트유저는 localhost에서만 접속이 되네요. 원격 접속을 할 때 막을 건지 물어보는듯 하네요?

디폴트로 testDB를 생성하네요 지울거냐고 묻네요

끝났습니다. 아래 명령어로 MySQL에 접속 해보고 마무리 해야죠.

# mysql -u root -p

회사 서버 잘 쓰다가 갑자기 방화벽 설치한다고 한다.

그래서 방화벽 내가 설치하고 NAT 설정 했는데 문제는 파일질라로 FTP 잘만 되던게 안되기 시작했다. 

방화벽이 없었을때는 NAT 설정해서 사용했는데 지금은 해결이 안되기 때문에 FTP 설정을 다시 했다.

 

vsftpd 설치

# apt install vsftpd

vsftpd가 설치가 되고 실행된다. 실행이 잘 되고 있는지 상태를 확인해야한다.

service vsftpd status

ftp 포트가 LISTEN 중인지 확인해보자

# netstat -natp | grep ftp

이제 환경설정을 해야한다.

# vi /etc/vsftpd.conf

나의 경우엔 아무것도 안써있었다. 그래서 자신에 상황에 맞게 아래의 링크에서 참고하여 설정했다.

https://security.appspot.com/vsftpd/vsftpd_conf.html

 

Manpage of VSFTPD.CONF

VSFTPD.CONF Section: File Formats (5) Index Return to Main Contents   NAME vsftpd.conf - config file for vsftpd   DESCRIPTION vsftpd.conf may be used to control various aspects of vsftpd's behaviour. By default, vsftpd looks for this file at the location

security.appspot.com

이제부터 환경설정인데 두가지다.

1. 방화벽 없이 PC 통신일 경우

액티브 모드만으로도 충분할 겁니다. 근데 파일 리스트라던지 데이터 통신이 안된다면 아래 2번 방법을 해보자.

listen=YES
listen_ipv6=NO		// 1, 2번은 주석이 아니니 설정 변경하세요

listen_port=21		// 주석해제

2. 만약 방화벽 같은 게 있다면 아래의 방법을 참조

패시브 모드가 필요하다. 액티브와 패시브 모드는 나도 잘 모른다. 대충 알아만봤다.

그리고 처음 두 줄은 주석이 해체되어있다. 그러니 아래처럼 변경해주고 listen_port 부터는 그냥 귀찮으니 맨 밑에 쓰자.

listen=YES
listen_ipv6=NO		// 1, 2번은 주석이 아니니 설정 변경하세요

listen_port=21		// 주석해제
pasv_min_port=60020
pasv_max_port=60030

 

공통적으로 1번 방법은 포트포워딩에서 TCP 21, 2번 방법은 TCP 21. 60020~60030을 같이 열어줘야 한다. 

 

* 로그인 및 파일전송 로그는 /var/log/vsftpd.log 파일에 기록

/etc/ftpusers 파일에 쓰여진 사용자는 FTP 로그인이 거부

 

아직까지 잘 모르겠지만 서비스 재시작하면 완료다.

# service vsftpd restart

* 보통 접속시 active mode로 하며 접속은 되는데 파일리스트가 제대로 안보이거나 파일 전송이 안되는데 대부분 방화벽이 주 원인이다. 서버에서는 클라이언트가 알려준 포트로 접속을 했는데 방화벽에서 차단을 하기 때문이다. 그래서 passive mode 포트를 입력하고 방화벽에서 해당 포트를 열어주면된다.

AWS 에서 사용중인 EC2랑 S3, RDS를 해지할 일이 생겼다.

그래서 사용하고 있던 DB를 Dump 떠서 옮기려고 한다.

 

1. Date Export

왼쪽 Navigator에서 Administration 탭에 Data Export 선택

Data Export 탭이 열리면서 하단의 여러 옵션이 있습니다.

우선 백업할 DB와 Table을 선택합니다.

 

그 후 Objects to Export, Export Options을 설정합니다.

< Objects to Export >

- Dump Stored Procedures and Functions : 저장 프로시저, 함수 백업

- Dump Events : 이벤트 백업

- Dump Triggers : 트리거 백업

< Export Options >

- Export to Dump Project Folder : 폴더 안에 테이블 별로 백업 파일 생성

- Export to Self-Contained File : DB 별로 한 개의 파일로 백업 파일 생성

Include Create Schema는 스키마 생성에 대한 문장까지 삽입해서 내보내기한다. 만약 다른 이름의 스키마로 복원할 계획이라면 체크하지 않는다.

그리고 오른쪽 하단에 Start Export를 클릭하면 해당하는 경로에 .sql 파일이 생성된다.

 

2. Data Import/Restore

Export 바로 밑에 Data Import/Restore 클릭

클릭하면 Data Import/Restore 탭이 열립니다.

그 밑에 여러 옵션들이 있습니다.

< Import Option >

Dump Project Folder과 Self-Contained File가 있습니다.

Export할 때 선택한 옵션을 선택해 주시면 됩니다.

가끔 개발을 하다보면 랜덤 문자열을 생성해야할 경우가 생긴다. 

나의 경우 세션키 또는 인증번호 생성 등을 많이 했다.

아마 임시 비밀번호 등의 경우들도 같은 방법으로 랜덤 문자열을 생성 하지 않나 싶다.

솔직히 나도 많이 찾아보고 한건 아니다. 그렇기 때문에 다른 방법도 있을 수 있다. 

난 아주 간단한 방법들을 찾아서 구현해봤다.

우선 랜덤값을 생성해야한다.

Math.random() 이란 함수를 사용한다.

0과 1사이의 소숫점을 반환한다. 생성된 난수는 Number 타입이기 때문에 String타입으로 바꿔줘야한다.

자바에서는 toString 함수는 그저 String 타입으로 변환해주는 것이었는데 Node.js에선 괄호 안에 파라미터를 통하여 해당 옵션을 넣을 수 있다.

그렇기 때문에 알파벳 + 숫자를 사용하려면 36을 넣으면 된다.

예시

Math.random().toString(36)

위에 예시대로 코드를 짜면 소숫점의 난수가 나온다. 0.qwi2312jeb4i...

slice 함수를 사용하여 앞에 0, . 을 뺀 나머지 난수만 가져오면 된다.

예시

Math.random().toString(36).slice(2);

이렇게 하면 랜덤문자열이 완성된다. 

이런 랜덤문자열을 이용하여 SMS 문자 인증이나 세션키로 사용할 수 있다.

우분투서버로 파일질라를 통해 FTP 접속하여 파일을 옮기려는 중에 에러가 생겨서 파일이 정상적으로 옮겨지지 않았습니다.

Response: 553 Could not create file.

Error: Critical file transfer error

왠지 바로 느낌이 왔습니다. ROOT 권한에 때문이란 것을요

파일질라에서는 root 로그인이 안되더라고요

일반 계정에 root 권한을 주거나 아니면 일반 계정도 폴더나 파일을 수정할 수 있는 권한을 줘야하는 것 같습니다.

답은 생각보다 간단했습니다.

여기서 username은 계정 명을 써주시면 됩니다.

sudo chown -R username /경로,폴더명/...

 

 

Broker(Mosquitto)설치 하는데 그렇게 어렵지 않습니다.

Mosquitto 설치 명령어

sudo apt-get install mosquitto

잘 설치 됐나 확인하는 방법도 있습니다.

mosquitto

port 번호가 나옵니다. 

백그라운드에서 잘 실행되고 있나 확인도 해보겠습니다.

netstat -anv | grep LISTEN

0.0.0.0:1883이 바로 mosquitto 입니다.

client는 우분투서버에서 같이 할 수 있지만 Node.js나 다른 걸로 조금 더 보기 편한 걸로 하겠습니다.

이런것까지 해볼줄 몰랐다...

밑에 링크에서 다운 받을 수 있다. 

다운로드 URL : http://jmeter.apache.org/download_jmeter.cgi

 

Apache JMeter - Download Apache JMeter

Download Apache JMeter We recommend you use a mirror to download our release builds, but you must verify the integrity of the downloaded files using signatures downloaded from our main distribution directories. Recent releases (48 hours) may not yet be ava

jmeter.apache.org

링크에서 받았는데 플러그인도 추가가 하기 힘들다.

그렇기 때문에 다른 블로그들 보고 하기 어려웠다. 밑에서 TPS하면서 플러그인 추가가 있다.

우선 다운로드 받은 후 압축을 풀어주고, /bin 폴더 하위에 있는 jmeter.bat 파일을 실행해주면 프롬프트 나오면서 조금 기다리면 된다.

기본 구성일 것 같다. 사실상 HTTP Request 밑에부턴 테스트 지표라고 할 수 있다. 

Test Plan(우클릭) -> Add -> ThreadsGroup 을 눌러 추가시켜준다.

1. ThreadGroup(우클릭) -> Add -> Sampler -> Http Request을 눌러준다.
2. ThreadGroup(우클릭) -> Add -> Listener -> View Results Tree
3. ThreadGroup(우클릭) -> Add -> Listener -> Summary Report
4. ThreadGroup(우클릭) -> Add -> Listener -> Transaction Per Second

문제는 TPS가 난 없었다. 그래서 따로 다운받아서 추가시켜줬다.

밑에 링크에서 받아서 lib 폴더를 합쳤다.

jmeter-plugins.org/wiki/TransactionsPerSecond/

폴더안에 넣어주고 재시작을 하게되면 생겨있다. 

스레드 설정화면을 보면

Number of Threads(users)

가상의 생성자를 몇 명으로 설정할건지에 대한 값이다. (= 몇 개의 쓰레드를 생성할 것인지의 값이다)

이 값이 커질수록 당연히 서버는 많은 부하를 받을 것이다.

Ramp-up Period(in seconds)

한번의 실행을 몇초 동안 완료 시킬것인지에 대한 설정값

Loop Count

반복하고자 하는 횟수

 

HTTP Request 설정을 보자

Protocol, IP or Server Name, method, Path, Body Data, Param을 Postman 처럼 입력하면 된다.

이번엔 백그라운드에서 서버 실행하려고 합니다.

왜 그러려고 하냐? 다른 명령어도 사용해야하는데 js파일 하나만 할 순 없으니깐

vscode에서도 npm server.js를 실행하면 코드를 입력할 수 없고 request에 의해서 콘솔이 찍힐 뿐이죠...

저거를 취소하는 순간 서버가 꺼진 것과 다름이 없죠. 

그렇기 때문에 백그라운드 실행을 하려고 합니다.

우선 forever 설치를 합니다.

$>npm install forever -g

 

그 후 실행할 파일 디렉토리로 이동한 수 forever를 이용해서 node.js 파일을 실행합니다.

$>forever start server.js

 

백그라운드 실행이 되고 있는지 확인하고 싶다면 

$>forever list

그럼 이렇게 사진처럼 나옵니다

그런데 여기서 root권한이 없는 상태로 명령어를 입력한다면 밑에 사진처럼 아무것도 나오지 않는다.

forever은 사용자 권한을 구분하여 정보를 반환한다.

 

해당 파일을 종료하고 싶다면 list 명령어로 확인한 pid를 X에다 넣어서 실행시키면 된다.

$>forever stop X

그럼 밑에 사진처럼 forever stopped process가 나올 것 이다.

 

해당 프로세스의 로그를 실시간으로 확인하고 싶으면 logs 또는 list 명령어의 logfile 주소를 아래의 명령어와 조합을 하면된다.

단순 확인은 cat, vi 등으로 확인할 수 있다.

 

$ > tail -f /home/user/.forever/dke.log

예시이기 때문에 사람마다 user 명과 log 파일명이 다르다. 

+ Recent posts