このブログを検索

2014/11/24

webdav@nginx@ubuntu@さくらのVPS

nginxでwebdavをやるには、以下の二つのモジュールが必要。

http_dav_module
nginx-dav-ext-module


nginx -V 

で確認できる。

--with-http_dav_module
--add-module=/build/buildd/nginx-1.6.2/debian/modules/nginx-dav-ext-module

があればよい。

ちなみに-Vの結果は1行で出るので、grepしてもわからない。

こういうときはどうやればいいのだろう?

とりあえずテキストにコピーして探した。




nginx自体は 

sudo apt-get install nginx 

でインストールできるのだが、何もしないと上記のモジュールなしにインストールされてしまう。



検索すると、ソースコードをダウンロードして、モジュールを組み込んでビルドする、
という方法を紹介している人が見つかるが、めんどくさいしやってみたら途中で
わからなくなった。

こんなことしなくても、最新を持ってくるとかすれば入ってるんじゃないのか・・・
と検索し、下記のページのとおりにすると、無事2つのモジュール入りがインストールできた。

http://qiita.com/hiroq/items/420424bc500d89fd1cc8




さて、webdavの設定自体はそれほど大変ではない。

## webdav
        server {
                listen 10080 default;
                server_name     example.com;
                root    /var/webdav;
                charset utf-8;
                location / {
                        dav_methods PUT DELETE MKCOL COPY MOVE;
                        dav_ext_methods PROPFIND OPTIONS;
                        dav_access user:rw group:rw all:r;
                        client_body_temp_path /tmp/nginx/webdav;
                        create_full_put_path on;
                }
        }
}


いちおうクライアントからアクセスでき、ファイルのコピーもできるが、
サーバにおこうとすると、「ファイルがすでにあるが上書きするか」
というメッセージが表示されてしまう。

なんか間違ってるんだろう・・・。後で直す。



ちなみにクライアントはCarotDav@windows7home premium 64bit

nginxでリバースプロキシ設定

さくらのvpsを2台借りた。

1台目はcentosでapacheが動いている。

2台目をリバースプロキシにして、今まで1台目にアクセスするときに使用していたURLに
クライアントがアクセスすると、2台目がリクエストを1台目に転送するようにする。

別にそうする必要性はなにもないのだが、ちょっとやってみたかっただけ。



まず、DNSに登録している既存のAレコードを、新しいサーバのIPアドレスに変更する。

<今まで>
www.example.com    123.xx.xx.100

<変更後>
www.example.com    123.xx.xx.200 ※2台目
www2.example.com   123.xx.xx.100 ※1台目



2台目はubuntuをインストールし、httpdはnginxにする。

これも必要性は別になく、違うものを使ってみたかっただけ。



ubuntuをインストールしたばかりなので、

sudo apt-get update

をする。

sudo apt-get upgrade

もする。

これらの必要性もいまいちよくわからないが、一応やっておく。


nginxをインストールする。

sudo apt-get install nginx


firewallを設定する。

sudo ufw allow http



クライアントから www.example.com にアクセスしてみる。

nginxのテストページが表示される。



リバースプロキシの設定の仕方は、検索するとたくさん出てくるが、
設定をどこに書くかが人によって違う。

いろいろ試したが、/etc/nginx/nginx.conf に書いたら動いた。

sudo vi /etc/nginx/nginx.conf


http {

        ##
        # Basic Settings
        ##

        sendfile on;
        tcp_nopush on;
    ...............
}


"http"のところに、下記の内容を追加する。


## reverse proxy
        server {
                server_name     www.example.com;
                location / {
                        proxy_pass http://123.xx.xx.100; ※転送先のWEBサーバのIPアドレス
                }
        }



これでとりあえず、動く。

ほかにもいろいろ設定したほうがよいところなどがあるようだが、
とりあえず下記の2行を追加した。


## reverse proxy
        server {
                server_name     www.example.com;
                location / {
                        proxy_pass http://123.xx.xx.100;
                }
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; ※1
                proxy_set_header X-Forwarded-Host $host; ※2
        }
}


これらがないと、転送先のサーバのアクセスログで、アクセス元が全部リバースプロキシになってしまう。


私のWEBサイトには、アクセス者のIPアドレスとホスト名を表示するページがあるのだが、
そこが全部リバースプロキシサーバのIPアドレスとホスト名になってしまう。


※1だけいれれば変わると思ったが、変わらず、
※2をいれてようやく変わった。

※2だけでいいのかと試したらダメで、どうも両方必要なようだ。


nginxの設定を確認したいときは 
$ sudo /etc/nginx$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

サービスの再起動
$ sudo service nginx restart





ubuntuの管理者権限

ubuntuでは基本的に rootにsuしない。

本当はubuntuでなくてもrootにはむやみになるものではないが。


インストールする時にひとつユーザーを作成するが、
それにはsudoできる権限が与えられる。

root に suするには、sudo su をすればよい。


さて、先ほど一つしかないユーザアカウントでsudoしようとしたら、
できません、と言われた。

どうやらグループ設定を上書きしてしまったようだ。

suすらできない。


まだたいした設定はしていないので、OSを再インストールすることにした・・・。

FAT-fs (mmcblk0p1): Volume was not properly unmounted. Some data may be corrupt. Please run fsck.

[ 15.968442] FAT-fs (mmcblk0p1): Volume was not properly unmounted. Some data may be corrupt. Please run fsck.

あと、起動したときにこんなログが記録されている。

気持ち悪いので調べていろいろやってみたが、消えない。


windowsでも、無理やり電源を落とした後に、チェックディスクを実行してください、
となることがあるから、それと似たようなものだと思うのだが、

まず、fsckはマウントしているボリュームをunmountしないといけない。

が、何がマウントされているのか、fsckをする対象となるボリューム(?)はなんなのか、
などがわからない。


あ、raspberrypiの話です。

raspberrypiの無線LAN dhcp

久しぶりにraspberrypiを触った。

前回設定したときに使っていた無線LANルータが違うものになっていたので、
設定しなおしたがうまくいかない。

DHCPDISCOVER on wlan0 to 255.255.255.255 port 67 interval 7
DHCPDISCOVER on wlan0 to 255.255.255.255 port 67 interval 14
DHCPDISCOVER on wlan0 to 255.255.255.255 port 67 interval 20
DHCPDISCOVER on wlan0 to 255.255.255.255 port 67 interval 20
No DHCPOFFERS received.
No working leases in persistent database - sleeping.

こうなってしまう。


調べた結果、
wpa_supplicant.conf を使わず、
/etc/network/interface
に直接SSIDとwpa-pskを書けばよいという情報があったので、
なんでやねんと思いつつやったら確かに行けた。


auto wlan0
allow-hotplug wlan0
iface wlan0 inet dhcp
#wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
wpa-ssid "myssid"
wpa-psk "mypassword"
iface default inet dhcp




・・・バグだろ、こんなの。

2014/11/22

samba

さくらのVPSでwebdavを使えるようにしたが、

sambaが使いたくなった。

あたかもパソコンのローカルドライブであるかのように、
さくらのVPSのファイルを操作できるのである。


sambaの設定自体はたいしたことがない。

が、うまくいかない。



Windowsのコマンドプロンプトで、

\\example.com\samba

とやると、30秒くらいかな、たって、「アクセスできません」となる。



コマンドプロンプトから

net view \\example.com\samba

とやると、

システムエラー53が発生しました。
ネットワークパスが見つかりません

となる。


sambaが動作するために必要なことは、

・ディレクトリが存在している、アクセス権がある
・サーバで必要なポートを開放している
・クライアントで必要なポートを開放している(ファイル共有が有効になっている)

とか、いろいろあって、それぞれは問題ない。


が、どうも、一番最初にクライアントから送信される TCP 445の synが、
サーバに届いていない。


まず、クライアントであるWindows7で、wiresharkでキャプチャしてみる。

すると、サーバ宛の、TCP dst port 445のsynが送信されているのが確認できる。
これの応答がない。
2回再送されたのち、なぜかpingが飛ぶ。
これは応答がある。

そのあと、さらに3回再送される。

これを見れば誰もが、「サーバでport 445を待っていないか、firewallで開けてないんでしょ」
と思うだろう。

サーバでnetstatすると、

tcp        0      0 0.0.0.0:445                 0.0.0.0:*                   LISTEN

が確認できる。


iptablesも設定して問題なく、
さらに、iptables自体を止めてしまってもダメだ。




サーバでtcpdumpしてみる。
自分が接続しているsshとか余計なものを除外して、
さっきの net view をやっても、何も表示されない。

適当なポートを指定してtelnetしてみると、
接続はできないがtcpdumpでsynが見える。

これは、クライアントでもサーバでもない何かがTCP445を止めているとしか思えない。

JCOMのルータだろうか?



風呂に入っているときに、思いついた。
じゃあ、iPhoneでテザリングしてやってみたらどうか。


JCOM回線を使わず、iPhoneテザリングでインターネットにアクセスすると、
パスワードプロンプトが出た。


やった!!


ユーザ登録やフォルダのパス名やアクセス権を直して、
使えるようになった。


さて、jcomルータをどうするかだ・・・。







2014/11/09

さくらのVPS(ubuntu)にhttpdをインストール

httpサーバと言えばapache、というのは昔の話・・・・

と思ったけど調べるとやっぱりapacheが使われているようだ。

でも、apache2。



sudu apt-get install apache2


インストールが終わった。もしかしてもう動いてるのか、とアクセスしてみるが、ダメ。

ファイアウォールだ。

sudo ufw allow http


つまり、2行のコマンド入力で httpサーバ構築が完了するのである。

さくらのVPSにGNS3をインストール(ubuntu)

とりあえず動いた・・・。





centosはメモリ1GBだから、GNS3を動かすのはちょっときついかな。

基本的に下記のガイドのとおり。

https://community.gns3.com/servlet/JiveServlet/download/38-7963/GNS3%20Getting%20Started%20Guide%201.0.pdf


ubuntuには、pythonは2系と3系が両方入っている。

pycrypto とかいうのがインストールされるところでエラーになって、
python2.7-dev と python3.4-dev をいれた。

たぶん3.4だけでいいのだと思う。


さくらのVPSにGNS3をインストール(centos)

gns3.com にインストールガイドがあるが、ubuntu用である。

centosにいれる。

とにかくいろんなものが必要。というか、足りない。

エラーになるたびメッセージをgoogleで検索して、必要なものをインストールしていった・・・。

どれも、それが何なのか全然わからないまま・・・。


先に結論を言うと、うまくいかなかった。

ので、正式なものは後日書くとして、
メモを残す。



まずdynamips

cmake

libpcap-devel

libuuid-devel.x86_64

libelfとかなんとか

dynamipsはうまくいった。



次に gns3server


python3

distribute

zeromq 4.0.5


Searching for pyzmq>=14.0.0
Reading https://pypi.python.org/simple/pyzmq/
Reading http://github.com/zeromq/pyzmq
Best match: pyzmq 14.4.1
Downloading https://pypi.python.org/packages/source/p/pyzmq/pyzmq-14.4.1.zip#md5=0cab6e0047107badf68a0a0fa4ae30d1
Processing pyzmq-14.4.1.zip
Writing /tmp/easy_install-khz_iw/pyzmq-14.4.1/setup.cfg
Running pyzmq-14.4.1/setup.py -q bdist_egg --dist-dir /tmp/easy_install-khz_iw/pyzmq-14.4.1/egg-dist-tmp-xy0lnt
warning: no files found matching 'tools'
no previously-included directories found matching 'docs/build'
no previously-included directories found matching 'docs/gh-pages'
warning: no previously-included files found matching 'bundled/zeromq/src/Makefile*'
warning: no previously-included files found matching 'bundled/zeromq/src/platform.hpp'
warning: no previously-included files found matching 'zmq/libzmq*'
warning: no previously-included files matching '.deps/*' found anywhere in distribution
warning: no previously-included files matching '*.so' found anywhere in distribution
warning: no previously-included files matching '*.pyd' found anywhere in distribution
warning: no previously-included files matching '*.pyc' found anywhere in distribution
warning: no previously-included files matching '.git*' found anywhere in distribution
warning: no previously-included files matching '.DS_Store' found anywhere in distribution
warning: no previously-included files matching '.mailmap' found anywhere in distribution
warning: no previously-included files matching 'Makefile.am' found anywhere in distribution
warning: no previously-included files matching 'Makefile.in' found anywhere in distribution
Using zmq-prefix /usr/local (found via pkg-config).
************************************************
Configure: Autodetecting ZMQ settings...
    Custom ZMQ dir:
build/temp.linux-x86_64-3.3/scratch/tmp/easy_install-khz_iw/pyzmq-14.4.1/temp/timer_createcmeorh.o: In function `main':
timer_createcmeorh.c:(.text+0x15): undefined reference to `timer_create'
collect2: ld はステータス 1 で終了しました
    ZMQ version detected: 4.0.5
************************************************
error: Setup script exited with error: in 'ext_modules' option (extension 'zmq.devices.monitoredqueue'), 'sources' must be present and must be a list of source filenames


ここでダメ。




GUI




Searching for pycrypto>=2.1,!=2.4
Reading https://pypi.python.org/simple/pycrypto/
Best match: pycrypto 2.6.1
Downloading https://pypi.python.org/packages/source/p/pycrypto/pycrypto-2.6.1.tar.gz#md5=55a61a054aa66812daf5161a0d5d7eda
Processing pycrypto-2.6.1.tar.gz
Writing /tmp/easy_install-ni0km5/pycrypto-2.6.1/setup.cfg
Running pycrypto-2.6.1/setup.py -q bdist_egg --dist-dir /tmp/easy_install-ni0km5/pycrypto-2.6.1/egg-dist-tmp-uck3lu
error: Setup script exited with error: in 'ext_modules' option (extension 'Crypto.PublicKey._fastmath'), 'sources' must be present and must be a list of source filenames


ここでダメ。



gns3インストールの記録はあるのだが、
皆バージョンが少し古い。

今gns.comへ行くと、
GNS3-1.1.source.zip

しかない。


これを、centos
Linux xxxxx.sakura.ne.jp 2.6.32-431.29.2.el6.x86_64 #1 SMP Tue Sep 9 21:36:05 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux


に入れねばならない。


いったんあきらめる。

ubuntuでできるか、試してみるか・・・。

さくらのVPSにvnc接続

vncserverをインストールする方法はいろんな人が公開している。


私はこのページを参考にした。

http://shirokuma-industry.com/wordpress/?p=948



そして自宅のWindows7のPCにreal vncをインストールして接続してみると、


「ホストへの接続ができません:接続を拒絶しました(10061)」

というエラーメッセージが表示されて接続できない。


iptablesのせいかと思って無効にしてみたが同じである。


いろいろ調べてみるが、サービスも起動しているし、何もおかしいところは見当たらない。



・・・

原因は、接続するときにホスト名の後に ":1" をつけていないことだった。

example.com:1

のように。

さくらのVPSにvncで接続したことは以前にもあったのだけど、
そうだったっけかな・・・

まあいいや。