タグ別アーカイブ: 構築手順

機械学習のためのPython実行環境構築

はじめに

 機械学習のための基礎知識や簡単な分析、実験をするにあたり、数値計算ライブラリやニューラルネットワークフレームワークなどを利用したいのですが、このあたりのライブラリが充実しており、またソースコードが見やすい(疑似コードに似ている)という点でPythonを選びました。
 今回、手を動かしながらデータ操作、グラフへのプロットなどを進められるよう、Ubuntu14.04LTS GUI環境でのインストール手順をまとめました。

続きを読む

PHP-FPM をインストールする

はじめに

 PHP で開発された Web アプリを、Web サーバーとは別のサービスとして実行できるようにします。Web サーバーと分離する利点は、Apache や Nginx など、Web サーバーの種類に依存しないで実行できるようになる点、Web サーバーが稼働するホストとは別に、例えばアプリケーションサーバーとして別のホストに分散して構築できるようになる点などが挙げられます。
 今回、AWS EC2 Amazon Linux で稼働するホストで Nginx 向けに PHP-FPM をインストールする手順を紹介します。Nginx の設定ファイルのサンプルについてはこちらの投稿を参照してください。

続きを読む

Nginx に uWSGI + Django アプリ を組み込む

はじめに

Django アプリを uWSGI でサービスとして起動して、Nginx でアクセスできるようにする手順をまとめました。 Nginx のインストールはこちらの投稿を、Python の venv 環境を構築できるようにする手順はこちらの投稿を参照してください。 なお、Linux ユーザーはホストの設定を操作する、wheel グループに属するユーザー user1 と、Webアプリケーションを管理する、nginx グループに属するユーザー webmaster の 2 つのアカウントを切り替えながら作業を進めます。これらのユーザーは下記コマンドで登録済みであるものとします。 ホスト管理者 (user1) の領分と、アプリケーション管理者 (webmaster) の領分について、私なりの切り替え方が参考になれば幸いです。
[root]# useradd user1 -G wheel
[root]# useradd webmaster -g nginx
続きを読む

DTI VPS 初期設定

はじめに

 DTI VPS の初期設定では、root アカウントにパスワードでリモートログインできるため、下記 3 点をセキュリティ対策として実施したいと思います。

  • リモートログインができる作業用の一般ユーザーを作成して、パスワードではなく SSH Key を使ったログインにする
  • root でのリモートログインを禁止する
  • SSHサーバーのポート番号を変更する
続きを読む

Python venv 環境構築

はじめに

 Python でプログラムを作成するとき、あるいはデプロイするとき、プロジェクトに応じて都度外部のパッケージを使用する事が多いと思います。また、1つのホストに複数のプロジェクトをデプロイすることもよくあると思います。ホスト共通の領域に追加のパッケージをインストールしてしまうと、すべてのプロジェクトで同じバージョンのものを使う必要が出てきます。
 このとき問題になるのが、使用したいパッケージのバージョンがプロジェクト毎に異なる場合です。こういうときはプログラム毎に個別のバーチャル環境 venv を用意して、他のプロジェクトとは独立した環境を構築して対応できます。
 今回、デフォルトでインストールされている Python に影響を与えずに、Python 2.7 と Python 3.5、Python3.6 の環境を構築する手順を紹介します。この手順は CentOS5~CentOS7、AmazonLinux 、Ubuntu14.04LTS(Desktop) に適用できます。

2016/09/08 時点の状況
OSデフォルトの Python のバージョン
CentOS52.4.3
CentOS62.6.6
CentOS72.7.5
AmazonLinux(2016.03)2.7.11
Ubuntu14.04LTS(Desktop)2.7.6
Ubuntu16.04LTS(Desktop)2.7.12
続きを読む

CentOS7 に Nginx をインストールする

はじめに

 Nginx は Web サーバーです。他の有名な Web サーバーに Apache がありますが、違いはプロセス(あるいはワーカー) ベースの処理か、イベントベースの処理か、になります。Nginx はイベントベースの Web サーバーで、同時リクエストの処理を得意とします。一方で、レスポンスまでに時間がかかるような、サーバーサイドで実行するプログラムのハンドリングは苦手です。このようなスクリプトは、FastCGI プロセスや uWSGI プロセスに中継して実行してもらうようにすることで、Nginx がボトルネックにならないように構成する必要があります。Nginx に uWSGI を連携させる手順についてはこちらの投稿を参照してください。
 今回、Nginx を CentOS7 にインストールする手順と、PHP スクリプトを FastCGI で実行できるようにする PHP FPM のインストール手順を紹介します。

続きを読む

MongoDB サーバーを CentOS7 にインストールする

はじめに

 MongoDB は NoSQL タイプ(ドキュメントベース)のデータベースシステムです。
 SQL タイプ(テーブルベース)のデータベースとの大きな違いは、格納する項目を事前に定義する必要がないため柔軟な拡張ができる点と、複雑な階層をもったデータでもインデックスを作成できるためデータ構造に悩む事が少なくなる点でしょうか。もっとも、無計画に設計するとレスポンスが遅くなったり、消費するリソースが増えたりするでしょう。
 今回、MongoDB3.0 を yum コマンドを使って CentOS7 にインストールする手順を紹介します。

続きを読む

CentOS7 に EPEL リポジトリをインストールする

はじめに

 EPEL リポジトリは Redhat 系 Linux にインストールできる、標準リポジトリにはない便利なパッケージを取り扱っています。  ソースからビルドする手間が不要になり、環境構築なのでよくお世話になっています。CentOS を扱う際はぜひ使ってみてください。

続きを読む

SSL 証明書の作成とインストール

はじめに

 SSL 証明書は SSL 証明書発行機関によって、対象のドメインが実際にどの組織によって運営されているかを保障するための証明書です。今回、SSL 証明書の申請からインストールまでの手順を紹介します。
 組織の実体証明の厳密さにより、SSL 証明書のグレードが設けられています。呼び方、認証方法は SSL 証明書発行機関により差がありますが、大まかには次の 3 グレードがあるようです。

  • Class1 … ドメインの所有者をオンラインにより確認。
      ドメイン名宛のメールアドレスなど、例えば postmaster@example.com 宛に届く確認メールで運営者を確認できれば認証 OK となります。
  • Class2 … ドメインの所有者を電話により確認。
      ドメイン名宛のメールアドレスに加えて、運営者の電話番号宛の電話などで運営者を確認できれば認証 OK となります。
  • Class EV … ドメインの所有者を書類により確認。
      ドメイン名宛のメールアドレス、運営者の電話番号宛の電話に加えて、書類の送付などにより運営者を確認できれば認証 OK となります。

 どのグレードの SSL 証明書でも、サーバーへのインストール手順は同じです。
 CentOS の場合、次のようなディレクトリ・ファイル構成で管理するとよいでしょう。この構成は SSL 証明書の他に、中間証明書を 2 つ必要とする 4 層構成の SSL 証明書をインストールする場合の構成です。

 なお、SSL 証明書関連のファイルがいくつか出てきますが、すべて PEM 形式とよばれるテキスト文字列のファイルです。本投稿ではファイルの役割を拡張子に付ける事で、わかりやすくなるようにしています。また、年度の更新がしやすいよう、ファイルの末尾には有効期限日を付けておきます。ただし、本番用にリリースするときは、サーバーの設定ファイルを編集しなくて済むよう、有効期限日は削除します。日付付きのファイルで一式を準備してから、日付なしのファイルにコピーして本番環境に適用する、という流れを想定しています。

(作業用ユーザーエリア)
~/tls/
  certs/                     ← 外部に公開するファイルを格納するディレクトリ
    example.com.crt.20160519 ← SSL 証明書
    example.com.ca.20160519  ← 中間証明書(3層目、2層目、の順で結合したもの)
  private/                   ← 外部に公開してはいけない/公開する必要がないファイルを格納するディレクトリ
    example.com.ca2.20160519 ← 中間証明書(2層目、クロスルート証明書と呼ばれることがある)
    example.com.ca3.20160519 ← 中間証明書(3層目)
    example.com.csr.20160519 ← CSR
    example.com.key.20160519 ← 秘密鍵

(本番用グローバルエリア)
/etc/pki/tls/
  certs/                     ← 外部へ公開するファイルを格納するディレクトリ
    example.com.crt          ← SSL 証明書
    example.com.ca           ← 中間証明書(3層目、2層目、の順で結合したもの)
  private/                   ← 秘密鍵を格納するディレクトリ
    example.com.key          ← 秘密鍵

 大まかな流れは次のとおりです。

  • SSL 証明書の申請
  • SSL 証明書の受領
  • SSL 証明書のインストール
続きを読む

CentOS6 の libstdc++ を更新する

はじめに

 CentOS6 で比較的新しいソフトウェアを実行しようとすると、

/usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.15' not found (required by <new software>)

のようなエラーが発生する事があります。
 これは CentOS6 にインストールされているライブラリが古く、ソフトウェアが要求するバージョンと合わないためです。
 今回、libstdc++ ライブラリを例にとって、CentOS6 に新しいバージョンのライブラリをインストールする方法を紹介します。

続きを読む