[SCIT마스터 작문] 2017年11月27日

요즘 국제화, 글로벌화라는 말이 자주 사용되고 있는데, 진정한 국제화란 무엇이라고 생각합니까?

일러두기

  • 이 주장은 논리 전개를 위해 선택된 것으로 자신의 생각과 일치하다고 할 수 없습니다.
  • 일본어로 쓴 다음, 한국어로 옮긴 글입니다.

작문

저는 진정한 국제화란 무엇이라 생각하냐고 하면, 마치 같은 나라처럼 서로 장벽이 없어지는 것을 말하는 것이라 생각합니다.

왜냐하면, 사람들의 마음이 나뉜채로는 평소 행해지는 무역조차 싸움의 씨앗이 되기 십상이기 때문입니다. 관세를 아무리 줄여도, 서로 이해의 균형을 맞추는 것은 위태로운 일입니다.

거기엔 마음의 문제가 있어서, 나라라고 하는 가치관에 사로잡혀서, 싸움이 되는 경우도 있습니다. 저는 인터넷에서 댓글과 트위터 투고로 나라와 자신을 같은 눈으로 보면서 쓸데 없는 말을 해대는 경우를 본 경우가 많았습니다.

글로벌화가 다음 시대로 진행하기 위해서는, 경제와 정치 외에 사람들이 다른 나라를 타자로 보지 않는 것에서 시작해야 한다고 생각합니다.

그러므로 진정한 국제화란, 마음의 장벽이 없어지는 것이라고 생각합니다.

선생님의 코멘트

구성이 그리 좋지 못하네요.

화제가 인터넷과 무역 중에 하나로 좁혀지지 않은 것이 신경쓰입니다.

2번째 단락은 무역이 활발해져서 경제적으로 글로벌화가 진행되고 있지만, 심리적, 정신적으로는 진보되지 않음

3번째 단락은 인터넷에서의 사례

이런 식으로 적어보면 어떨까요?

다시 쓰기

저는 진정한 국제화란 무엇인가에 대해서, 우리들이 지금 눈앞에 실감하고 있는 개념과 다른 점이 있다고 생각합니다. 이것이 도대체 무엇이냐 하면, 분명하게 하나로 표현하는 것은 어려운 부분이 있습니다만, 궁극적으로는 피할 수 없는 미래라고 생각합니다. 이미 시작한 국제화의 과도기 문제를 극복하는 것이기 때문입니다.

우선, 지금까지 소위 글로벌화 문제는 강국에 의해 좌우되는 경우가 많았다는 점입니다. 역사적으로 강국은 기술과 세력을 무기로 삼았지만, 지금은 경제와 문화가 세계를 지배하는 원동력이 되었습니다. 함대에 협박당하던 시대에서 아이폰과 윈도우즈 같은 것이 없으면 생활이 성립하지 않는 시대로 바뀌었습니다.

그러나, 정보의 교류는 이것을 뒤집으려고 하고 있습니다. 약소국과 단체에서 행해지는 혁명과 테러는, 또 다른 위기를 만들고 있습니다. 실재하는 폭력이 없어도, 변화는 느낄 수 있습니다. 국경이 없다고 하던 인터넷에서 사람들은 나라로 나뉘어서 항상 싸우고 있는 것이 보입니다. 이것은 타국인을 경계하고, 타자로밖에 보지 않고 있다는 것은 아닐까요?

그러므로 앞으로는, 공존을 말해야만 합니다. 진정한 국제화란 지구상의 세계인이라는 인식을 개인 한 명 한 명이 하고 있어서, 함께 평화롭게 다양한 문제를 해결해나가는 것이라고 생각합니다.

감상

처음 리테이크당했는데 무척 충격받았습니다. 다시 써보니 문장의 구성은 나아졌지만, 난이도와 추상적 표현으로 인해 발표 도중 혀가 제대로 꼬여버렸습니다. 어떻게든 얼버무린 느낌이었습니다.

[SCIT마스터 작문] 2017年11月20日

한국의 대학 진학률은 70% 이상이라고 하여, 세계에서도 최고 수준입니다만, 당신은 대학 진학률이 높은 것은 좋은 것이라 생각합니까?당신의 의견을 서술하세요.

일러두기

  • 이 주장은 논리 전개를 위해 선택된 것으로 자신의 생각과 일치하다고 할 수 없습니다.
  • 일본어로 쓴 다음, 한국어로 옮긴 글입니다.

작문

저는 대학 진학률이 70%를 넘는 것에 대하여, 사회적으로 문제가 없다고 말할 수 없다고 생각합니다. 왜냐하면, 대학에 들어가기 위한 노력과 비용이 너무 많이 요구되기 때문입니다. 이렇게까지 해도, 졸업하면 대학 전공을 거의 살리는 경우는 없습니다. 사용하지 않는 채로 ‘대졸’이라는 타이틀만 남는 것입니다. 저도 저를 포함하여, 친구도 거의 다에 가까울 정도로 전공을 깊이 생각해보지 않고 성적에 맞는 대학과 전공을 골랐습니다. 지금은 심각한 취업난으로 전혀 다른 일을 하는 친구도 있습니다.

대학은 학문의 첨단으로, 양성소와 다릅니다. 그러므로, 저는 그저 진학률이 70%를 넘는 것은 좋지 않다고 생각합니다.

 

감상

크게 실패한 스피치였습니다. 말이 제대로 정리되지 않아서 말로서 그리 절실하게 느껴지지 않았습니다. 저도 말하면서 무엇을 말했는지 잊어버릴 정도였습니다.

[SCIT마스터 작문] 2017年11月13日

학교 과목을 하나 늘린다면 무엇을 늘리고 싶습니까?

일러두기

  • 이 주장은 논리 전개를 위해 선택된 것으로 자신의 생각과 일치하다고 할 수 없습니다.
  • 일본어로 쓴 다음, 한국어로 옮긴 글입니다.

작문

학교 교과를 하나 늘린다면 어떤 과목이 필요하냐면, 무엇보다 사회 상식이 필요하다고 생각합니다. 이것은 생활에서 몰라서는 안 되는 가정 경제, 제도, 법률 같은 것을 포함하는 교과로 사회라는 종합 과목과는 차이가 있습니다.

이 교과가 왜 필요하냐면, 우리들이 살고 있는 사회는 모두 지식과 제도를 이해하고 있다고 하는 전제로 성립되어 있기 때문에, 그에 비해 우리들은 너무나 법률을 모르기 때문입니다.

물론 법과 제도, 경제는 항상 변화를 거듭하고 있는 것이므로, 학교에서 배우는 것은 어렵다고 생각하실지도 모릅니다. 그러나 가끔 뉴스에서 처음 알게 되는 것보다는 미리 지식으로 알고 있는 편이 좋다고 생각합니다.

감상

생각보다 발표가 매끄럽게 되었습니다. 말로 하여 이상하지 않은 구성이 필요한 이유를 알았습니다.

CentOS 7에서 Nginx/PageSpeed Module + PHP-FPM7.1 + MariaDB 설치, 보안 로그인 (6)

Ajenti 설치

시스템 현황을 보여주는 ajenti 콘솔은 강력하고, 유용하게 쓰일 수 있다. 콘솔에서 처리해야할 상당 부분을 건너뛸 수 있고, 현재 서비스가 잘 돌고 있는지 위젯을 만들어서 직접 관리할 수 있다.

공식 사이트는 이곳이며, 설치 매뉴얼이 있긴 하나, 정말로 부실하므로 큰 도움이 되지 않는다.

$ curl https://raw.githubusercontent.com/ajenti/ajenti/master/scripts/install.sh | sudo bash -s -

이걸로 충분하다고 한다.

python 의존성 관련된 오류가 발생하는 경향이 있다. 다행히 별 문제가 없었지만, 케이스가 발견되는대로 여기 내용을 추가해나가야겠다.

설치가 완료되면, sudo 권한을 얻지 못하는 문제를 해결해야할 필요가 있다. 다음 명령으로 conf 파일을 편집할 수 있다.

$ sudo nano /etc/ajenti/config.yml

바인드 포트를 잘 확인하고 지정한다. 기본 포트는 port: 8000이라고 되어 있듯이, 8000번 포트를 사용한다. restricted_user: 계정 이름 이렇게 입력해주고 저장해야만 나중에 1 incorrect password attempt 오류를 피할 수 있다.

$ sudo firewall-cmd --permanent --zone=public --add-port=8000/tcp
$ sudo firewall-cmd --reload

이 명령으로 포트도 확실하게 열어둔다.

 

다 되었으면 실행해본다.

$ sudo systemctl start ajenti

웹에서 구동은 다음 주소에서 가능하다.

http://서버주소:8000

서버 OS 계정으로 로그인할 수 있다. ssh 계정과 동일하다고 보면 된다.

CentOS 7에서 Nginx/PageSpeed Module + PHP-FPM7.1 + MariaDB 설치, 보안 로그인 (5)

PHP 7.1 설치

홈디렉토리에 역시 저장소 파일을 받아서 등록하자. 기본 php 저장소 역시 너무 구버전이라 remi-release-7으로 갈아치울 필요가 있다.

$ cd ~
$ wget http://rpms.remirepo.net/enterprise/remi-release-7.rpm
$ rpm -Uvh remi-release-7.rpm
$ yum-config-manager --enable remi-php71
$ sudo yum install php php-devel php-fpm php-gd php-mbstring php-pdo php-pecl-swoole php-cli php-intl php-soap php-tidy php-xml php-xmlrpc

쓸만한 php 모듈을 모두 등록한 경우이며, 필요에 따라 가감할 수 있다.

다음으로 php-fpm 연동이다.

$ sudo nano /etc/php.ini

cgi.fix_pathinfo를 찾아서 =0으로 바꿔준다. 이는 필수적인 PHP 보안 설정이라고 한다.

이어서 php-fpm.d 설정을 한다.

$ sudo nano /etc/php-fpm.d/www.conf
listen = /var/run/php-fpm/php-fpm.sock
user = nobody
group = nobody

각각 내부에 listen = / user = / group = 항목이 다 들어 있으므로 복붙하지 말고, 찾아서 해당 부분을 각각 수정해야 한다.

다 되었으면 실행해본다.

$ sudo systemctl start php-fpm

CentOS 7에서 Nginx/PageSpeed Module + PHP-FPM7.1 + MariaDB 설치, 보안 로그인 (4)

maria db 설치

$ cd /etc/yum.repos.d/
$ sudo nano MariaDB.repo

이렇게 입력하면 yum 패키지 원본으로 MariaDB 저장소를 새로 지정할 수 있다. 이렇게 하지 않으면, 기본으로 있는 패키지는 너무 구버전이다.

# MariaDB 10.2 CentOS repository list - created 2017-11-06 14:03 UTC
# http://downloads.mariadb.org/mariadb/repositories/
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.2/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1

저장하고 다음 명령을 실행한다.

$ sudo yum update

이제 설치한다.

$ sudo yum install MariaDB-server MariaDB-client

이렇게 하면 자동으로 패스워드 설정 페이지가 나온다. 접속에 필요한 정보니 신중하게 설정하면 된다.

$ sudo systemctl start mariadb

mariadb가 시작된다.

다음 글에서 이어집니다.

CentOS 7에서 Nginx/PageSpeed Module + PHP-FPM7.1 + MariaDB 설치, 보안 로그인 (3)

기본 시스템 설정

root인 김에 막바지 작업을 끝마치자. 도메인을 갖고 있다면 시스템을 도메인과 일치시키는 편이 관리하기에 수월할 것이다.

# hostname mydomain.net

이어서 hosts 파일도 수정한다.

# nano /etc/hosts

127.0.0.1 / ::1인 첫 항목을 바꿔버린다.

# nano /etc/sysconfig/network

여기서도 HOSTNAME= 오른쪽의 이름을 나의 도메인으로 맞춘다.

해외든 국내든 서버가 어디에 있어도 대한민국 대상으로 서비스한다면 서버 시계도 맞춰주면 좋을 것이다. 다음 방법으로 금세 시간대를 맞출 수 있다.

# timedatectl set-timezone Asia/Seoul

참고로, 가능한 시간대를 모두 출력하려면 다음 명령을 통해 볼 수 있다.

# timedatectl list-timezones

대륙을 알고 있다면 뒤에 | grep Asia 이런식으로 적어주면 더 간략하게 필요한 정보만 추려낼 수 있을 것이다. 이제 root 로그인은 종료해도 괜찮다.

Nginx 빌드

이 절부터는 처음에 만든 신규 계정으로 로그인하고 진행한다.

yum install nginx로 순식간에 설치되는 것이 nginx의 장점이거늘, 여기서는 직접 빌드에 도전해본다. 원래 빌드는 관련 의존성 패키지를 다 깔아주고, 경로도 맞춰줘야 하는 등 무척 까다로운 과정을 거쳐야 한다. 그러나 Nginx는 비교적 쉬운 작업으로 빌드가 가능하다는 점, 또 빌드를 통해서만 원하는 추가 모듈을 깔아줄 수 있다는 점에서 언젠가 꼭 거쳐야 할 과정이라고 생각한다.

gzip이나 기타 유용한 모듈을 쓰려면 빌드 방법은 꼭 알아둘 필요가 있다.

$ sudo yum install gcc-c++ pcre-devel zlib-devel make unzip libxml2-devel libxslt-devel gd-devel GeoIP GeoIP-devel perl

시행착오 끝에 빌드시 괴롭히는 것들을 다 깔 수 있었다.

$ wget https://zlib.net/zlib-1.2.11.tar.gz
$ wget https://www.openssl.org/source/openssl-1.1.0g.tar.gz
$ wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.41.tar.gz
$ tar -xzvf ./zlib-1.2.11.tar.gz
$ tar -xzvf ./openssl-1.1.0g.tar.gz
$ tar -xzvf ./pcre-8.41.tar.gz

의존성 있는 라이브러리들도 같이 준비해준다. 공식 홈페이지에서 최신 버전으로 맞추는 편이 좋다. 다만, perl 같은 경우엔 메이저 버전이 높은 것으로 하면 문제가 생길 수 있다.

$ ./configure --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx --modules-path=/usr/lib64/nginx/modules --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx.lock --user=nginx --group=nginx --build=CentOS --builddir=nginx-1.13.6 --with-select_module --with-poll_module --with-threads --with-file-aio --with-http_ssl_module --with-http_v2_module --with-http_realip_module --with-http_addition_module --with-http_module=dynamic --with-http_image_filter_module=dynamic --with-http_geoip_module=dynamic --with-http_sub_module --with-http_dav_module --with-http_flv_module --with-http_mp4_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_auth_request_module --with-http_random_index_module --with-http_secure_link_module --with-http_degradation_module --with-http_slice_module --with-http_stub_status_module --http-log-path=/var/log/nginx/access.log --http-client-body-temp-path=/var/cache/nginx/client_temp --http-proxy-temp-path=/var/cache/nginx/proxy_temp --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp --http-scgi-temp-path=/var/cache/nginx/scgi_temp --with-mail=dynamic --with-mail_ssl_module --with-stream=dynamic --with-stream_ssl_module --with-stream_realip_module --with-stream_geoip_module=dynamic --with-stream_ssl_preread_module --with-compat --with-pcre=../pcre-8.41 --with-pcre-jit --with-zlib=../zlib-1.2.11 --with-openssl=../openssl-1.1.0g --with-openssl-opt=no-nextprotoneg --add-module=../ngx_pagespeed-1.12.34.3

make 하기 전 설정 과정을 거친다. 여기서 의존성 체크를 당하고, 에러가 나면 구글링하면서 또 해결을 해야 한다. 무사히 끝나면 make가 남는다.

$ sudo make
$ sudo make install

에러가 나지 않기를 기원한다. 참고로 512MB에서 make시 fatal error가 발생했다. 램이 부족하면 죽어버리는 모양이다. vps라서 업그레이드는 간단했다만, 다운그레이드가 안 돼서 좀 그렇다.

$ sudo groupadd nobody
$ sudo useradd -g nobody nobody

Nginx 서버에서 사용할 계정을 만들어야 한다. 방문자가 파일을 확인하게 되는 기본 사용자인 만큼, 보안을 최대한 고려하여 필요한 권한만 제공되어야 한다.

손수 빌드할 경우 서비스로 등록되지 않는다. 서비스 등록을 위한 과정을 거치면, 부팅시 자동으로 웹 서버가 기동된다.

$ sudo nano /lib/systemd/system/nginx.service

여기에 다음 내용을 붙여넣자.

[Unit]
Description=The NGINX HTTP and reverse proxy server
After=syslog.target network.target remote-fs.target nss-lookup.target
			
[Service]
Type=forking
PIDFile=/run/nginx.pid
ExecStartPre=/usr/sbin/nginx -t
ExecStart=/usr/sbin/nginx
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true

[Install]
WantedBy=multi-user.target
$ sudo systemctl enable nginx
$ sudo systemctl start nginx

이렇게 하면 실행된다.

다음 글에서 이어집니다.

CentOS 7에서 Nginx/PageSpeed Module + PHP-FPM7.1 + MariaDB 설치, 보안 로그인 (2)

root 수정

처음 VPS 서버가 생성되면, root 계정과 비밀번호를 관리 패널에서 알 수 있다. 그러나 root를 로그인할 수 있게 두고, ssh를 기본 포트로 쓰면 IP는 쉽게 알 수 있으므로 전세계에서 공격이 들어오게 된다.

따라서 안전하게 서버를 운영하고, 공격자를 막기 위해서는 본인만의 설정을 만들고 관리자 계정을 비활성화하여 서버 권한 탈취를 막아야 한다.
왼쪽에 $인지 #인지 여부로 쉽게 루트 권한인지를 알 수 있다.

putty로 연결하는 법까지는 알고 있다고 하고, putty 접속을 마친 다음 작업을 시작한다. 주로 쓸 계정을 새로 만들 것이다. 여기서는 myadmin이라고 하자.

# useradd myadmin
# passwd myadmin

비밀번호를 새로 셋팅하는 화면이 뜬다.

# nano /etc/sudoers

이걸 실행하면 sudo 명령을 쓸 수 있는 계정을 선언할 수 있다. 다음 부분을 추가하자.

myadmin       ALL=(ALL)       ALL
myadmin    ALL=NOPASSWD: /usr/libexec/openssh/sftp-server

첫째 줄 따로 모여 있는데 내려가면서 비슷한 명령끼리 모아서 새로 한 줄씩 추가하면 된다.
NOPASSWD라고 쓰여 있는 두 번째 줄은 WinSCP 설치시 유용한 기능인데, 이를 통해 WinSCP에서 myadmin으로 접속해도 sudo를 친 것과 동일한 효과를 얻을 수 있다.

nano 에디터를 저장하는 방법은 Ctrl+O를 누르는 것이다.

ssh 포트 변경

우선 패키지를 처음으로 설치하기 전에 패키지 목록을 업데이트하자.

# yum update

가까운 미러 사이트를 저절로 검색하면서 이것저것 다운로드 받을 것이다. 그걸로 할 일은 충분하다.

이어서 CentOS 7에서 netstat을 설치하는 법은 간단하다. netstat을 통해 열린 포트르 확인할 수 있다.

# yum install net-tools

Install y/n에서 당연히 y를 쳐야 하는 것은 기본이다.

# netstat -anp | grep LISTEN | grep sshd

이렇게 치면 LISTEN이라고 표기된 sshd 포트만을 찾아볼 수 있다.

tcp        0      0 0.0.0.0:22            0.0.0.0:*               LISTEN      825/sshd

숫자는 다를 수 있지만 :22 라고 쓰인 부분에서 22번 포트가 열린 것을 확인할 수 있다.

# cat /etc/ssh/sshd_config | egrep ^\#?Port

여기서 Port 22 라는 글자가 보인다면 이 파일은 타겟이 확실하다.

# nano /etc/ssh/sshd_config

nano 편집기가 뜨면 Ctrl+W 키를 눌러서 port를 찾아서 해당 문구를 주석처리(# 붙이기)하고 밑줄에 같은 형식으로 추가한다. 원하는 포트를 1234로 가정하면 다음과 같다.

# If you want to change the port on a SELinux system, you have to tell
# SELinux about this change.
# semanage port -a -t ssh_port_t -p tcp #PORTNUMBER
#
#Port 22
Port 1234
#AddressFamily any

Ctrl+W를 또 눌러서 permit이라고 쳐본다. PermitRootLogin 항목이 뜰 것이다.

#LoginGraceTime 2m
PermitRootLogin no
#StrictModes yes
#MaxAuthTries 6
#MaxSessions 10

해당 부분의 주석(#) 표기를 해제하고, no라고 바꿔서 저장한다.

# service sshd start

이 명령을 써서 sshd 서비스를 재시작한다. 현재 sshd로 로그인되어 있는 세션이 풀리지는 않는다. 다음 번 로그인 때 설정이 적용되어 기존 셋팅으로 로그인이 안 될 것이다.

방화벽 설정

잠깐, 아직 연결을 종료해서는 안 된다. 기본적으로 켜져 있는 방화벽 관련 설정을 맞춰야만 한다. 그렇지 않으면 시스템이 모르는 포트로 접속시 바로 차단된다.

# firewall-cmd --permanent --zone=public --add-port=2123/tcp

firewall-cmd 명령에 포트 번호와 프로토콜, 항구적 설정임을 명시하여 config에 추가하는 것이다.

앞으로도 포트를 쓰는 모든 서비스는 이렇게 포트를 열어줘야만 정상 접속이 가능해진다. 예를 들어, 우리는 HTTP/HTTPS 서버를 운영할 것이므로, 다음과 같은 명령도 미리 실행해줘야 웹 서버로서 기능을 할 것이다.

# firewall-cmd --permanent --zone=public --add-service=http
firewall-cmd --permanent --zone=public --add-service=https

이렇게 미리 정의된 서비스를 허용할 수도 있다.

# firewall-cmd --reload

모든 과정이 끝나면 –reload를 해야만 변경 사항이 적용된다.

다음 글에서 이어집니다.

CentOS 7에서 Nginx/PageSpeed Module + PHP-FPM7.1 + MariaDB 설치, 보안 로그인 (1)

Ubuntu 이외의 첫 리눅스 도전

서버를 구축하면서 처음에는 익숙한 Ubuntu로 막연하게 되겠거니 생각했는데,
사실 말처럼 우분투는 그렇게 가볍지 않았다.

물론 무언가 검색했을 때 바로바로 해결책이 나오고 apt-get으로 나오는 검색 결과가 많은 점은 확실히 메리트이긴 하나, 몇 가지 마음에 안 드는 점이 있었는데…

  • 너무 잦은 업데이트
    • 아무리 서버 콘솔 운영체제를 깔아도 우분투의 패키지 업데이트는 무척 많고 방대하고 잦다.
    • 아무 생각 없이 업데이트 했다가 기존에 잘 돌아가던게 안 될 우려가 크므로 신중해야 하는데, 로그인시마다 업데이트 몇 개가 있다고 압박을 한다.
  • 너무 많은 변수
    • 소프트웨어도 다양하고 좋은 점은 있지만, Ubuntu에서 셋팅법은 타 OS보다 더 다양하고, 그만큼 문제의 요인도 많아보인다.
    • 물론 대부분의 단점은 본인의 미숙함에서 오는지라, 그냥 이런저런 문제로 Ubuntu 말고 CentOS가 서버에 적합하다는 의견을 많이 보게 되면서 골랐다고 보면 된다.
  • apt와 apt-get보다 yum이 단순하고 편하다.
    • 이건 철저히 취향 문제인지라… 좀 더 써보면서 결론을 내볼까 한다. 일단 명령이 짧은 건 명백한 장점이다.

Apache보단 Nginx가 답인가

Apache가 일반적인 서버 셋팅의 정석인 듯 한데, Apache는 무겁고, 셋팅이 결코 단순하지 않다. Nginx가 가볍다고 잘라 말하기엔 다양한 상황이 있고, 멀티미디어 성능에서는 상호간에 큰 차이가 없는 것으로 나타나있다. 편한 걸 쓰기 나름이지만, config의 스타일이 직관적인 점과 FastCGI가 기본인 Nginx가 더 끌렸다.

그럼 이제부터 서버 셋팅을 시작해보자. 따끈따끈하게 VPS에서 CentOS 7 서버를 만들어낸 상황으로 가정하자.

참고로 본 서버는 Vultr에서 구동되고 있다. 서버 셋팅에 관해서 후일 더 자세하게 적어볼 생각이다. 링크를 누르고 신규 서버를 셋팅하고 금액을 지불하면, 신규 가입자와 글쓴 본인 모두에게 소정의 적립금이 적립된다고 한다.

다음 글에서 이어집니다.

[SCIT마스터 작문] 2017年11月6日

정신적인 문제를 안고 있을 경우, 술과 담배는 도움이 된다고 생각합니까?

일러두기

  • 이 주장은 논리 전개를 위해 선택된 것으로 자신의 생각과 일치하다고 할 수 없습니다.
  • 일본어로 쓴 다음, 한국어로 옮긴 글입니다.

작문

저는 정신적인 문제를 안고 있을 때, 술과 담배 같은 것은 도움이 되지 않는다고 생각합니다. 왜냐하면, 술과 담배는 의존성이 있어서, 결과적으로 몸을 술과 담배에 맡기는 상태가 되기 때문입니다. 의존한 끝에 자신의 몸을 망가트리는 것은 충분히 예측 가능합니다.

물론, 술을 마시면 몸과 마음이 편안해지고, 담배를 피면 냉정해지고 짜증과 스트레스의 대책이 된다고 하는 사람도 있습니다만, 그것은 평소 정신적 스트레스에 더 약해져서, 감정의 제어를 잃어버리는 결과에 지나지 않는다는 의견도 있습니다.

그러므로, 저는 정신적인 문제를 안고 있을 때, 술과 담배는 도움이 되지 않는다고 생각합니다.

감상

조사 하나로 틀린 것으로 그치면 좋았을 것을, 술 주 글자에서 삼수변을 세 번이나 빼먹은 실수는 부끄럽습니다.

CentOS 7에서 GoAccess 셋팅

개요

GoAccess는 유닉스 계열 시스템의 터미널, 사용자의 브라우저에서 돌아가는 오픈 소스 실시간 웹로그 분석기이자, 상호 작용 뷰어라고 합니다. 터미널 기반 로그 분석기다보니,
SSH 같은 터미널로 접속했을 때, 웹 서버 통계를 빠르게 분석할 수 있는 물건입니다.
터미널 출력 말고도 HTML이나 JSON, CSV로 출력하게 할 수도 있다네요.

배경

nginx의 실시간 통계 기능이 있다는 글을 보고, 그 툴이 나름 잘 만들어졌길래 혹시나 하고 정보를 더 찾아봤습니다.

그리고 알게된 사실은 nginx plus라는 상용 프로젝트에 들어 있는 물건으로 많이 비싸다는 것입니다.

nginx 실시간 현황 확인 페이지 설치에 대해서는 후일 또 올리도록 하겠습니다.

결국 이를 대체할 다른 방법이 없을까 찾아봤는데, GoAccess가 가장 괜찮은 대안 같았습니다.

설치

cent OS 7 기준…

sudo yum update
sudo yum install goaccess

이걸로 끝.

컴파일을 하고 싶은데 openssl 오류를 뛰어넘지 못해서 빌드에 이르지 못하고 있습니다.

로그 설정

https://github.com/stockrt/nginx2goaccess

우선 여기 가서 내 서버에 설치 후 저 설명대로 access_log format을 nginx에서 긁어다가 붙여서 변환시켜야 합니다.

access_log (log파일이름) combined로 간편하게 선언하면 GoAccess에서도 아무런 문제 없이 읽어들이는 것을 확인할 수 있습니다.

그러나 저는 Virtual Host로 별도 사이트 운영중이기 때문에 VHOST명을 포함한 로그 수집은 필수였고, 그러면 필히 파싱 오류가 나더군요.

 

옵션

goaccess /var/log/nginx/access.log -o ~/go_report.html --real-time-html

데몬화

*단순 데몬화는 간단합니다. –daemonize만 붙이면 그 순간부터 백그라운드로 잘 실행됩니다.

그러나 제 경우엔 그것만으로는 부족합니다. 자동 실행되어야 합니다.

1.systemd 관련 설정을 위한 파일 생성

[Unit]
Description=GoAccess Live Log Analyzer

[Service]
Type=simple
ExecStart=goaccess /var/log/nginx/access.log -o ~/go_report.html --real-time-html
ExecStop=/bin/kill -9 ${MAINPID}
PrivateTmp=false

[Install]
WantedBy=multi-user.target

/etc/systemd/system/goaccess.service에 root 권한을 써서 생성합니다.

–daemonize는 불필요합니다. 이 자체가 systemd 데몬으로 구동됩니다.

sudo nano /etc/systemd/system/goaccess.service면 될 듯 합니다.

2. systemctl daemon-reload를 써서 위 정보를 서비스로 읽어들입니다.

3. sudo systemctl start goaccess를 쓰면 정상적으로 시작합니다.

이제 서버에서 go_report.html을 읽어보면 잘 작동하는 것을 볼 수 있습니다.

문제점

다만, SSL이 적용된 경우, html 내부에 쓰인 goaccess 구동용 웹소켓 또한 보안으로 암호화되어야 합니다.

아쉽게도 yum에서 손쉽게 설치한 goaccess는 최신 버전인 1.1에서 추가된 openssl 관련 컴파일 옵션이 빠져있습니다.

손수 빌드하셔서 openssl을 포함시켜야 쓸 수 있을 것으로 보입니다.

여담

셋팅 다 해놨더니 불안한 서버 속도를 극복하고자 Cloudflare 캐싱을 활용하게 되었습니다.

접속 경로가 Cloudflare를 경유하게 된 탓에 방문 경로 분석이 무용지물이 되었는데요.

다행히 Google Analytics 스크립트는 영향받지 않으므로 통계 수집에 이상이 없다고 하네요. 그 쪽의 방문자 수 통계를 더 참고해야 할 듯.

역시 본연의 액세스 로그 판단 용도에 맞도록 트래픽이 하드한 파일과 오류 파악에나 신경을 쓰면 되지 싶습니다.