2017年5月5日金曜日

Apache + Oracle DBでDigest認証

以下要件を満たす設定を行おうとしたが、日本語でまとまった手順が記載されているものがなかったのでメモ。

  • Apacheの設定によりLinux上のディレクトリをhtmlにて参照させる
  • html参照時にはDigest認証を行う
  • Digest認証で用いるユーザについてはデータベース(Oracle)に保存したユーザ情報を用いる

●環境

  • Webサーバ
    • Amazon Linux AMI release 2016.09
  • データベース
    • AWS RDS Oracle SE Two(開発/テスト用)
    • Oracle 12.1.0.2 v7

●pcreインストール

# cd /usr/local/src
# wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.40.tar.gz
# tar zxvf pcre-8.40.tar.gz
# cd pcre-8.40
# ./configure --prefix=/opt/pcre-8.40
# make install

● Oracle Instant Clientインストール

http://www.oracle.com/technetwork/topics/linuxx86-64soft-092277.html

上記URLより以下をダウンロード。
oracle-instantclient12.1-basic-12.1.0.2.0-1.x86_64.rpm
oracle-instantclient12.1-devel-12.1.0.2.0-1.x86_64.rpm
oracle-instantclient12.1-sqlplus-12.1.0.2.0-1.x86_64.rpm

rpmインストール。
# rpm -ivh oracle-instantclient12.1-basic-12.1.0.2.0-1.x86_64.rpm
# rpm -ivh oracle-instantclient12.1-devel-12.1.0.2.0-1.x86_64.rpm
# rpm -ivh oracle-instantclient12.1-sqlplus-12.1.0.2.0-1.x86_64.rpm
シンボリックリンクをはる。
# ln -s /usr/include/oracle/12.1/client64 /usr/lib/oracle12.1/client64/include
環境変数を設定する。 .bashrcに以下を追加し、読み込んでおく。
# vi ~/.bashrc
export ORACLE_HOME=/usr/lib/oracle/12.1/client64
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH
export PATH=$PATH:$ORACLE_HOME/bin
CPPFLAGS=-I/usr/include/oracle/12.1/client64; export CPPFLAGS
LDFLAGS=-L/usr/lib/oracle/12.1/client64; export LDFLAGS
# . ~/.bashrc

●aprインストール

# cd /usr/local/src
# wget http://ftp.kddilabs.jp/infosystems/apache/apr/apr-1.5.2.tar.gz
# tar zxvf apr-1.5.2.tar.gz
# cd apr-1.5.2
# ./configure --prefix=/opt/apr-1.5.2
# make
# make install
# cd /opt
# ln -s /opt/apr-1.5.2 apr

●apr-utilインストール

# cd /usr/local/src
# wget http://ftp.kddilabs.jp/infosystems/apache/apr/apr-util-1.5.4.tar.gz
# tar zxvf apr-util-1.5.4.tar.gz
# cd apr-util-1.5.4
# ./configure --prefix=/opt/apr-util-1.5.4 --with-apr=/opt/apr --with-oracle=/usr/lib/oracle/12.1/client64 --with-oracle-include=/usr/include/oracle/12.1/client64
# make
# make install
# cd /opt
# ln -s /opt/apr-util-1.5.4 apr-util

この時点で以下ディレクトリにapr_dbd_oracle.soができている。
# ls -l /opt/apr-util/lib/apr-util-1
total 180
-rwxr-xr-x 1 root root 77448 Apr 23 08:04 apr_dbd_oracle-1.so
-rw-r--r-- 1 root root 98364 Apr 23 08:04 apr_dbd_oracle.a
-rwxr-xr-x 1 root root  1073 Apr 23 08:04 apr_dbd_oracle.la
lrwxrwxrwx 1 root root    19 Apr 23 08:04 apr_dbd_oracle.so -> apr_dbd_oracle-1.so

●Apacheインストール

# cd /usr/local/src
# wget http://ftp.yz.yamagata-u.ac.jp/pub/network/apache//httpd/httpd-2.4.25.tar.gz
# tar zxvf httpd-2.4.25.tar.gz
# cd httpd-2.4.25
# ./configure --prefix=/opt/httpd-2.4.25
# make
# make install
# cd /opt
# ln -s /opt/httpd-2.4.25 httpd
# /opt/httpd/bin/httpd -V
Server version: Apache/2.4.25 (Unix)
~(以下略)~

●Apache設定変更

Apacheの設定ファイルである /opt/httpd/conf/httpd.conf を以下の通り修正する。

ServerRootの下あたりにPidFileの設定を追加。
     31 ServerRoot "/opt/httpd-2.4.25"
     32 PidFile "/var/run/httpd.pid"

authn_dbd_moduleのコメントアウトをはずす。
     70 LoadModule authn_dbd_module modules/mod_authn_dbd.so

auth_digest_moduleのコメントアウトをはずす。
     83 LoadModule auth_digest_module modules/mod_auth_digest.so

dbd_moduleのコメントアウトをはずす。
     94 LoadModule dbd_module modules/mod_dbd.so

Digest認証後に参照させるディレクトリの設定を行う。
    254 <Directory "/opt/httpd-2.4.25/htdocs/XXXXXXX">
    255     Options Indexes FollowSymLinks
    256     AuthType Digest
    257     AuthName digest
    258     AuthDigestProvider dbd
    259     AuthDBDUserRealmQuery "SELECT password FROM users WHERE username = %s AND realm = %s"
    260     Require valid-user
    261 </Directory>

接続するOracle DBの設定を行う。 ※設定内容は環境に合わせて設定
    247 DBDriver oracle
    248 DBDParams "user=<DB(RDS)のユーザ名> pass=<DB(RDS)のパスワード> dbname=ORCL server=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=<DB(RDS)のホスト名>)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=ORCL)))"
    249 DBDMin     4
    250 DBDKeep    8
    251 DBDMax     20
    252 DBDExptime 300

●DBデータ投入

sqlplusを用いてデータベースに接続。
# sqlplus64 '<DB(RDS)のユーザ名> @(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=<DB(RDS)のホスト名>) (PORT=1521))(CONNECT_DATA=(SID=ORCL)))'

Digest認証用のユーザテーブルを作成する。
SQL> CREATE TABLE USERS
   (    "USERNAME" VARCHAR2(16),
        "PASSWORD" VARCHAR2(255),
        "REALM" VARCHAR2(16)
   ); 

レコードを挿入する。
passwordは「username:password:realm」をMD5でハッシュ化したものを設定。
 realmはhttpd.confで設定した"AuthName"の設定値と合わせる。
今回は「digest」を設定。
SQL> INSERT INTO USERS VALUES('<username>', '<MD5(username:password:realm)>','digest');
SQL> COMMIT;

●チェック

Apacheを再起動し、ブラウザで http://<WebサーバのIPアドレス>/XXXXXXX にアクセス。
Digest認証のダイアログが出てくればひとまずOK。
そして、データベースに保存したユーザ名/パスワードを入力して認証成功すればOK。

うまくいかない場合は、 Apacheのエラーログ /opt/httpd/logs/error_log などを確認するとヒントがあるかも。

2017年4月8日土曜日

転職エージェントと会ってみた話

先日、転職エージェントと会ってみました。
会う前に色々と下調べしたり、実際に会って話してへぇと思った事をまとめました。

転職エージェントからのオファーのタイプ
まず、エージェントから来るオファーのタイプは大きく2種類あります。
  • 特定のターゲットに対して具体的な案件がある
  • 無差別に不特定多数に対してとりあえず声をかける

前者は、ある程度実績のある人に対して名指しでアプローチがきます。
特に外に顔が売れている人や、仕事の中でお客さんやパートナーなどから厚い信頼を受けている人は、こちらのパターンに該当する場合があります。
求人の企業側が水面下で獲得に乗り出そうとして、エージェントを介して本人にその気があるかどうかの様子を伺います。
そのため、業務内容が具体的である事が多く、自分のスキルセットや職務経験などもよく知られており、それを踏まえたメールが届くそうです。

後者は、どこかから入手した名簿や名刺などに手当たり次第にアプローチをかけます。
IT関係の大きめのイベントなどで、大量に名刺を撒き散らすときっとメールが来ると思います。
メールの内容は、業務内容などの具体性はなく、非常に優秀と伺っている、大変ご活躍されている、などの文面で、社名はまだ言えないがご紹介したい案件がある、といった内容で来ます。
名も売れていない若いうちのオファーは確実にこちらです。
今回、私が体験してみたのもこちら。以降の内容はこちらをベースにお話しします。


●転職までのステップ
次に、エージェントを介して行う転職の流れです。
  1. エージェントと会って面談
  2. 求人を出している企業と面談
  3. 業務内容・給与の交渉
  4. 求人を出している企業と面接
  5. 採用・転職

前述のメールに興味を持って連絡を返した人は、まず1のステップになります。
ここでは、転職希望者の情報を集めつつ、転職の意思を確認します。詳しくは後述します。

2つ目のステップでは、面談と言われ、気軽に会って話してみない?
と言われますが、実態は採用面接です。
新卒採用の就活のリクルーター面談みたいなものです。
さらに言ってしまえばエージェントとの面談も同様です。
転職の意思がない(弱い)、マッチしない、レベルが低い、社会常識がない、など、
様々な観点でフィルターされていき、クリアすれば待遇に関する交渉に入ります。

交渉の際に、条件を良くするための色々なテクニックがあるようですが、
私は体験したわけではないので特に書きません。


●エージェントとの面談内容
では、上記のステップ1を体験したわけですが、今回はどういう事を話したか?
先に言うと、特に重要視されていたと感じたのは、転職の意思です。
IT関連でしたので、とりわけITコンサルはどうかと勧められました。

エージェントが意思を確認するのには理由があります。
エージェントの給与は成功報酬型です。
転職が成立すると成功報酬として、転職先の企業からエージェント(企業)に対して、
転職者の年収の何%という形で支払われます。
調べたら30%という数字を見つけました。
年収700万円で1人転職をさせたら210万円がエージェントに入ります。
とりわけITコンサルは、単価が高く、年収水準が平均よりも高めです。
そのため、転職の意思が強い人を年収の高い会社に転職させる方が、
エージェントにとっては効率良く稼げる事になります。

面談で普通の会話をしつつ、色々な事を細かいところまで根掘り葉掘り聞かれます。
自分の経歴、資格、年収、どういう仕事がしたいか、今の仕事のモチベーション、趣味などのありきたりなものから始まり、家族構成、健康状態、お酒の強さ頻度、などなど。
加点要素、減点要素を一つ一つ探していく感じが、正に品定めって感じがしました。
スーパーに並べられているキャベツってこんな気持ちなんでしょうか。

面談場所については都内近郊なら希望の場所どこでもという事だったので、
私は平日の夜に外出先の駅近くのカフェにしてもらいました。


●感想
今後のキャリアの方向性を考えるヒントになるかなと思って今回会ってみました。
結果としては、十分なヒントは得られず、と言ったところでしょうか。
ITコンサルが年収が高いというのは再認識しましたが。

多分、転職の意思や業務内容が明確になってからエージェントを活用した方が無難です。
それに、エージェントを使って転職する場合、メリットとなる部分は、
コネクションの面と、企業との交渉のフェイズと聞きますので、
活用する場合は目的を持って活用する事をオススメします。


2017年3月9日木曜日

Cisco NexusスイッチにおいてLACPでLAGを組む際のTips


データセンター向けスイッチのCisco Nexusスイッチシリーズ。
標準化されているリンクアグリケーション方式として、LACPを採用する場合、以下の仕様があるので注意。

LAGのチャネルから外れたリンクはIndividual状態となり、通信が可能となる。
Down状態から復旧した際に、LinkUP後~チャネルメンバーに参加してLAGを構成するまでの間、
一次的に、Loop構成になる。
Loop構成になると予期せぬ事象や、通信断が発生するため、以下の設定が必要。

Port-channelのinterfaceに対して
# lacp suspend-individual


上記の設定により、Port-Channelから外れたLinkはIndividual状態ではなく、suspend状態になる。
suspend状態はトラフィックの転送を不可の状態にし、Loop構成となることを防ぐ。
LinkUpと同時にLAGのメンバーに参加する。

Nexusシリーズの最近のOSだとほぼデフォルト実装。
EOSLレベルの昔のOSだと機能自体が無かったりするので、要注意。

デフォルト実装しているスイッチは、show run上では表示されない為、show run all等で確認する。

2017年3月8日水曜日

Laravel 5.4+MariaDBでログイン実装

過去の記事でLaravel環境のセットアップをしました(参照: http://kusanokai.blogspot.jp/2017/03/laradocklaravel_5.html)。

今回は、Laravelを用いたログインの実装について進めたいと思います。

[環境]
  • PHP 7.0.9
  • Laravel 5.4.15
  • MariaDB 10.1.21

[手順]
  1. 新規Laravelプロジェクトの作成(「logintest」という名前で作成しています)
  2. $ composer create-project laravel/laravel logintest

  3. DBの準備
  4. 使用するDBについて準備しておきます。
    laradockでデフォルトで環境構築した場合は、rootユーザ(パスワード:root)、
    もしくは、homestead(パスワード:secret)が使えます。
    laradockでmariadbを構築した場合は、まずmariadbコンテナに入ります。
    $ docker exec -it laradock_mariadb_1 /bin/bash
    mariadbへログイン。
    # mysql -h localhost -uroot -proot
    ログイン後、適当にDBを作成します。
    MariaDB [(none)]> CREATE DATABASE logintest;

  5. LaravelプロジェクトのDB設定
  6. Laravelプロジェクト、.envファイルのDB設定を変更しておきます。
    DB_CONNECTION=mysql
    DB_HOST=mariadb
    DB_PORT=3306
    DB_DATABASE=logintest
    DB_USERNAME=root
    DB_PASSWORD=root
    
    laradockで環境を作った場合は、DB_HOSTをmariadbにしておきます。
    DB_USERNAMEとDB_PASSWORDは2で使用したユーザ/パスワードを使用。

  7. migrateファイルの確認
  8. Laravelでは、新しくプロジェクトを作成した時点でユーザ用のmigrateファイルができています。

    ・./database/migrations/2014_10_12_000000_create_users_table.php
    <?php
    
    use Illuminate\Support\Facades\Schema;
    use Illuminate\Database\Schema\Blueprint;
    use Illuminate\Database\Migrations\Migration;
    
    class CreateUsersTable extends Migration
    {
        /**
         * Run the migrations.
         *
         * @return void
         */
        public function up()
        {
            Schema::create('users', function (Blueprint $table) {
                $table->increments('id');
                $table->string('name');
                $table->string('email')->unique();
                $table->string('password');
                $table->rememberToken();
                $table->timestamps();
            });
        }
    
        /**
         * Reverse the migrations.
         *
         * @return void
         */
        public function down()
        {
            Schema::dropIfExists('users');
        }
    }

    ・./database/migrations/2014_10_12_100000_create_password_resets_table.php
    <?php
    
    use Illuminate\Support\Facades\Schema;
    use Illuminate\Database\Schema\Blueprint;
    use Illuminate\Database\Migrations\Migration;
    
    class CreatePasswordResetsTable extends Migration
    {
        /**
         * Run the migrations.
         *
         * @return void
         */
        public function up()
        {
            Schema::create('password_resets', function (Blueprint $table) {
                $table->string('email')->index();
                $table->string('token')->index();
                $table->timestamp('created_at')->nullable();
            });
        }
    
        /**
         * Reverse the migrations.
         *
         * @return void
         */
        public function down()
        {
            Schema::dropIfExists('password_resets');
        }
    }
    ユーザやパスワードリセットの設定が入っています。
    とりあえず、このまま使うことにして、DBに反映させてみます。

  9. 試しにmigrate
  10. migrateファイルからmigrateを実行するには、下記のコマンドを実行します。
    (laradockで環境構築した場合は、workspaceコンテナから実行)
    # php artisan migrate
    結果、エラー。。
    [Illuminate\Database\QueryException]                                                         
      SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long; max key  
       length is 767 bytes (SQL: alter table `users` add unique `users_email_unique`(`email`))
    [PDOException]                                                                               
      SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long; max key  
       length is 767 bytes  
    Laravel5.4から絵文字対応でutf8mb4サポートしたことで、mariaDBか古いバージョンのMySQLで引っかかるらしいです。
    https://laravel-news.com/laravel-5-4-key-too-long-error

  11. AppServiceProvider.phpに設定追加
  12. 対策としては、「./app/Providers/AppServiceProvider.php」に設定を追加します。
    use Illuminate\Support\Facades\Schema;
    public function boot()
    {
        Schema::defaultStringLength(191);
    }
    (以下省略)
  13. 再度migrate
  14. いけるはず。

  15. Laravelのmake:auth機能でログイン機能の作成
  16. Laravel 5.2からはmake:authってのが使えるようなので、それ使います。
    (laradockで環境構築した場合は、workspaceコンテナから実行)
    # php artisan make:auth
    Authentication scaffolding generated successfully.

  17. Routeの確認
  18. なにやらいっぱいRouteができてるのが確認できます。
    # php artisan route:list
    +--------+----------+------------------------+------------------+------------------------------------------------------------------------+--------------+
    | Domain | Method   | URI                    | Name             | Action                                                                 | Middleware   |
    +--------+----------+------------------------+------------------+------------------------------------------------------------------------+--------------+
    |        | GET|HEAD | /                      |                  | Closure                                                                | web          |
    |        | GET|HEAD | api/user               |                  | Closure                                                                | api,auth:api |
    |        | GET|HEAD | home                   |                  | App\Http\Controllers\HomeController@index                              | web,auth     |
    |        | GET|HEAD | login                  | login            | App\Http\Controllers\Auth\LoginController@showLoginForm                | web,guest    |
    |        | POST     | login                  |                  | App\Http\Controllers\Auth\LoginController@login                        | web,guest    |
    |        | POST     | logout                 | logout           | App\Http\Controllers\Auth\LoginController@logout                       | web          |
    |        | POST     | password/email         | password.email   | App\Http\Controllers\Auth\ForgotPasswordController@sendResetLinkEmail  | web,guest    |
    |        | GET|HEAD | password/reset         | password.request | App\Http\Controllers\Auth\ForgotPasswordController@showLinkRequestForm | web,guest    |
    |        | POST     | password/reset         |                  | App\Http\Controllers\Auth\ResetPasswordController@reset                | web,guest    |
    |        | GET|HEAD | password/reset/{token} | password.reset   | App\Http\Controllers\Auth\ResetPasswordController@showResetForm        | web,guest    |
    |        | GET|HEAD | register               | register         | App\Http\Controllers\Auth\RegisterController@showRegistrationForm      | web,guest    |
    |        | POST     | register               |                  | App\Http\Controllers\Auth\RegisterController@register                  | web,guest    |
    +--------+----------+------------------------+------------------+------------------------------------------------------------------------+--------------+
    実はこれでできています。

  19. 試しにログイン
  20. http://localhost/registerへアクセスすると・・・、ユーザ作成が可能です。



    ログイン画面に行って(http://localhost/login)、ログインID/パスワードを入力。



    ログインできることが確認できます。


ほぼ、コードを書かずにユーザ登録、ログイン、パスワードリセットができてしまいました・・。
とても便利ですね。

最近だと、クライアントサイドはJavascriptに任せて、サーバ側はAPIを提供するのみ、となっているパターンも多いので、次回はAPIの使用を検討してみたいと思います。

2017年3月5日日曜日

LaradockでLaravel開発環境を整える

とある件で、Laravelを使った開発を行う機会があったので、開発環境を整備しました。
一応、OSX(Sierra)及びWindows 10 Proで検証済です。

[前提条件]
  • git導入済
  • Docker導入済
  • ネット環境あり
この辺りは適当に・・・。

 [手順]
  1. 適当に作業用のフォルダを作成して移動。
  2. $ mkdir work
    $ cd work
    

  3. gitでlaradockをcloneして移動。
  4. $ git clone https://github.com/laradock/laradock
    $ cd laradock
    

  5. docker-composeでとりあえず、workspaceを立ち上げる。
  6. $ docker-compose up -d workspace
    
    workspaceってなんじゃい、って感じですが、Composerで何かをインストールしたり、Laravelコマンドを実行したりする場合は、workspace環境から実行するようです。

  7. workspaceの確認。
  8. $ docker-compose ps
             Name                Command      State           Ports
    -----------------------------------------------------------------------
    laradock_applications_1   /true           Exit 0
    laradock_workspace_1      /sbin/my_init   Up       0.0.0.0:2222->22/tcp
    
    問題なく立ち上がってそうです。

  9. workspaceへ入ってみる。
  10. $ docker exec -it laradock_workspace_1 /bin/bash
    root@1258840ba9fe:/var/www#
    
    「-i」が対話型(interactive)、「-t」が擬似ttyに接続する、というオプションのようですが、雰囲気sshでログインするような感じです。
    また、workspaceコンテナの「/var/www」のフォルダと1で作成した作業用のフォルダがリンクしていることがわかります。

  11. workspaceからlaravelプロジェクトを作成してみる。プロジェクト名は適当にlaraveltestを指定しています。
  12. root@1258840ba9fe:/var/www# composer create-project laravel/laravel laraveltest
    
    workspaceコンテナの「/var/www」のフォルダと作業用のフォルダがリンクされているため、プロジェクトを作ると、1で作成した作業用フォルダからも参照できることが確認できます。
    ソースコード書くときは、普通にホストWindowsかホストMac側からプロジェクト内のソースコードを変更すれば、適用される感じ、ということですね。

  13. 一旦workspaceから抜け、docker-composeを停止。
  14. root@1258840ba9fe:/var/www# exit
    $ docker-compose stop
    

  15. docker-compose.ymlの設定を一部変更する。
  16. ・docker-compose.yml(変更後)
    version: '2'
    
    services:
    
    ### Applications Code Container #############################
    
        applications:
            image: tianon/true
            volumes:
                - ../laraveltest:/var/www
    
    (以下略)
    
    「- ../:/var/www」あたりの所を、「- ../laraveltest:/var/www」に変更します。
    (作成したプロジェクト名に応じて適宜変更してください。)

  17. Apache2およびmariadbを指定して、docker-composeの起動
  18. docker-compose up -d apache2 mariadb
    
    そこそこ時間かかります。
    LaradockにはApache2やmariadb以外にも、nginxであったりMySQL等色々なイメージが含まれているので、必要に応じて指定してください。

  19. 接続確認として「http://localhost/」にアクセスしてみる。


とりあず、これでLaravelで開発できる環境ができました。
Dockerはあまり使ったことがなかったのですが、サクッと環境を共有できるのは良さそうです。

2017年1月24日火曜日

コミュニケーションツールのSlackを使ってみよう!



開発チームでのコミュニケーションツールとして、「Slack」をご紹介します。
既に多くの人が利用している、もしくは知っているかもしれませんが、
まだ知らない人、これから開発を始める人、等に向けた記事です。

使っていて特にメリットと感じる部分を3つご紹介します。

①開発でよく使われる他ツールとの連携が充実。
②コードをそのままスニペットとして投稿できる。
③マルチデバイスに対応。

それぞれ一つ一つ、簡単に説明していきます。


①開発でよく使われる他ツールとの連携が充実。

開発では、紹介しているSlackというコミュニケーションツールの他にも、
タスク管理やコードの変更管理などの様々な用途に合わせたツールを使用します。
例えば、タスク管理用のツール「Trello」と連携しています。


誰かがカードを追加、更新したり、タスクに設定した期限が近くなったりすると、
Slackに通知をしてくれるような連携機能があります。

他にも、「Bitbucket」などの変更管理ツールなんかとも連携しているので、
メンバー内の作業進捗や、コードの変更をまとめて追うことができます。


②コードをそのままスニペットとして投稿できる。

「スニペットとは、一般的には「切れ端」「断片」という意味の英語である。」
特にコードの一部を共有するときに非常に便利です。



Skypeなどを使っていると、インデントがガタガタなこともありますが、
Slackは何の言語かを指定することができ、また、単純に貼り付けるだけで投稿できます。
それをファイルとしてダウンロードしたり、編集したりすることも可能です。


③マルチデバイスに対応。

Windows、MacのPCでの使用はもちろんのこと、
iPhoneやAndroidなどのスマートフォンでもインストールして利用できます。


様々なデバイスで使えるので、状況に合わせて幅広く活用できます。


〜最後に〜
開発だけでなく、様々なコミュニティでも
コミュニケーションツールとして活用できます。
5GB以内などの制限はありますが、制限範囲内であれば無料ですので、
お試しで使ってみてはいかがでしょうか。

Slack
https://slack.com/

2017年1月23日月曜日

AWS上のインスタンス作成手順


AWS上のインスタンス作成手順をさくっとメモ

AWSの登録
12ヶ月無料枠があるのでおすすめ

VPCの作成
ホーム画面からネットワーキングのVPCを選択
左ダッシュボードからVPCVPCの作成>以下の設定で作成
 ネームタグ:適当
CIDRブロック:適当なプライベートアドレスセグメント
       ⇒サブネット作るので、一旦/16で作成
 テナンシー:デフォルト

VPC内にサブネットを作成
左ダッシュボードからサブネット>サブネットの作成>以下の設定で作成
ネームタグ:適当
VPC:②で作成したVPCネームを指定
アベイラビリティゾーン:指定なし
CIDRブロック:②で作成したアドレスより小さいセグメント
       ⇒/16より小さい/24で作成

④インターネットゲートウェイの作成
左ダッシュボードからインターネットゲートウェイ
>インターネットゲートウェイの作成
ネームタグ:適当
作成後の状態がdetachedなため、②にアタッチする。
(上部ボタンから選択or右クリック)
状態がattachedになってVPCに②が表示される事を確認。
念のため作成したGWIDをメモorコピーしとく。

⑤ルートテーブル追加
左ダッシュボードからルートテーブル
②で作ったVPCのルートテーブルを選択し、
分割された下のウインドウでルートタブを開く
編集>別ルートの追加>以下入力して保存
送信先:0.0.0.0/0
ターゲット:④で作成したGWを指定
自動で補完されるはずだが、さっきコピーしたIDをペースト。
終了後に一旦AWSホームまで戻る。

EC2インスタンスの作成
コンピューティングのEC2を選択
インスタンスの作成ボタンがあれば選択
なければ、左ダッシュボードからインスタンス>インスタンスの作成
詳細は後で設定可能だが、各ステップを順番に設定する。
AMIの選択:OSは適当(今回はAmazonLinuxで作成)
インスタンスタイプ:t2.micro(無料枠)
インスタンスの設定:ネットワークとサブネットを指定、他デフォルト
ストレージ:デフォルトの設定のまま
インスタンスのタグ付け:なんか適当に入力
セキュリティグループ:識別しやすい名前と許可したい通信
 ⇒デフォルトのSSHを許可、他は任意(ICMPとか)
確認後、インスタンスを作成
キーペアは新しく作成し、名前は適当
キーペアをダウンロードして保存しておく。
そのまま作成を継続。ちょっと待つ。
インスタンスの画面でrunningになってたらOK

⑦パブリックIPSSH接続
パブリックIPがアサインされているはず。
⑥でダウンロードしたキーを使ってSSH接続が可能。
Windowsの場合、ここで注意。
pemファイルではなくppkファイルに変換する必要あり。
puttygenツールを使ってppkファイルに変換。
詳しくはこちら。

●AWSKeyPair pemファイル SSH接続用 ppkファイル に変換
WindowsからTeraTermでログインする場合。
ユーザ:ec2-user
RSA/DSA鍵を使うを選択し、保存したppkファイルを読み込む。

以上。