2018年9月26日水曜日

FreeBSD で nginx に挑戦してみた(その4:https 化と Digest 認証)

 前回,FreeBSD で nginx に挑戦してみた(その3)として,FreeBSD 上の nginx 設定の location コンテキストと,nginx で CGI を使うための方法について書いた。 今回は,https 化 (ssl モジュール)と Digest 認証について書いていこう。

http_ssl モジュールと https


https 化を行うには,まず nginx のインストール時に http_ssl モジュールを組み込まないといけない。そのためには
--with-http_ssl_module
オプションをつけてインストールしないといけない。 FreeBSD で /usr/ports/www/nginx/ からインストールする際には「HTTP_SSL」オプションをつけておかないといけない。

 そして,以下のように設定ファイル( /usr/local/etc/nginx/nginx.conf )に記載する必要がある。 下記の設定の青色の辺りがその設定部分である。 設定ファイル自体は前回示した CGI を使う場合の設定ファイルに https 化の部分( server ディレクティブ)を追加している。 そのため,通常の 80 番ポートへのリクエストを受信する server ディレクティブも残してある。

2018年9月20日木曜日

FreeBSD で nginx に挑戦してみた(その3:location コンテキストと CGI)

 前回,FreeBSD で nginx に挑戦してみた(その2)として,FreeBSD 上の nginx の主な設定と起動の方法について書いた。 今回は,location コンテキストと CGI について書いていこう。

location コンテキスト


まず location コンテキストの公式の説明は下記を見て欲しい。
 ・location コンテキスト:Module ngx_http_core_modulelocation 項目

location コンテキストは,nginx.conf(それ自体が main コンテキストとなっている)の中の http コンテキストの中の server コンテキストの中に置かれるコンテキストである(言葉で書くとややこしいなぁ…)。前回を見て欲しいが,nginx.conf では,http コンテキストで web サーバーとしての設定を記載する。その中には,複数の(仮想)サーバー(バーチャルホスト)を列挙することができ,(仮想)サーバー1個ごとに1つの server コンテキストを記載する。 server コンテキストの中では,どのポート宛のものに応答するかや,どのサーバー名宛のリクエストに応答するか,などを記載するが,その server に対するリクエスト URI( server 中の特定のディレクトリや特定の拡張子を持つファイルへのアクセス等を記載)にどのように応答するか,を記載するのが location コンテキストである。 そのため location コンテキストは通常は server コンテキスト中に複数(多数)存在することになる。

2018年9月15日土曜日

FreeBSD で nginx に挑戦してみた(その2:nginx の設定と初起動)

 前回,FreeBSD で nginx に挑戦してみた(その1)として,FreeBSD に nginx をインストールする話を書いた。 今回は,設定について書いていこう。

nginx の設定ファイルの場所と起動方法


 nginx の設定ファイルは,FreeBSD の場合は,
/usr/local/etc/nginx/
の下に置かれる。 ここにほぼすべての設定を書くイメージになるが,メインとなる設定は
/usr/local/etc/nginx/nginx.conf
である。

 その設定ファイルの前に,FreeBSD での起動方法について書いておこう。
FreeBSD では,まず /etc/rc.conf に以下を書かないといけない。
nginx_enable="YES"
これがないと,下記の起動コマンドを入れても起動してくれない。
 逆に,これを書いておくと,FreeBSD の起動時に nginx を自動で起動してくれる。

 起動や停止は,以下のように打てばよい。
 起動:servide nginx start
 停止:servide nginx stop
再起動:servide nginx restart
再読込:servide nginx reload


nginx 設定ファイルの構成要素:ディレクティブとコンテキスト


 さて,いよいよ nginx の設定ファイルの内容について書こう。これが結構量が多い。 ここでの話は Beginner’s Guide の中の「Configuration File’s Structure」に書いてある。

2018年9月13日木曜日

FreeBSD で nginx に挑戦してみた(その1:nginx のインストール)

 FreeBSD で web サーバーを上げている。 これまでサーバーアプリケーションとして,ずっと apache を使ってきたが,一度 nginx に挑戦したいと思っていた。 今回は,そのお話。

まずは,nginx について。

 nginx(エンジンエックス,と読むらしい)は,ロシアの人が開発したアプリケーションで,ウェブサーバー用のアプリケーションである。 他には apache が有名である。 違いは,apache がプロセス駆動なのに対して,nginx はイベンド駆動であり,多くのアクセスがある場合には nginx の方が圧倒的に有利らしい。 (詳しいことはわかってないので,ネットで調べてみてください)。

 うちのサーバーはそんなにアクセスがあるわけじゃないので,別に apache のままでもいいのだが,せっかくだから nginx を入れてみた,という次第。

nginx のドキュメントなど

 ・http://nginx.org/:公式サイト
 ・http://nginx.org/en/docs/:公式サイトの Document ページ
 ・NGINX wiki:サードパーティー製モジュールの説明はこちら
 ・Full Example Configuration:設定ファイルの(完全な?)例
 ・NGINX wiki (日本語):上記 wiki の日本語訳
 ・NGINX wiki (開始ページ):上記 wiki 日本語訳の「開始ページ」(何故かトップページのリンクからは飛べない…)

 ・nginxの最近のブログ記事:インフラエンジニアway:私にはわかりやすかった。

FreeBSD での nginx

 FreeBSD なので,ports からインストールしてみた。 FreeBSD の ports には nginx 関連は,
 ・/usr/ports/www/nginx
 ・/usr/ports/www/nginx-full
 ・/usr/ports/www/nginx-devel
 ・/usr/ports/www/nginx-lite
 ・/usr/ports/www/nginx-naxsi
がある。

2018年9月4日火曜日

ThinkPad E480 の HDD を SSD に換装して FreeBSD をいれてみた

 趣味で FreeBSD をいじっているが,そろそろサーバーとして使っているマシン(ノートPC)がへたりつつあるので,ThinkPad E480 を購入してみた。 ThinkPad にした理由は,比較的安かったから。Lenovo のサイトで直接買ったから,思ったよりも安かった。 Lenovo が中華系なのは少しだけ気になったが,安さに負けてしまった…。

 ThinkPad E480 を Lenovo の直販サイトで注文するとカスタマイズできる。 今回は予算との兼ね合いで,CUP は Intel Core i5-8520U (1.6GHz) にし,RAM は 8GB DDR4 2400MHz SSDIMM としてみた。 ディスプレイは気にしてなかったが,14" で 1920x1080 の解像度を持つ FHD液晶にした。 解像度の低いやつでよかったのだが,1ヶ月以上待たないといけないとあったのでやめておいた。 ストレージは高速な M.2 PCIe SSD も載せれるのだが,とりあえず 2.5" HDD (500GB, 7200rpm) にした。 これは,PCIe ほど高速じゃないけど HDD よりは少しだけ速い SATA の SSD に置き換えようと思っていたので,できるだけ安くと思った構成のつもり。 それでも HDD は回転数の高い方にしておいた。

 個人的には Windows はいらないのだが(どうせ FreeBSD 載せるし…),Windows 10 Home がついてきた。 また,当然のように Wi-Fi (ac/a/b/g/n) と Bluetooth 4.1 がついている(これまた使ってないけど…)。 もちろん LAN アダプター(有線)もあるが,DVD/Blueray 等の光学デバイスはついてない。 SD は Micro SD 用のスロットがついている。 また,画像チップは Intel UHD Graphics 620 らしい。 他の接続は,USB3.1 Type-C (Video-out 機能付き)、USB 3.0 (2個のうち1個は Powered USB)、HDMIを持っている。 この中の USB3.1 Type-C は,電源供給ポートでもあるので,電源アダプターをつないでいると USB ポートとして出力できないかもしれない…。 どうするんやろ?

2018年9月2日日曜日

Microsoft Edge の新規タブで開くと Unauthorized エラー

 これは 2018年9月の時点での話であり,もしかしたらすぐに解決するかもしれない。 何かというと,2018年9月の時点で Microsoft Edge で認証ありのページに飛べない事象が発生している。
その件について書こうと思う。

 ことの発端は,私が管理している「とあるページ」に PC からアクセスできない,と聞いたことから始まる。 アクセスできないのは大問題なので,とりあえず当該のページにアクセスしてみると,何の問題もなくアクセスできた。 しかし,アクセスできないという人がちょこちょこいる,という話だった。

そこで,よくよく聞いてみると,どうやら下記のような感じだった。
 (1) PC 上のブラウザでは Microsoft Edge でのみ発生している現象みたい。
 (2) リンク元のページから,「新しいタブ」や「新しいページ」でリンク先を開こうとすると「Unauthorized」エラーとなる。
   認証したくても,認証ためのマドが現れず,いきなり「Unauthorized」となる。
 (3) リンク元ページで「target="_blank"」の指定がされている場合にもいきなり「Unauthorized」とでる。
 (4) 他のブラウザ(Firefox,Chrome,Opera,Safari)ではおきない。
などであった。


(Unauthorized エラーの画面)


2018年8月8日水曜日

FreeBSD xorg の proto 関連で遭遇したトラブルの話

 すごく久しぶりの書き込みかもしれない…。
別に書き込みたいネタがなかったからなのだが…。

 で,今回は,これまた久しぶりに FreeBSD に関することを書いてみよう。
今回は,FreeBSD のアプリケーションのアップデートの話である。 最初に何が問題だったかを書いておこう。 問題の発端は,FreeBSD の ports のアップデートを行った際,xorg の XXXXproto (XXXXはいろいろな名前) という名前の ports が xorgproto という ports に統合されたことにある。 それに対応して正しい処理ができていればよかったのだが,そこでテキトーに対応したためにハマってしまった,というのが今回の話である。

 まず,何をしてしまったかというと,2018/8 に
# portsnap fetch upadte
と ports の更新を行った。 その後,portmaster を行ったのだが,xorg の XXXXproto 関連で15〜20個も更新できないと出てきた。 portupgrade なら,エラーを起こしてないアプリケーションをアップデートしてくれるので,とりあえず portupgade しておいた。

 しかし,そのままだと気持ち悪いので,
/usr/ports/UPDATING
を見てみた。 UPDATING はいろいろ気をつけた方がよいアップデート情報が書いてあったりする。

2017年12月17日日曜日

OpenLayers 3 を使ってみよう(番外5:JavaScript で KML データと GPX データを読み込む方法)

OpenLayers 3 を使ってみよう(その0:はじめに:地理院地図を表示)に目次がある。

  前回(その22:Highcharts でルートの標高グラフの改良)は,Highcharts を使った標高図の表示の改良について書いた。 そこでは,JavaScript で KML 形式のデータファイルから直接データを読み込むはやめて,OpenLayers として読み込んだ KML データの vector データから標高図のデータを取得した。 しかし,JavaScript で KML や GPX などの XML 形式のデータを読み込む方法を調べたので,せっかくなのでまとめておこうと思う。

 XML データについては,https://www.w3schools.com/XML Tutorialを参考にした。 特に XML の各タグの属性(attribute)については XML Attributes が参考になった。

OpenLayers 3 を使ってみよう(その22:Highcharts でルートの標高グラフの改良)

 これは,OpenLayers 3 を使ってみよう(その21:Highcharts でルートの標高グラフを表示)の続きというか改良版になる。 OpenLayers 3 を使ってみよう(その0:はじめに:地理院地図を表示)に目次がある。 その13までのページでは OpenLayers v3.7.0 で書いてきたが,ここでは OpenLayers 3.20.1 で書かれている。
 前回(その21:Highcharts でルートの標高グラフを表示)は,Highcharts を使って標高図を追加してみた。 ただ,前回は少し無駄なことをしていたので,少しだけ改良してみた,というのが今回のお話。

2017年6月29日木曜日

FreeBSD で fine-uploader を使ってみた(その3)

 前々回,FreeBSD で fine-uploader を使ってみた(その1)として fine-uploader によるサーバーへのファイルのアップロードについて書いた。 また,前回FreeBSD で fine-uploader を使ってみた(その2)として Endpoint ルーチンについて書いた。
 今回は chunking(分割送信)の際の結合ルーチンについて書こう。 結合ルーチンは通常の Endpoint ルーチンとは別に用意された Endpoint ルーチンであり,分割送信が完了した時(全ての分割ファイルの送信が完了した時)に呼ばれる。 そのため,中身は通常の Endpoint ルーチンとほぼ同じに見える。

 以下に chunking の結合用の Endpoint ルーチンのソースを書いておく。 説明はソースの後で書こう。