2016年5月17日火曜日

インフラエンジニアがWordPressを構築する。(CentOS7)

PHP、MySQL、CMSと最近興味のあるワードについて勉強しようと考えているときに
お勉強としてWordPressが最適かなと思い、今更ながら構築してみました。
ので、セキュリティ等は一切考慮しておりません、お勉強用です。

とりあえず下記環境にて

 CentOS7 minimal
 PHP 5.4.16
 MariaDB 5.5.47(CentOS7ではmysqlを指定してインストールしてもMariaDBになりますね)

【事前準備】

 ・/etc/selinux/config にてSELINUXを無効化
 ・最低限以下のパッケージをインストール、有効化
 
 
  yum -y update
  yum -y install mariadb mariadb-server php php-mysql wget
 systemctl enable mariadb.service
 systemctl start mariadb.service
 systemctl enable httpd
 systemctl start httpd
 
【導入準備】

 日本語WordPressパッケージをダウンロードしデータベースとユーザを作成します。

 
  cd home
 wget http://ja.wordpress.org/latest-ja.tar.gz
  tar -xzvf latest-ja.tar.gz
 
 
 
 mysql

 MariaDB[(none)]> CREATE DATABASE wordpress; #wordpress がデータベース名
 MariaDB[(none)]> GRANT ALL PRIVILEGES ON wordpress.* TO "admin"@"localhost" #ユーザ名 admin ホスト名 localhost
 MariaDB[(none)]> IDENTIFIED BY "password"; # password パスワード
 MariaDB[(none)]> FLUSH PRIVILEGES;
 MariaDB[(none)]> EXIT

 

  WordPressをインストールするためのwp-config.phpを作成します。

 
 cd /home/wordpress
  cp wp-config-sample.php wp-config.php
  vi wp-config.php

 
 mysqlで作成したデータベース名、ユーザ名、ホスト名、パスワードを割り当てます。

 
/** WordPress のためのデータベース名 */
define('DB_NAME', 'wordpress');

/** MySQL データベースのユーザー名 */
define('DB_USER', 'admin');

/** MySQL データベースのパスワード */
define('DB_PASSWORD', 'password');

/** MySQL のホスト名 */
define('DB_HOST', 'localhost');
 

【WordPress導入】

 WordPressファイルをwwwディレクトリにコピーします

 
 cp -fr /home/wordpress/* /var/www/html/
 
 
 WebブラウザにてWordPressサーバにアクセスします。

 http://[WordPressサーバのIPアドレス]/wp-admin/install.php

  サイト名、ユーザ名、パスワード、メールアドレス入力画面を入力します。
 最後のチェックボックスはチェックを入れることで検索エンジンに引っかかるようです。

 ログインすると下記ダッシュボードが表示されました。
 なんとなくわかりやすいですね




 何も編集していなくても下記のようなブログサイトができています。
 おお、よく見る構成ですね



 

2016年4月28日木曜日

Proxmox ve 4.2 リリース



2016/4/27にリリースされていました。

https://pve.proxmox.com/wiki/Roadmap#Proxmox_VE_4.2

【主な変更点】
・GUIの変更
・Debian 8.4.0ベース
・Linuxカーネル4.4.6
・KVM 2.5.1
・LVMシンプロビジョニングのサポート
・暗号化サポート
・LXCのもろもろ更新
・LXCのAlpine Linux, Ubuntu 16.04のサポート(あれ15.10は・・・?)
・HAマネージャの改善

GUIが今流行のフラットデザインになりましたね。
半年ペースで更新しているのはなかなか早いですね。

2016年4月4日月曜日

LXDでリモート接続、ローカルイメージサーバを作成する



LXDでは簡単にLXDホストへのリモート接続が可能です。

https://linuxcontainers.org/ja/lxd/getting-started-cli/

リモートサーバで以下コマンドを実行します。



lxc config set core.https_address [::]
lxc config set core.trust_password [パスワード]



ソースサーバで以下コマンドを実行します。



lxc remote add [リモートサーバ名] [IPアドレス]



以下コマンドでリモートサーバのコンテナを実行できます



lxc exec [リモートサーバ名]:[リモートサーバ先のコンテナ名] -- apt-get update



リモートサーバで下記コマンドでインポートしたイメージのリストを表示します


 lxc image list


下記コマンドでインポートしたイメージにエイリアスをつけて管理します



 lxc image alias create [エイリアス名] [フィンガープリント]


ソースサーバで下記コマンドを実行することでリモートサーバ先のイメージを取得できます。


 lxc launch [リモートサーバ名]:[エイリアス名] [コンテナ名]


Snappy Ubuntu CoreでLXDを試す



下記URLにてデモサイトが公開されており、かつコマンドについて丁寧に解説してあります。

https://linuxcontainers.org/ja/lxd/try-it/

LXDのイメージサーバは以下の3サーバです

https://images.linuxcontainers.org

ubuntu: (Ubuntu stable イメージ用 )
ubuntu-daily: (Ubuntu daily イメージ用 )
images: (その他多数のディストリビューション用 )



下記コマンドでそれぞれのイメージサーバに格納されているイメージをリスト化できます


 lxc image list ubuntu: | less


Ubuntu15.10イメージをインポートして[test]コンテナを作成、起動します
インポート時間は、、、長いです5分くらいかかります。


 lxc launch ubuntu:15.10 test


下記コマンドでコンテナのリストを表示します


 lxc list


下記コマンドでインポートしたイメージのリストを表示します


 lxc image list


下記コマンドでインポートしたイメージにエイリアスをつけて管理します


 lxc image alias create [エイリアス名] [フィンガープリント]





コンテナのプロパティは以下で確認します


 lxc info test
 lxc config show test


コンテナの起動、停止はstart stopです



lxc start test
lxc stop test


コンテナの内部シェル実行はexecです



lxc exec test -- /bin/bash


ホストから実行もexecですね


lxc exec test ip a


スナップショット作成はsnapshotです


lxc snapshot test snap0


上記スナップショットの削除はdeleteです
※lxc info test で確認可能


lxc delete test/snap0


コンテナの削除はdeleteです


lxc delete test






2016年3月30日水曜日

VMwarePlayerでUbuntu Snappy Coreを動かす


VMwarePlayerでUbuntu Snappy Coreをインストール後、LXDをインストールするまでの手順です。

以下URL参照
https://developer.ubuntu.com/en/snappy/start/?_ga=1.61199852.191622956.1459234529

VMwarePlayerやESXiでUbuntu Snappy Coreを動作させるためには以下の2つが必要となります。
①OVAテンプレート
②cloud-configのisoイメージ or vmdkイメージ

①は参照URLからダウンロードします。

http://cloud-images.ubuntu.com/ubuntu-core/15.04/core/stable/current/core-stable-amd64-cloud.ova

②は別途手動作成が必要です。

 Ubuntu15.04上でコマンドラインで作成します。
 
  user-data meta-data を作成します。


$ cat >> user-data <<"EOF
#cloud-config
snappy:
    ssh_enabled: true
password: passw0rd
chpasswd: { expire: False }
ssh_pwauth: True
EOF

$ cat >> meta-data << EOF
instance-id: $(uuidgen)
local-hostname: ubuntu-snappy
EOF

 上記ファイルを含むiso/vmdkイメージを作成します。


$ dd if=/dev/zero of=bloat_file bs=1M count=10
$ genisoimage -output seed.iso -volid cidata -joliet -rock user-data meta-data bloat_file
$ qemu-img convert -O vmdk seed.iso seed.vmdk


 上記iso/vmdkファイルをWinSCP等でダウンロードします。

①でダウンロードしたovaファイルをVMwarePlayerにインポートします。(ダブルクリックするとウィザード形式で仮想マシンが作成されます。)

VMwarePlayerの「仮想マシン設定」からCD/DVDを「追加」して②で作成したisoイメージをマウントします。

Ubuntu Snappy Coreが起動します。
ユーザ名は[ubuntu]パスワードはCloud-Configファイルにて記載したパスワード(上記では[passw0rd])です。

下記コマンドでLXDをインストールします。


sudo snappy install lxd.stgraber


デフォルトでSSH有効ですね。CoreOSよりもセキュリティは低いですが使いやすそうです。

2016年3月23日水曜日

dockerでubuntuデスクトップ環境を構築

dockerでデスクトップ環境を構築、Windowsリモートデスクトップにつなぐまでのメモです。
※実用性はなさそうですが・・・。


Windows10 DockerToolBoxで構築しました

1.ubuntuコンテナを起動

docker pull ubuntu
docker run --name ubuntu-dev -it ubuntu /bin/bash

2.ubuntuコンテナでxrdp lxdeをインストール

[コンテナ]#sudo apt-get update
[コンテナ]#sudo apt-get install xrdp lxde
[コンテナ]#passwd root
[コンテナ]#[rootのパスワードを入力]
[コンテナ]#exit

3.デスクトップ環境を構築したubuntuコンテナをcommit

docker commit ubuntu-dev ubuntu-desktop

4.ポート転送して起動

docker run --name ubuntu-desktop -p 3389:3389 -it ubuntu-desktop /bin/bash

5.docker-machine ls で defaultのコンテナのIPアドレスを確認

6.[リモートデスクトップ接続]でdefaultのIPアドレスを指定して接続

7.[sesman-Xvnc]でrootでログイン

日本語ロケールの設定等が必要ですが普通にデスクトップが使えました。
コンテナのサイズは879MBと大きいです。
コンテナをGUIで操作するときに活用できるでしょうか・・・?

2016年3月14日月曜日

Docker MachineでESXiにDockerSwarmクラスタを構成する



Docker Machineを使用してESXi6.0にDocker Swarmのクラスタ環境を構築した時のメモです。

CentOSAtomicHostやらgit for Windowsやら手動で色々試してみたのですが
どうもうまくいかず、結局マニュアル通りにやって動きました・・・。

 cannot connect to the docker engine endpoint となってどうしてもマネージャとクラスタの通信がうまくいかない・・・。

 クライアントはWindows10を使用しています。

1.クライアントにDocker Toolboxをインストールします。
 ※git for Windowsからスクリプトで導入するとDockerのバージョンが1.10.2 となりSwarmの
  サポート外になります。

 https://www.docker.com/products/docker-toolbox

2.インストール後、デスクトップの「Docker Quick Terminal」を起動します。
3.VirtuabBox上にDocker-Machine用Dockerが起動します。
4.以降は下記URLを参考にESXiにDocker Swarm環境を構築します。

 https://docs.docker.com/swarm/install-w-machine/
 https://docs.docker.com/machine/drivers/vsphere/

5.ESXi上に[manager][agent1][agent2]のDocker-Machineを作成します。


 docker-machine create --driver vmwarevsphere --vmwarevsphere-username=[ESXiのroot] --vmwarevsphere-password=[ESXiのpassword] --vmwarevsphere-vcenter=[ESXiのIPアドレス] manager

 docker-machine create --driver vmwarevsphere --vmwarevsphere-username=[ESXiのroot] --vmwarevsphere-password=[ESXiのpassword] --vmwarevsphere-vcenter=[ESXiのIPアドレス] agent1

 docker-machine create --driver vmwarevsphere --vmwarevsphere-username=[ESXiのroot] --vmwarevsphere-password=[ESXiのpassword] --vmwarevsphere-vcenter=[ESXiのIPアドレス] agent2


6.下記コマンドでdocker-machineが作成され、STATEがRunningとなっていることを確認します。


 docker-machine ls


7.Docker Swarmを構成するためのtokenを作成します。


 eval $(docker-machine env manager) #左記コマンドを実行することで[manager]でコマンドの実行が可能となります。
 docker run --rm swarm create
  0ac50ef75c9739f5bfeeaf00503d4e6e #左記ランダムなtokenが発行されるので以降使用します。


8.manager側の設定を行います。(変更箇所はtokenのみ)

 
 docker run -d -p 3376:3376 -t -v /var/lib/boot2docker:/certs:ro swarm manage -H 0.0.0.0:3376 --tlsverify --tlscacert=/certs/ca.pem --tlscert=/certs/server.pem --tlskey=/certs/server-key.pem token://[7で発行されたtoken]


9.agent1側の設定を行います。(変更箇所は[7で発行されたtoken]のみ)


 eval $(docker-machine env agent1)
 docker run -d swarm join --addr=$(docker-machine ip agent1):2376 token://[7で発行されたtoken]


10.agent2側の設定を行います。(変更箇所は[7で発行されたtoken]のみ)


 eval $(docker-machine env agent2)
 docker run -d swarm join --addr=$(docker-machine ip agent1):2376 token://[7で発行されたtoken]


11.Swarmが構成されたことを確認します。


 DOCKER_HOST=$(docker-machine ip manager):3376
 docker info

 ※Nameに[agent1][agent2]が表示されており[Running:2]等になっていればOK


12.適当にコンテナを起動します


 docker run hello-world


上記だけだとCoreOSよりも簡単にSwarmクラスタが構成できる印象でした。
ただ、一旦上記Docker-Machineを停止、起動するとクラスタ構成がわけわからなくなる・・・。
※「使い捨て」思想のためDocker-Machineの停止、起動自体、想定外の操作かもしれないですが。

実運用で使用するためにはまだまだ勉強が必要と感じました。