2018年6月25日月曜日

GCP Kubernetesクラスタの作成方法(nginx編)

GCPのコンテナオーケストレーションツール「Google Kubernetes Engine(GKE)」を使った
ネットワーク負荷分散のクラスターを作成を行う説明を記載する。


◾️利用リージョンの確認
最初にgcloudのデフォルト値・環境変数を設定を行なっていきます。

1)自分の [プロジェクト ID] を設定し、GCPの [ゾーン] と [リージョン] を選択する
必要があるので、利用可能なリージョン一覧を"Cloud Shell"より実行を行なってみる。

$ gcloud compute regions list



[プロジェクト名]
wordpress-204708
個人で、生成したプロジェクト名

[ゾーン名]
asia-northeast1-a 
”gcloud compute regions list”で、入力したゾーン一覧から選んだ:[a~c] のいずれか任意ゾーンを入力。

選択対象の各ゾーンについては、以下の表を参考にする。

[リージョン名]
asia-northeast1


◾️gcloudのデフォルト値を設定を行う。


$ gcloud config set project wordpress-204708 [プロジェクト名]
$ gcloud config set compute/zone asia-northeast1-a [ゾーン名]
$ gcloud config set compute/region asia-northeast1[リージョン名]
$ gcloud config list

◾️環境変数の設定

1)以下の手順で、環境変数の入力を行っていく。
$ export CLUSTER_NAME="httploadbalancer"

$ export ZONE="asia-northeast1-a" 
上記のデフォルト値で設定した同じゾーン

$ export REGION="asia-northeast1" 
上記のデフォルト値で設定した同じリージョン

[gcloud のデフォルト値] と [環境変数]で設定する値は
ゾーン と リージョンで同じ値にしないと Error になるので注意すること!!


◾️GKEでkubernetesクラスタの作成を行う。
1)例として、「5ノード(5インスタンス)」を起動してみる。

$ gcloud container clusters create networklb --num-nodes 5


Creating cluster networklb...done.という表示が出ると作成が成功になる。

2)kubernetes Engineからclustersを選択する。


3)以下、作成できていることを確認できる。



◾️Kubernetes に nginx をデプロイする

1)以下のコマンドを実行する。
$ kubectl run nginx --image=nginx --replicas=5
上記のように”created”が表示されていることを確認。

2)先ほど、5台のnginxをデプロイできたか確認を行ってみる。
$ kubectl get pods -owide

◾️nginx を 外部に公開する
1)負荷分散トラフィックを 5個のnginx インスタンスに送るネットワーク ロードバランサーを
作成を行います。

$ kubectl expose deployment nginx --port=80 --target-port=80 \
--type=LoadBalancer


◾️ネットワークロードバランサーのアドレスを確認

1)以下のコマンドで、ロードバランサのアドレスを確認してみる。
$ kubectl get service nginx


2)EXTERNAL-IPに表示されているIPアドレスをブラウザで叩いて
下記の表示になれば成功です。


◾️kubernetesの削除方法

以下、手順で上記に作成したkubernetesの削除方法の手順になる。
(同様にコントローパネルからも削除は可能。)
Cloud shellにて、以下のコマンドを実施すること!

1)サービスの削除を行う。
$ kubectl delete service nginx

2)レプリケーションコントローラの削除を行う。
$ kubectl delete deployment nginx

3)クラスターの削除を行う。
$ gcloud container clusters delete networklb

2018年6月20日水曜日

個人メモ:zapier

zapierから作成済みの既存のtwitterアカウント経由で
投稿した内容を連動させる。


https://www.digihide.ga

2018年6月14日木曜日

Docker for Mac(Ubuntu Desktopの導入方法)

以下、Docker for Macを使用してUbuntuのGui操作を可能にする手順を記載してみた。


◾️Docker for Mac導入
導入方法については、割愛。

◾️Socatの導入・起動
1)port6000(コンテナのGUI操作を行うx11用のボート)を通して、ホスト側の画面がコンテナ内と通信できるようにするために
使用する。

$ brew install socat


2)下記コマンドで、port6000(UnixGUI操作を行うxquartz用のポート)への通信をホスト側のディスプレイで
表示するようにします。
forkは複数のコネクションを管理できるようにするオプションで、reuseaddrはポートを再利用可能にするオプションです。

$ socat TCP-LISTEN:6000,reuseaddr,fork UNIX-CLIENT:\"$DISPLAY\"


◾️Xquartzの導入・起動
1)最近のmacOSではデフォルトでは入っていないので、導入と起動を行う。
$ brew cask install xquartz
$ open -a XQuartz 



◾️Dockerイメージの導入

$ docker pull ubuntu


◾️Dockerコンテナの作成・起動
1)dockerコンテナ側からMacにアクセスする際のホスト側のIPアドレスを取得します
$ ifconfig en0 | grep inet | awk '$1=="inet" {print $2}'


2)以下、上記で得たIPアドレスを記載して、dockerのコンテナの作成と起動を行なっていく。
$ docker run -it -e DISPLAY="xxx.xxx.xxx.xxx:0" ubuntu
(上記、アドレスは、先ほど取得したIPアドレスになる。)


◾️ホストにXサーバへの接続権限を付与

1)XquartzGUIアプリのメニューバーから「Applications」→「Terminal」から開く。


2)下記のコマンドを実行し、ホストにXサーバーへの接続権限を与えます。
xhost XXX.xxx.xxx.xxx
(上記、アドレスは、先ほど取得したIPアドレスになる。)


◾️Dockerコンテナ内にGUIアプリを導入・起動
1)コンテナ内で以下を実行する。
# apt-get update
# apt-get install ubuntu-desktop
# exit 
(コンテナを再起動するためexitを行う)

2)ホスト側でコンテナを再起動

docker restart CONTAINER_ID

3)対処のコンテナに入る。
docker run -it -e DISPLAY="xxx.xxx.xxx.xxx:0" ubuntu

4)以下、導入を行う。
# apt-get install nautilus

5)再起動したコンテナ内からファイルマネージャーを起動を行う。
# nautilus



<参照先>

https://qiita.com/ryoya-s/items/ee1daf9cab18c100c990




2018年6月9日土曜日

wordpress: フッター編集(ページ末端に表示されているコピーライトを消す)

◾️ページ末端に表示されているコピーライトの消したいので、以下を編集を行っていく。

1)編集対象のテーマ内にある、以下を編集する。
vi /home/wordpress/kusanagi-1/data/サイト名/DocumentRoot/wp-content/themes/twentyseventeen/footer.php


複数のテーマに"footer.php"が存在するので、間違いないように!!



2)赤文字の箇所を消す。
get_template_part( 'template-parts/footer/site', 'info' );

SSL(証明書設定)Let's Encrypt

●Let's Encrypt を導入して、証明書の設定を行ってみる。



1)以下の流れで、導入を行ってみる。
# cd /usr/local
# git clone https://github.com/certbot/certbot
# cd certbot

2)以下、実行する。
# ./certbot-auto certonly --standalone -t

Upgrading certbot-auto 0.24.0 to 0.25.0...
Replacing certbot-auto...
Creating virtual environment...
Installing Python packages...
Installation succeeded.
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator standalone, Installer None
Enter email address (used for urgent renewal and security notices) (Enter 'c' to
cancel): メールアドレスを入力する

-------------------------------------------------------------------------------
Please read the Terms of Service at
https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. You must
agree in order to register with the ACME server at
https://acme-v01.api.letsencrypt.org/directory
-------------------------------------------------------------------------------
(A)gree/(C)ancel: a

-------------------------------------------------------------------------------
Would you be willing to share your email address with the Electronic Frontier
Foundation, a founding partner of the Let's Encrypt project and the non-profit
organization that develops Certbot? We'd like to send you email about our work
encrypting the web, EFF news, campaigns, and ways to support digital freedom.
-------------------------------------------------------------------------------
(Y)es/(N)o: y
Please enter in your domain name(s) (comma and/or space separated)  (Enter 'c'

to cancel): ドメイン名を入力する。



8)以下、認証鍵の指定を行う。
vi /etc/nginx/conf.d/www.digihide.ga_http.conf

====追加内容================
  listen 443 ssl;
  ssl_certificate     /etc/letsencrypt/live/www.dighide.ga/fullchain.pem;
  ssl_certificate_key /etc/letsencrypt/live/www.dighide.ga/privkey.pem;
==========================

●赤字は、上記で作成した認証鍵


9)nginxを再起動を行えばSSLが適応されているはず。


10)有効期限が3ヶ月ということなので、更新を行う必要がある。
# ./certbot-auto renew


KUSANAGI Runs on Docker(初期導入でのトラブル):メモ

結構ハマったポイントとして、導入して
すぐにwebページに移動しても、サイトが表示されないので
しばらく待ってみること!



SSL(証明書設定)Let's Encrypt :メモ

◾️メモ
実行後に、以下の表示が出てしまった。
(3)の実行を強制終了したので、原因のようだ。)

===以下、エラー内容====
Obtaining a new certificate
Performing the following challenges:
http-01 challenge for www.digihide.ga
Cleaning up challenges
Problem binding to port 80: Could not bind to IPv4 or IPv6.
===================


4)ということで、強引な対策だが以下dockerをストップする。
# sudo systemctl stop docker

5)再度、3)と同じ手順でドメイン名を入力する。
#./certbot-auto certonly --standalone -t


上記、実行後、成功した。

KUSANAGI Runs on Docker(プラグイン更新方法について)

KUSANAGI Runs on Dockerの仕様でプラグインの更新を行うと
ftpのパスワードを聞かれてめんどくさいことになる。
ftpからの導入を無効にする方法を記述する。


1)以下を編集する。

vi /home/wordpress/kusanagi-1/data/ドメイン名/DocumentRoot/wp-config.php


2)最終行に以下を追加する。
====追加内容=====
define('FS_METHOD','direct');



上記によりftpを無効にしたプラグインの更新が出来るようになった。

2018年6月8日金曜日

KUSANAGI Runs on Dockerの導入手順(Wordpress)

◾️構築前の準備
1)以下のサイトで、一年の無料アドレスを取得する。
http://www.freenom.com/ja/index.html

2)HTMLのキャッシュように以下を利用する。(無料で利用できる)
https://www.cloudflare.com

上記、設定方法については、割愛する。


◾️KUSANAGI Runs on Dockeの構築開始
1)swapファイルを生成する。

sudo dd if=/dev/zero of=/swapfile bs=1M count=1024
sudo mkswap /swapfile
sudo swapon /swapfile
sudo sed -i '$ a /swapfile                                 swap                    swap    defaults        0 0' /etc/fstab

2)sudo rebootを行う

3)dokerの導入を行う
curl -fsSL https://get.docker.com/ | sh
sudo systemctl enable docker


4)sudo rebootを行う

5)以下、メンドくさいので、shellにした。

======== shell =========
sudo curl -L https://github.com/docker/compose/releases/download/1.21.0/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose

sudo chmod +x /usr/local/bin/docker-compose
sudo curl https://www.karelie.net/wp-content/uploads/wordpress.tar.gz --output "/home/wordpress.tar.gz"

sudo tar -zxvf /home/wordpress.tar.gz -C /home/
sudo chmod 707 /home/wordpress/*/docker-compose.yml
sudo docker network create --driver bridge common_link


sudo sed -i -e "s/{データベースルートパスワード}/*****/g" /home/wordpress/mariadb/docker-compose.yml
sudo sed -i -e "s/{データベースユーザー名}/*****/g" /home/wordpress/mariadb/docker-compose.yml
sudo sed -i -e "s/{データベースパスワード}/*****/g" /home/wordpress/mariadb/docker-compose.yml
sudo sed -i -e "s/{データベース名}/*****/g" /home/wordpress/mariadb/docker-compose.yml

sudo sed -i -e "s/{ドメイン}/*****/g" /home/wordpress/kusanagi-1/docker-compose.yml
sudo sed -i -e "s/{E-MAILアドレス}/*****/g" /home/wordpress/kusanagi-1/docker-compose.yml

注意)上記の*****に対象のユーザ名、パスワード、データベース名、ドメインなどを記載すること!!

sudo sed -i -e 's/BCACHE: "off"/BCACHE: "on"/g' /home/wordpress/kusanagi-1/docker-compose.yml
sudo sed -i -e 's/FCACHE: "off"/FCACHE: "on"/g' /home/wordpress/kusanagi-1/docker-compose.yml


sudo docker build -t kusanagi-php7 /home/wordpress/kusanagi-php7/

docker-compose -f /home/wordpress/nginx-proxy/docker-compose.yml up -d
docker-compose -f /home/wordpress/mariadb/docker-compose.yml up -d
docker-compose -f /home/wordpress/kusanagi-1/docker-compose.yml up -d


◾️ポイント
GCPの低スペックのサーバーにしているので、導入後に
webブラウザからアクセスすると"502 Bad Gateway"の表示が出てしまう。
サーバを再起動することによりwordpressの画面が表示できた。




2018年6月6日水曜日

GCP(ssh接続)mac編

mac経由で、GCPに接続する方法を以下になる。

1)mac側で、Terminalを開く。



2)以下のディレクトリに移動する。
cd ~/.ssh

3)認証鍵を作成する。
ssh-keygen -t rsa -C "GCP側のサーバで生成したアカウント"
  ->GCP接続時のパスワードを記載したら、メモしておくこと!!

4)生成した認証鍵を表示させる。
cat id_rsa.pub

=========認証鍵の内容=======================
ssh-rsa ◆GCP側のサーバで生成したアカウント


●上記を行う前に、GCP側のサーバでアカウントを生成をする必要がある。
(useraddコマンドなど)


5)GCP側の画面にて、VMインスタンスからメタデータを選ぶ。

①SSH認証鍵を選択。
②項目を追加を選ぶ。
③赤枠内に、上記(4)で表示させた内容をペーストさせる。
④保存を押す。



6)mac側のTerminalにて、以下のコマンド投入することにより
GCP側のサーバにアクセスが可能となる。

ssh -i .ssh/id_rsa.pub user名@CGPのサーバ側IP
   ->認証鍵を作成時に記載したパスワードを入力する。


以上で、GCPに接続出来た。



ハッキングツール一覧(ホワイトハッカー編)

  1. ポート・ネットワークスキャン系 Nmap :標準。ポート・サービス検出・OS推定まで。 # 単純なポートスキャン nmap 192.168.1.10 # 開いているポートとサービスを詳細にスキャン nmap -sV -O 192.168.1.10 # 複数ホストをスキャ...