外からownCloudへアクセスする

家の中ではアクセスできるようになったownCloud。
当然外からもアクセスしたい。そのためにDMZ帯にたてたのだし。

また, 外にさらすのでポート番号は変えたい。(例えば8080等)

ssl.conf  を編集。

/etc/httpd/conf.d/ssl.conf
・・・
Listen 8080
・・・
<VirtualHost _default_:8080>

※ 事前にブロードバンドルータ側でGlobal IP AddressとサーバのIP AddressのNAT設定はしておく

大雑把な構成はこんな

httpdを再起動してアクセスすると, ポート番号は変わったものの外からのアクセスができない。
できないというか, SSLの確立でダメになっているみたい。
パケットのアドレスは変換されるが, SSLのヘッダに組み込まれたアドレスが外のGlobal IP Addressになっていて, 宛先違うじゃないのーって感じでサーバ側から拒否られているんだろう。(多分・・・)

調べてみるとtrusted_domainという設定が効いているらしく, ここも手を加えないと外からアクセス出来ない。
/var/www/html/owncloud/config 配下にある config.php を編集する。

/var/www/html/owncloud/config/config.php
<?php
$CONFIG = array (
・・・
・・・
  ‘trusted_domains’ =>
  array (
    0 => ‘192.168.2.50’, ‘globalIPAddress’,   /**  これを追記 **/
  ),
  ‘datadirectory’ => ‘/home/owncloud’,
  ‘overwrite.cli.url’ => ‘http://192.168.30.10/owncloud’,
 ・・・
・・・
  ‘loglevel’ => 1,
);

ついでにユーザデータのディレクトリの指定もここで変えられるから変えた。
※ これはパーティションの都合・・・

ここを変えた後はもとのファイルの移行をやっておく。

cp -rfa   /var/www/html/owncloud/data/*  /home/owncloud 

で, 改めてhttpdを再起動して完了。

今度はうまく行った。

うまく行ったといっても, クライアント側でアカウントを外用/中用と2つ作ってイチイチ切り替えなくてはならない。
なんかいい方法あるのかな。まぁ, タダだし文句は言うまい。

ownCloudのスループットをなんとなく見てみる

入れてみたあと,どんだけ使えるのかがきになるところ。
140MBのファイルを共有フォルダへ入れて同期にどれだけ時間がかかるのか見てみた。
家の回線はau光1Gでブロードバンドスピード測定サイトで測ると大体上りで40~50Mbpsは出る。
対してLAN内は1Gの環境。サーバは古いPCを代用したしょぼいものでもそれなりに速度でるだろうとは思っていたけど, なかなかいい結果でした。
ownCloudのクライアントがホスト1つしか登録できないのでLAN内限定になってしまうが, スマホの写真をバカスカと外から共有かけるようなことはしないから, 今のところはいいか。
Dorpboxは帯域頭打ちとなった。
サービス側の帯域制御の関係かな。

LAN内なのでサクッと終わった。
家族でスマホの写真共有はこれで十分かもしれないね。

ownCloudを入れる

Dropboxの容量が足りないと(妻)が言ってきたので家にownCloudを立てて自前オンラインストレージ的に使えるようにしようと考えた。

で, 早速入れてみる。
(今の最新バージョンは8.0)

サーバはCentOS7なので手順にしたがって入れる。
ここに手順が公開されています。

# cd /etc/yum.repos.d/# wget http://download.opensuse.org/repositories/isv:ownCloud:community/CentOS_CentOS-7/isv:ownCloud:community.repo# yum install owncloud

あとはSELinuxの設定も必要となるが, うちは無効化しているので飛ばす。

あとはブラウザで http://サーバのIPアドレス/owncloud/ へアクセスしてアカウントのセットアップをすればOK。

が, mariadbにownCloudのデータベースとユーザがなかったのでそれを事前に作っといた。

あとはクライアントアプリをインストールして完了。

HTTPS化はこちらこちらなどを参考に。


余談
こっちでHTTPS化するとZabbixも引きずられてHTTPS必須になった。

これは/etc/httpd/conf.d/zabbix.conff 内に SSLEngine off を記述すればOK。


余談2 (2015/02/25追記)
ownCloudのWebUIで「PHPのコードがUTF-8になってないよー」と警告が出ていたので /etc/php.ini を編集してhttpdを再起動。

/etc/php.ini 
; PHP’s default character set is set to empty.
; http://php.net/default-charset
default_charset = “UTF-8”  ; これをコメントアウト

息抜き

Rubyがなかなか進まないので息抜きがてらZabbix2.4をインストした。

ここにしたがってパッケージを追加してやる。

1) リポジトリ登録
# rpm -ivh http://repo.zabbix.com/zabbix/2.4/rhel/7/x86_64/zabbix-server-2.4.3-1.el7.x86_64.rpm
http://repo.zabbix.com/zabbix/2.4/rhel/7/x86_64/zabbix-server-2.4.3-1.el7.x86_64.rpm を取得中
警告: /var/tmp/rpm-tmp.VOoJhc: ヘッダー V4 DSA/SHA1 Signature、鍵 ID 79ea5ed4: NOKEY
エラー: 依存性の欠如:
        OpenIPMI-libs >= 2.0.14 は zabbix-server-2.4.3-1.el7.x86_64 に必要とされています
        fping >= 3 は zabbix-server-2.4.3-1.el7.x86_64 に必要とされています
        iksemel は zabbix-server-2.4.3-1.el7.x86_64 に必要とされています
        net-snmp は zabbix-server-2.4.3-1.el7.x86_64 に必要とされています
        unixODBC は zabbix-server-2.4.3-1.el7.x86_64 に必要とされています
        zabbix は zabbix-server-2.4.3-1.el7.x86_64 に必要とされています
        zabbix-server-implementation = 2.4.3-1.el7 は zabbix-server-2.4.3-1.el7.x86_64 に必要とされています

色々足りない・・・。

足りないものを入れる。

その前にyumのプライオリティを設定できるようにyum-plugin-prioritiesを入れる。

fpingとiksemelは標準パッケージで提供されてないらしく, RPMfforgeリポジトリから入れるのがいいらしい。
(パッケージってすごく便利だけど, なんか色々と背景がめんどくさいね。いや, 自分でコンパイルして入れるよりも全然いいんだけどさ)

RPMforgeのリポジトリの設定の仕方はググる。
1) RPMforgeリポジトリ登録
2) priorityを設定(20にした) そしてzabbixのpriorotyはなんとなく10に・・・。
以上。
あとは再びfping/iksemelのインストール。
# yum –enablerepo=rpmforge -y install fping

iksemelのパッケージが見つからないのでzabbixのnonn-supportから直接インストールした。
# rpm -ivh http://repo.zabbix.com/non-supported/rhel/7/x86_64/iksemel-1.4-2.el7.centos.x86_64.rpm

んーこれだったらfpingも合わせておけばよかったかな。ま, いっか。

再びZabbixインストールへ戻る。

2) zabbixインストール
# yum –enablerepo=zabbix install zabbix-server-mysql zabbix-web-mysql
# yum –enablerepo=zabbix install zabbix-agent

3) Database作成
※事前にmariadb, mariadb-serverをインストールしておく

# mysql -u root -p
Enter password:
Welcome to the MariaDB monitor.  Commands end with ; or g.
Your MariaDB connection id is 11
Server version: 5.5.41-MariaDB MariaDB Server

Copyright (c) 2000, 2014, Oracle, MariaDB Corporation Ab and others.

Type ‘help;’ or ‘h’ for help. Type ‘c’ to clear the current input statement.

MariaDB [(none)]> create database zabbix character set utf8 collate utf8_bin;
Query OK, 1 row affected (0.00 sec)

MariaDB [(none)]> grant all privileges on zabbix.* to zabbix@localhost identified by ‘z@bbix’;
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> quit;
Bye


# mysql -u root -p zabbix < ./schema.sql
Enter password:
# mysql -u root -p zabbix < ./images.sql
Enter password:
# mysql -u root -p zabbix < data.sql
Enter password:

完了。

4) zabbix_server.confの編集

# vi /etc/zabbix/zabbix_server.conf
DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=db-pass

5) PHPの設定
# vi /etc/httpd/conf.d/zabbix.conf
php_value max_execution_time 300
php_value memory_limit 128M
php_value post_max_size 16M
php_value upload_max_filesize 2M
php_value max_input_time 300
php_value date.timezone Asia/Tokyo

ここはタイムゾーンだけいじった。

6) zabbix起動

# systemctl enable zabbix-server
# systemctl start zabbix-server

ここまできたら http://zabbixのIP/zabbix/ にアクセスできるんだがFirewalldが効いていて弾かれる。
んーーーあっちゃこっちゃで制御するとめんどいし, うちはL3SWでACLかけるからサーバ側のFW系止めちゃうか。SELinuxも合わせて。

ってことで

# setenforcce 0
# systemctl stop firewalld
# systemctl disable firewalld

以上。

こっからはWebbUIにしたがって設定していく。

いやーやっぱ目に見える結果があるといいね。

rubyのバージョン管理

どうもRubyにおいてはバージョン管理がついてまわるそうな。
たぶん, 開発環境においては複数のバージョンでテストを行ったりするんだろう。

そういった意味では(今の)自分には不要なもの。
だけども, とりあえずこの手のものは一般的な環境に慣れておく必要があると思うので, rvmを入れておく。
rbenvというものもあるが, 最初に目に入ったのがrvmだからこっちにした。

Installは本家サイトにあるまんま。

# gpg –keyserver hkp://keys.gnupg.net –recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3
# curl -sSL https://get.rvm.io | bash -s stable

rubyは2.2.0をインストール。
こんな感じでインストールされる。

# rvm install ruby-2.2.0
# rvm list

 rvm rubies

 =* ruby-2.2.0 [ x86_64 ]

 # => – current 
 # =* – current && default 
 # * – default 

ちなみにPathは

/usr/local/rvm/rubies/ruby-2.2.0/bin/ruby


とrvm配下にインストールされるのね。
いくつかのバージョンを入れて使い分ける場合は

# rvm use ruby-2.2.0



などして使うバージョンを指定する。
ま, 今んとこコレしか使わないからあんま関係ないか。

ちなみに, 自分は十数年前のSolaris7時台からUNIX系の時が止まっており, そのころからtcshユーザだったが, rvmはtcshには適用していない。(ただし, 色々設定すればできるそうな)

個人的にbashがどーも苦手なのでこの際高機能で崇められているzshへ切り替えた。

コーディング

これからはインフラ屋もコーディングができねば飯を食っていけないと思い, なんとなーくRubyでも勉強してみっかと思い立ったものの座学だと限界があるなーとつくづく実感。

たぶん, コードを書くことにただならぬ情熱がないと一人で学ぶにはどんな言語であろうとも一定以上のレベルは超えられないのではないかと・・・。

とはいっても, 何事もやらねば始まらないのでとりあえずCentOS7をVMにインストールして, Rubyを入れてとなんやかんややり始めている。

本当はPupetやChefといった自動化ツールでSDN環境の管理のためにRuby使ってAPIを叩いてなんやかんやできたらなーなんて思っていたんだけど, まぁ, まずはWEBで天気予報や地図といった公開されているAPIを叩いて情報表示させるあたりまで理解できるところを目指す。
(Phythonやれよって話は聞かない)

まぁ, この期間にできるかぎりのことはやろうと思うが並行してこういったコミュニティにも参加しようかしらね。

インフラの勉強にあたり

さて,インフラエンジニアとして今後もやっていくべく改めてスキルアップを図ろうと昨日から準備を始めたわけだが思いの外時間がかかっている。

やったこと

古いPCを持ちだして再セットアップ。
余っているDiskを増設してESXをインストール。
ここでまず躓く。
ESXの条件は
・64ビットCPU
・2G以上のRAM
・NICが1個必要
などなど,ググれば詳細が出てくるんだが,NICが鬼門だった。
引っ張り出してきたマザーボードはASUSのP5KPL-AM EPUなんだが,このオンボードNICがAtheros製らしい。ESXは基本的にIntel以外のNICは標準では認識せず,インストール時に「おまえ,NIC無いからやり直しな」って弾かれる。
Realtekなら有志達がカスタムOSやらドライバを作っていたりしたんだが,Atheros L1Eってのがどうしても見つからなかった。
やむなくアマゾンにてIntel製の安いPCI NICを調達した。

かったのはこれ

で,本日ようやくインストールまで終え,次はVMにCentOSを入れて色々試す土台を作るところに来ている。

簡単に環境を書くとこんな感じ。
うちはL3SWが1台あるのでこれで外-DMZ-LANと分けている。

設計としてはESXのManagementポートはLANのセグメント。VMは外に公開できるようにDMZのセグメントを割り当てるようにしたい。

つーことで,NIC1枚しか持っていない我がマシンはL3との接続をTrunkにしてやる必要がある。

各セグメントでは適宜ACLを設定する

SW側のインタフェースはTrunk。カプセル方式はdot1qじゃないとだめ。
ESX側はManagement用のNWにVLANを指定してやればOK。
特にここは迷わない。

これは至ってシンプル
できればNICは分けたかったけど予算的に無理

さて,あとはCentOS7入れてOwnCloudとか入れて遊んでみるか。

あ,そもそも勉強するぞ!と心に決めたRubyの環境も入れな・・・。