최근 docs site 를 mkdocs 에서 hugo 로 마이그레이션 했습니다.

mkdocs 테마 가독성이 떨어 지기때문에 hugo 테마중 적당한 테마를 사용,  github 와 github actions 을 이용하여 자동 build 로 구성 하였습니다. 윈도우 에서 vscode 로 git-bash 설정 하는 방법을 소개 합니다.

 

설치는 다음 다음 을 클릭 하여 설치 하시면 됩니다. Git bash 도 동일한 과정으로 설치 합니다.

 

 

 

 

vscode 실행후Ctrl + , 를 눌러 설정으로 들어 갑니다.

terminal.integrated.shell.windows 을 검색 합니다.

“terminal.integrated.shell.windows”: “” 을 Git Bash 경로로 설정 합니다.

제가 설치한 Git bash 경로는 “C:\\Program Files\\Git\\bin\\bash.exe”  설정후 Ctrl + s 를 눌러 저장 합니다.

 

 

설정후 Ctrl + ` 를 눌러 터미널을 오픈 합니다.

설정을 완료 하였습니다. 🙂

 

 

LAMP 환경 에서는 아래와 같이 설정 하면 됩니다.

Route53 설정 및 Certificate Manager 를 이용한 ssl 인증서를 생성 해야 하며 ELB 설정이 필요 합니다.

.htaccess 파일 수정 및 wp-config.php 파일수정

 

[root@ip-xxx-xx-xx-xxx public_html]# vi .htaccess
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{SERVER_PORT} 443
RewriteRule ^(.*)$ https://test1.crois.net/$1 [R,L]
</IfModule>



[root@ip-xxx-xx-xx-xxx public_html]# vi wp-config.php
/** force SSL on admin **/
define('FORCE_SSL_ADMIN', true);
if (strpos($_SERVER['HTTP_X_FORWARDED_PROTO'], 'https') !== false)
$_SERVER['HTTPS']='on';

 

 

윈도우즈 CMD 에서도 ssh 를 통한 원격접속을 할수 있는 세상이 되었습니다. 🙂

편의상 putty 와 AWS 관리 할때는 git-for-windows 를 사용하였지만…

hyper 를 이용하면 윈도우에서도 테마가 있는 터미널을 사용할수 있습니다.

 

윈도우 10 에서 cmd bash 를 사용하기 위해서는 개발자 모드를 켜야 합니다.

설정 -> 업데이트 및 보안 -> 개발자 용 으로 이동 합니다.

 

제어판 -> 프로그램 -> 프로그램 및 기능 으로 이동합니다.

Linux용 Windows 하위 시스템을 체크 합니다.

 

확인 클릭후 다시 시작을 클릭하여 시스템을 재부팅 합니다.

 

시스템 재부팅후 cmd 창에서 bash 를 입력 합니다.

https://aka.ms/wslstore  링크 메시지만 나옵니다.

실제로 설치는 해당 사이트에서 설치 할수 있습니다.

 

마이크로 소프트 스토어로 이동하면 Ubuntu / openSuSE 등등을 볼수 있습니다.

Ubuntu 를 클릭하여 설치를 진행 합니다.

 

Ubuntu 가 설치 되면 자동으로 ubuntu 를 실행 합니다. username 을 입력 하고 패스워드를 입력 합니다.

Ubuntu 설치가 완료 되었습니다. Ubuntu 를 사용하고 싶을때는 CMD 창에서 bash 입력후 엔터만 치면 됩니다.

 

CMD 창에서 bash 명령어로 Ubuntu 에 진입 할수 있습니다.

Ubuntu Version 은 18.04 가 설치 되었습니다.  🙂 ubuntu 설치후 hyper 를 설치 합니다.

https://hyper.is/ 에서 다운 받을수 있습니다.

 

설치가 완료 되면 아래와 같은 화면을 볼수 있습니다.

그런데 그냥 사용하기에는 무리가 있어 보입니다. 🙂 테마 적용을 안해서 그런지 칙칙 합니다.

bash 입력으로 동일하게 ubuntu 로 접속 할수 있습니다. 🙂

 

Ctrl + , 를 동시에 누르면 설정화면을 볼수 있습니다.

plugins 라인을 수정 하여 테마를 적용 할수 있습니다. 저장후 바로 플러그인이 적용 되며 Hyper 를 다시 시작 하면 아래와 같은 화면을 볼수 있습니다.

aws 접속시에도 ssh -i key.pem user@doamin 으로 접속 하시면 됩니다.

plugins: ["hyperborder", "hyper-snazzy"],

 

 

 

 

 

 

 

2020년 새해들어 blog 를 GCP 에서 AWS 로 이관 하고 SSL 인증서 작업을 하였습니다.

AWS route53 , ELB 를 설정 하고, ELB 에서는 https 리다이렉트를 해주는 부분이 없어 별도로 docker-compose 에 apache 설정을 추가 하였습니다.

참고자료: https://aws.amazon.com/ko/premiumsupport/knowledge-center/redirect-http-https-elb/

 

docker-compose 설정

version: "3"

services:
  wp:
     image: wordpress:latest
     expose:
       - 80
       - 443
     restart: always
     volumes:
       - ./apache2:/etc/apache2/sites-enabled    <--- https 리다이렉트 설정 
       - ./blog:/var/www/html
       - ./php/uploads.ini:/usr/local/etc/php/conf.d/uploads.ini
     environment:
       VIRTUAL_HOST: blog.test.com
       WORDPRESS_DB_HOST: databases:3306
       WORDPRESS_DB_USER: wp
       WORDPRESS_DB_PASSWORD: passowrd
       WORDPRESS_DB_NAME: wp
     container_name: wp01

networks:
  default:
    external:
      name: nginx-proxy

$ cat apache2/000-default.conf
ServerAdmin bksanjuk@gmail.com
DocumentRoot /var/www/html
<VirtualHost *:80>
RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-Proto} =http
RewriteRule .* https://%{HTTP:Host}%{REQUEST_URI} [L,R=permanent]
</VirtualHost>

 

적용완료

워드프레스를 사용하다 보면 도메인을 변경 하는 경우가 있습니다 🙂

간단하게 도메인을 변경 하는 방법은 wp-config.php 를 수정 하는 방법 입니다.

 

WP 디렉토리에서 wp-config.php 파일을 수정 합니다. 

define('WP_HOME', 'http://blog.crois.net');
define('WP_SITEURL', 'http://blog.crois.net');

 

워드프레스 업데이트시 FTP 인증 Disable

WP 를 업데이트 할때 FTP 인증정보를 물어 봅니다.

해결방법은 :wp-config.php 파일에 define(‘FS_METHOD’, ‘direct’); 라인을 추가 하면 됩니다.

 

wp-config.php 파일 수정

[root@web01 html]# vi wp-config.php
/** The name of the database for WordPress */
define('FS_METHOD', 'direct');

 

FTP 인증 없이 WP업데이트를 할수 있습니다.

LEMP 를 이용한 방법의 경우 패키지 설치 하고 설정 하는 과정이 필요 합니다.
Docker-compose 를 이용하면 모든 설정 내용을 docker-compose.yml 파일에 설정후

WordPress 를 바로 사용할수 있습니다.

Docker-compose 의 경우 http://dev.crois.net/2019/04/22/centos7-docker-quick-install/ 를 참고해주세요.

 

 

docker-compose.yml 파일 생성

적당한 디렉토리를 생성후 docker-compose.yml 파일을 생성 합니다.
yml 파일의 경우 구문 오류가 발생할수 있음으로 http://www.yamllint.com/ 에서 체크 하시는걸 추천 드립니다.
일부 내용이 변경될수 있음으로 해당 부분 수정 하여 docker-compose.yml 파일을 만드시면 됩니다.

 

  • docker-compose.yml 파일 생성 및 mariadb / wordpress 컨테이너 구동
[root@docker-test ~]# cd Workspace/wp/
[root@mkdocs wp]# vi docker-compose.yml

version: "3"
services:
  db:
     image: mariadb
     volumes:
       - ./db-data:/var/lib/mysql
     restart: always
     environment:
       MYSQL_ROOT_PASSWORD: password
       MYSQL_DATABASE: wp
       MYSQL_USER: wp
       MYSQL_PASSWORD: password
     container_name: wp_blog_db
  wordpress:
     image: wordpress:latest
     ports:
       - 80:80
     restart: always
     volumes:
       - ./blog:/var/www/html
     environment:
       VIRTUAL_HOST: test.com
       WORDPRESS_DB_HOST: db:3306
       WORDPRESS_DB_USER: wp
       WORDPRESS_DB_NAME: wp
       WORDPRESS_DB_PASSWORD: password
     container_name: wp_blog



[root@docker-test wp]# docker-compose up -d --build
[root@docker-test wp]# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                NAMES
b51669ed853a        wordpress:latest    "docker-entrypoint.s…"   2 seconds ago       Up 1 second         0.0.0.0:80->80/tcp   wp_blog
dcec08a48cc6        mariadb             "docker-entrypoint.s…"   2 seconds ago       Up 1 second         3306/tcp             wp_blog_db
[root@docker-test wp]#

 

 

 

  • site 접속후 언어를 선택 하여 설치를 진행 합니다.

 

  • 워드프레스를 설치 합니다.

 

  • 로그인을 클릭하여 설정한

 

  • 설치가 완료되었습니다.

WordPress 를 설치 하기위해서는 LAMP Stack (Linux Apache Mariadb PHP)
또는 LEMP Stack (Linux Nginx Mariadb PHP) 환경이 필요 합니다.
bitnami 를 이용하여 wordpress 를 구축 하여도 되고, docker 를 이용한 방법이 있습니다.
본문서에서는 LEMP Stack 을 이용한 방법을 설명합니다.

 

CentOS7 LEMP Stack 환경에서 wordpress 설치

LEMP Stack 의 경우 http://dev.crois.net/2017/12/27/web-server-centos7-lemp-install 내용을 참고 하여 설치 하시면 됩니다.

# wordpress-latest-version-download
# example)
[root@CentOS7-lemp ~]# wget https://wordpress.org/latest.tar.gz
[root@CentOS7-lemp ~]# tar -xzvf latest.tar.gz

# 데이터 베이스 생성 wp user / wp database / password password 
[root@CentOS7-lemp ~]# mysql -uroot -p
~중략
MariaDB [(none)]> use mysql;
Database changed
mysql> create database wp;
Query OK, 1 row affected (0.00 sec)

mysql> GRANT ALL ON wp.* TO 'wp'@'%' IDENTIFIED BY 'password';
Query OK, 0 rows affected (0.00 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

mysql> quit;
Bye

[root@CentOS7-lemp ~]# cd /var/www/html/test.com/
[root@CentOS7-lemp test.com]# wget https://wordpress.org/latest.tar.gz 
[root@CentOS7-lemp test.com]# tar xvf latest.tar.gz 
[root@CentOS7-lemp test.com]# mv wordpress/* public_html/ 
[root@CentOS7-lemp test.com]# chown -R nginx:nginx public_html/ 
[root@CentOS7-lemp public_html]# cd wordpress/

 

설정한 도메인으로 접속을 합니다. ex) http://test.com

 

database 정보를 입력합니다.

 

Run the installation 버튼을 클릭합니다.

 

WordPress Blog 정보를 입력하고 관리자 암호를 생성합니다.

 

모든설치가 완료 되었습니다. Log in 버튼을 클릭하여 blog 관리자로 로그인을 진행 합니다.

 

WordPress login

 

WordPress 관리자 화면

 

 

 

사용하던 vcs 용 iscsi 볼륨을 삭제 할려고 하니 Logical volume vg00/vol01 is used by another device

메시지가 출력되며 삭제가 되지 않습니다.  dmsetup remove 를 통해 lvremove 를 통해 삭제 할수 있었습니다.

 

 

lvm 삭제시 used by another device 메세지 출력

[root@vcs-storage ~]# lvremove /dev/vg00/vol01
  Logical volume vg00/vol01 is used by another device.
[root@vcs-storage ~]# lvremove /dev/vg00/vol02
  Logical volume vg00/vol02 is used by another device.
[root@vcs-storage ~]# lvremove /dev/vg00/vol03
  Logical volume vg00/vol03 is used by another device.
[root@vcs-storage ~]# lvremove /dev/vg00/vol04
  Logical volume vg00/vol04 is used by another device.
[root@vcs-storage ~]# lvremove /dev/vg00/vol05
  Logical volume vg00/vol05 is used by another device.
[root@vcs-storage ~]#

 

dmsetup ls 로 lvm 볼륨 확인

[root@vcs-storage ~]# dmsetup ls
vg00-vol02      (252:1)
vg01-vol05      (252:14)
vg00-vol01      (252:0)
vg01-vol04      (252:13)
vg01-vol03      (252:12)
vg01-vol02      (252:11)
vg01-vol01      (252:10)
vg00-vol01p8    (252:8)
vg00-vol02p8    (252:9)
vg00-vol03p8    (252:7)
vg00-vol04p8    (252:5)
vg00-vol05p8    (252:6)
vg00-vol05      (252:4)
vg00-vol04      (252:3)
vg00-vol03      (252:2)
[root@vcs-storage ~]#

 

dmset remove 로 볼륨 삭제

[root@vcs-storage ~]# dmsetup remove vg00-vol01p8
[root@vcs-storage ~]# dmsetup remove vg00-vol02p8
[root@vcs-storage ~]# dmsetup remove vg00-vol03p8
[root@vcs-storage ~]# dmsetup remove vg00-vol04p8
[root@vcs-storage ~]# dmsetup remove vg00-vol05p8
[root@vcs-storage ~]# dmsetup remove vg00-vol05
[root@vcs-storage ~]# dmsetup remove vg00-vol04
[root@vcs-storage ~]# dmsetup remove vg00-vol03

 

lvremove 명령어로 정상적으로 삭제 할수 있습니다.

[root@vcs-storage ~]# lvs
  LV    VG   Attr       LSize Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  vol01 vg00 -wi-a----- 1.00g
  vol02 vg00 -wi-a----- 1.00g
  vol03 vg00 -wi------- 1.00g
  vol04 vg00 -wi------- 5.00g
  vol05 vg00 -wi------- 5.00g
  vol01 vg01 -wi-ao---- 1.00g
  vol02 vg01 -wi-ao---- 1.00g
  vol03 vg01 -wi-ao---- 1.00g
  vol04 vg01 -wi-ao---- 5.00g
  vol05 vg01 -wi-ao---- 5.00g
[root@vcs-storage ~]# lvremove /dev/vg00/vol01
Do you really want to remove active logical volume vg00/vol01? [y/n]: y
  Logical volume "vol01" successfully removed
[root@vcs-storage ~]# lvremove /dev/vg00/vol02
Do you really want to remove active logical volume vg00/vol02? [y/n]: y
  Logical volume "vol02" successfully removed
[root@vcs-storage ~]# lvremove /dev/vg00/vol03
  Logical volume "vol03" successfully removed
[root@vcs-storage ~]# lvremove /dev/vg00/vol04
  Logical volume "vol04" successfully removed
[root@vcs-storage ~]# lvremove /dev/vg00/vol05
  Logical volume "vol05" successfully removed
[root@vcs-storage ~]# lvs
  LV    VG   Attr       LSize Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  vol01 vg01 -wi-ao---- 1.00g
  vol02 vg01 -wi-ao---- 1.00g
  vol03 vg01 -wi-ao---- 1.00g
  vol04 vg01 -wi-ao---- 5.00g
  vol05 vg01 -wi-ao---- 5.00g
[root@vcs-storage ~]#



 

goaccess 

goaccess 를 이용하면 nginx , apache log 를 실시간으로 분석 할수 있습니다.

web page 로 report 형식으로 볼수 있으며 cacti , nagios 만큼 설치가 어렵지 않습니다.

https://goaccess.io/

 

의존성 패키지 설치

[root@centos76 ~]# yum -y install epel-release
[root@centos76 ~]# yum -y install ncurses-devel gcc geoip-devel tokyocabinet-devel

 

goaccess 설치

[root@centos76 ~]# wget https://tar.goaccess.io/goaccess-1.3.tar.gz
[root@centos76 ~]# tar xvf goaccess-1.3.tar.gz
[root@centos76 ~]# cd goaccess-1.3/
[root@centos76 goaccess-1.3]# ./configure --enable-utf8 --enable-geoip=legacy

~중략
Your build configuration:

  Prefix         : /usr/local
  Package        : goaccess
  Version        : 1.3
  Compiler flags :  -pthread
  Linker flags   : -lnsl -lncursesw -lGeoIP -lpthread
  Dynamic buffer : no
  Geolocation    : GeoIP Legacy
  Storage method : In-memory Hash Database (Default)
  TLS/SSL        : no
  Bugs           : goaccess@prosoftcorp.com

[root@centos76 goaccess-1.3]#

[root@centos76 goaccess-1.3]# make && make install
[root@centos76 goaccess-1.3]# ln -s /usr/local/bin/goaccess /usr/bin/goaccess

 

goaccess 실행

[root@centos76 ~]# goaccess /var/log/nginx/access.log --log-format=COMBINED

 

 

html report 생성

[root@centos76 ~]# goaccess /var/log/nginx/access.log --log-format=COMBINED -a -o /usr/share/nginx/html/report.html