CentOS 7.5에 nginx 최신 버전(1.14.2) 설치

2019/03/07 16:52
Pre-Built Package를 이용하여 설치하는 경우

01. Install the prerequisites
sudo yum install yum-utils

02. Repository 생성
vi /etc/yum.repos.d/nginx.repo
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key

[nginx-mainline]
name=nginx mainline repo
baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key
03. Default로는 stable 버전으로 설정되어 있으나 mainline을 사용하고자 할 경우
sudo yum-config-manager --enable nginx-mainline

04. nginx 설치
sudo yum install nginx

소스코드로부터 설치하는 경우

01. Nginx 다운로드
wget https://nginx.org/download/nginx-1.14.2.tar.gz
02. 압축풀기
tar -xvf nginx-1.14.2.tar.gz
03. 의존성 라이브러리 설치
sudo yum -y install gcc gcc-c++ make zlib-devel pcre-devel openssl-devel

04. nginx 폴더 생성
mkdir nginx
mkdir log run sbin
05. Configuration Option 설정

./configure \
--user=nginx                          \
--group=nginx                         \
--prefix=$HOME/nginx                   \
--sbin-path=$HOME/nginx/sbin           \
--conf-path=$HOME/nginx/nginx.conf     \
--pid-path=$HOME/nginx/run/nginx.pid         \
--lock-path=$HOME/nginx/run/nginx.lock       \
--error-log-path=$HOME/nginx/log/error.log \
--http-log-path=$HOME/nginx/log/access.log \
--with-http_gzip_static_module        \
--with-http_stub_status_module        \
--with-http_ssl_module                \
--with-pcre                           \
--with-file-aio                       \
--with-http_realip_module             \
--without-http_scgi_module            \
--without-http_uwsgi_module           \
--without-http_fastcgi_module

06. Compile the nginx source

make
make install
07. nginx configuration 변경
기본적으로 80 포트는 root 계정으로 실행해야 하므로 nginx.conf 파일에서 listen 8080으로 변경.
vi nginx.conf
08. nginx oepration shell script 생성
[nginx 시작]
vi start.sh
#!/bin/bash
./sbin/nginx
[nginx 종료]
vi stop.sh
#!/bin/bash
./sbin/nginx -s stop

[nginx 재시작]
vi restart.sh
#!/bin/bash
./sbin/nginx -s reload

[nginx 설정 파일 확인]
vi check.sh
#!/bin/bash
./sbin/nginx -t

09. 확인
시작 : sh start.sh &
브라우저에서 localhost:8080 호출하여 [Welcome to nginx!] 내용 확인
종료 : sh stop.sh

kong API Gateway 설치

2019/03/04 14:40

<CentOS 7에 PostgreSQL 설치 (10버전)>

https://www.postgresql.org/download/linux/redhat/ 참고

1. RPM Repository 설치

yum install https://download.postgresql.org/pub/repos/yum/10/redhat/rhel-7-x86_64/pgdg-centos10-10-2.noarch.rpm

2. 설치 가능한 패키지 검색

yum list postgres*

3. packages 설치

yum install postgresql10-server postgresql10

4. Database 초기화

/usr/pgsql-10/bin/postgresql-10-setup initdb

5. 부팅 시 자동 시작 등록

systemctl enable postgresql-10

6. Database 서버 시작

systemctl start postgresql-10

7. 설정 파일 수정

vi /var/lib/pgsql/10/data/postgresql.conf

listen_addresses = '*'          # what IP address(es) to listen on;

vi /var/lib/pgsql/10/data/pg_hba.conf

# IPv4 local connections:

 host    all             all             127.0.0.1/32            trust

8. Database 서버 재시작

systemctl restart postgresql-10

<설치한 PostgresSQL 10 Database에 kong 계정 설정>

1. PostgreSQL 로그인

su - postgres

2. SQL Client 실행

bash-4.2 $ psql

3. User 생성 SQL 입력

CREATE USER kong;

4. Database 생성 SQL 입력

CREATE DATABASE kong owner kong;

5. 권한 부여

grant all privileges on database kong to kong;

6. SQL Client - psql 종료

\q

7. PostgreSQL 로그아웃

exit

8. PostgreSQL 버전 확인

/usr/pgsql-10/bin/postgres --version

<kong Gateway 설치>

1. Package 다운로드 및 파일 이름 변경

wget https://bintray.com/kong/kong-community-edition-rpm/download_file?file_path=centos/7/kong-community-edition-1.0.3.el7.noarch.rpm

mv download_file\?file_path\=centos%2F7%2Fkong-community-edition-1.0.3.el7.noarch.rpm kong-community-edition-1.0.3.el7.noarch.rpm

2. CentOS Repository 다운로드 및 이동

wget https://bintray.com/kong/kong-community-edition-rpm/rpm -O bintray-kong-kong-community-edition-rpm.repo

mv bintray-kong-kong-community-edition-rpm.repo /etc/yum.repos.d/

3. Repository 파일 수정

vi /etc/yum.repos.d/bintray-kong-kong-community-edition-rpm.repo

baseurl을 다음과 같이 수정

baseurl=https://kong.bintray.com/kong-community-edition-rpm

-> baseurl=https://kong.bintray.com/kong-community-edition-rpm/centos/7

4. Package 설치

yum install epel-release

yum install kong-community-edition-1.0.3.*.noarch.rpm --nogpgcheck

5. 설치된 kong 버전 확인

kong version

6. kong 설정 파일 복사

cp /etc/kong/kong.conf.default /etc/kong/kong.conf

7. Database Migration

kong migrations bootstrap

8. kong 시작

kong start

9. kong 확인

curl -i http://localhost:8001/

CentOS 7에 Visual Studio Code 설치

2019/02/22 16:40
그 동안 사용했던 Eclipse나 IntelliJ 이외에 Visual Studio Code를 사용해 보기로 했다.
CentOS 7에는 다음과 같은 순서로 설치를 하면 된다.

1. Microsoft GPG Key 등록
sudo rpm --import https://packages.microsoft.com/keys/microsoft.asc
2. Repository에 Visual Studio Code 생성
sudo nano /etc/yum.repos.d/vscode.repo
3. vscode.repo에 다음과 같은 내용 쓰기
[code]
name=Visual Studio Code
baseurl=https://packages.microsoft.com/yumrepos/vscode
enabled=1
gpgcheck=1
gpgkey=https://packages.microsoft.com/keys/microsoft.asc
4. vscode 설치
sudo yum install code
5. 설치 완료 후 실행
터미널에서 code 입력 후 엔터 -> vscode 실행됨.

08. Logistic Regression

2017/11/10 17:01
Logistic Regression

(로지스틱 회귀 : 독립변수의 선형 결합을 이용하여 사건의 발생 가능성을 예측하는데 사용디는 통계 기법, 확률 모델. 로지스틱 회귀의 목적은 일반적인 회귀 분석의 목표와 동일하게 종속 변수와 독립 변수간의 관계를 구체적인 함수로 나타내어 향후 예측 모델에 사용하는 것이다.)

많은 레이어를 가진 심층 신경 네트워크(deep neural network)에서 마지막 레이어는 특별한 역할을 갖는다. 레이블이 지정된 입력을 처리할 때, 마지막 출력 레이어는 가장 가능성 있는 레이블을 적용하여 각 예제를 분류한다. 출력 레이어의 각 노드는 하나의 레이블을 나타내고, 노드는 이전 레이어의 입력과 파라미터로부터 수신한 신호의 강도에 따라 켜지거나 꺼진다.

각 출력 노드는 입력 변수가 레이블을 가질 가지가 있거나 없기 때문에 이진 출력값 0과 1의 2개의 가능한 결과를 생성한다. 어쨌든, 약간의 잉태같은 것은 없다.

레이블이 지정된 데이터로 작업하는 신경망(neural network)은 2진 출력을 생성하지만, 신경망이 받는 입력은 종종 연속적이다. 즉, 네트워크가 입력으로 수신하는 신호는 값들의 범위에 걸쳐 이어져 있고 해결하고자 하는 문제에 따라 많은 수의 메트릭(기준)을 포함하고 있다.

예를 들어, 추천 엔진은 광고를 게재할 것인지 아닌지에 대해 2진 결정을 내려야만 한다. 그러나, 그 결정의 기반이 되는 입력은 지난 주 얼마나 많은 고객이 Amazon에서 시간을 보냈는지, 혹은 고객이 해당 사이트를 얼마나 자주 방문했는지를 포함하고 있다.

따라서 출력 레이어는 기저귀에 67.59달러를 썼고, 웹 사이트에 15회 방문했다는 것과 같은 신호를 0과 1 사이에서 압축을 해야만 한다. 즉, 주어진 입력이 레이블이 붙여져야 하는지 아닌지의 확률을 계산해야 한다.

지속적인 신호를 이진 출력으로 변환하는데 사용하는 메커니즘을 로지스틱 회귀라고 한다. 불행하게도 로지스틱 회귀라는 이름은 대부분의 사람들이 친숙한 선형 의미에서의 회귀 분석보다는 분류를 위해 사용된다. 입력값들의 집합이 레이블에 일치할 확률을 계산한다.

사용자 삽입 이미지






이 작은 수식을 살펴보자.

확률로 표시되는 연속되는 입력의 경우, 음의 확률같은 것이 없기 때문에 양의 결과를 출력해야만 한다. 그래서 출력이 0보다 커야 하기 때문에 분모는 e의 지수가 된다. 이제 e의 지수와 분수 1/1 사이의 관계를 고려해 보자. 알다시피 1은 확률의 결과가 터무니없지 않고는 넘어갈 수 없는 한도이다. (120%로 확신한다.)

레이블을 작동시키는 입력값 x가 증가함에 따라 x에 대한 e의 표현은 0으로 줄어들어서 분수 1/1이나 100%로 남게 된다. 이것은 (언제고 상당히 접근하는 것이 아니라) 레이블에 적용되는 절대 확실성에 도달함을 의미한다. 출력과 음의 상관관계가 있는 입력은 e의 지수에 음수 부호로 뒤집힌 값을 가지게 되고, 음수 신호가 커지면 x에 대한 e의 양이 커져서 전체 분수는 0에 가까워지게 된다.

이제 x를 지수로 갖는 것보다 모든 가중치와 해당 입력값들의 곱을 합한 것, 즉 네트워크를 통과하는 모든 신호를 상상해 보자. 그것이 신경망 분류기(neural network classfier)의 출력 레이어에서 로지스틱 회귀 레이어로 반영되는 것이다.

이 레이어를 사용하면, 위에는 예를 1로 레이블을 지정하고, 아래에는 표시하지 않는 임계값을 결정하여 설정할 수 있다. 원하는 대로 임계값을 다르게 설정할 수 있다. 오류를 어느 쪽에 적용할 것인지에 따라 낮은 임계값은 거짓 양성(false positive:통계상 실제로는 음성인데 검사 결과는 양성이라고 나오는 것, 위양성 혹은 거짓 정보)을 증기시키고, 높은 임계값은 거짓 음성(false negative:통계상 실제로는 양성인데 검사 결과는 음성이라고 나오는 것. 2종 오류. 거짓 양성보다 오탐 비용이 커짐.)을 증가시킨다.


07. Activation Functions

2017/11/10 16:59
Activation Functions
(활성화 함수 or 출력 함수(transfer functions))

활성화 함수는 노드에서 입력값에 기반하여 어떤 출력값을 생성할지를 결정한다. Sigmoid 활성화 함수가 가장 대중적이며, ReLU가 현재 가장 많이 사용되고 있다. DeepLearning4J에서 활성화 함수는 layer level에 설정되고, 해당 레이어의 모든 뉴런들에 적용된다.

지원되는 활성화 함수는 다음과 같다.
- CUBE
- ELU
- HARDSIGMOID
- HARDTANH
- IDENTITY
- LEAKYRELU
- RATIONALTANH
- RELU
- RRELU
- SIGMOID
- SOFTMAX
- SOFTPLUS
- SOFTSIGN
- TANH

다음과 같이 활성화 함수를 설정할 수 있다.

layer(2, new OutputLayer.Builder(LossFunctions.LossFunction.NEGATIVELOGLIKELIHOOD).activation(Activation.SOFTMAX)

Custom layers, activation functions and loss functions

Deeplearning4j 는 Custom Layer, 활성화 함수(activation functions), 손실 함수(loss functions)를 지원한다.