Embed presentation
Download as PDF, PPTX
【秘伝】クラウドに開発環境を えいっ!と構築する方法 オープンソースカンファレンス 2014 Nagoya 日本openSUSEユーザ会 はしもとまさひこ
2 自己紹介 ●くろまる 神奈川県(の政令都市の最も人口の少ない市)在住。 – 去年まで愛知県大府市に住んでいました。 ●くろまる 日本openSUSEユーザ会の人。 – ユーザ会ではいろいろ協力してくださる方を常に募集中! ●くろまる 東海道らぐ(Tokaido Linux User Group)初代名古屋案内人 – 東海道らぐでは本日16時からLT大会を行います。 – こちらの会員も大募集中! ●くろまる 実際は・・・自分は単なる文系出身のさえないエンジニアです! – そんな人間でもこうしてセミナーやってるんですから...^^;
3 本日のアジェンダ ●くろまる VPSにLinuxをインストールしよう! – Linuxディストリビューションの選び方 – VPSへインストールする際のコツ – 絶対やっておきたいセキュリティ対策 ●くろまる 開発環境だったらこれを入れるよね? – Git: SSH でアクセスしてみよう! – Jenkins: HTTPS でアクセスしてみよう! ●くろまる プライベートクラウドっぽく? – 暗号化通信の方法 いつも時間がなくなるのでさくさく行きましょ〜(笑)
4 1.VPSにLinuxをインストールしよう!
5 最近レンタルVPSって増えてきましたよね? ●くろまる VPSをレンタルしてくれるところ、増えてきた気がします。 – どこがいいか...わかりません!(笑) ←状況によりますし ●くろまる 是非今日出展されてるブースを覗きに行ってください。 ●くろまる VPSを社内の情報共有に活用しよう!という話も多くなってます。 – 中小企業でも気軽に使える点がいいですね! ●くろまる ...のだけど、実際はどう運用すべきかわからない!? – 「気軽に」借りれるのはいいけど、運用は「気軽」じゃなかった? – そもそもLinuxディストリビューションってなに?(そこから?)
6 Linuxディストリビューション選び。 ●くろまる とりあえず・・・CentOS入れておく? 本当にそれでいいの? せっかくだからいろいろ学んじゃえ! そうだそうだ
7 ディストリビューションいろいろ ときに、某雑誌にてこんな紹介がありました! – Ubuntu 13.10 ・・・入門 – Debian 7.4 ・・・汎用 – Fedora 20 ・・・先進 – CentOS 6.5 ・・・安定 – openSUSE 13.1 ・・・欧州 ※(注記)出典 : 日◯Linux 2014年5月号 注目
8 ちょっと解説(いいわけともいう) この分類はどうなんだろ...? – Ubuntu :入門 = 初心者でも扱い安いのは間違えないよね。 – Debian :汎用 = パッケージ数が豊富なため多方面で利用可能。 – Fedora :先進 = あくまで「RHEL」と比較した場合かな...? – CentOS :安定 = 情報量が多いだけでは?(何を持って「安定」と呼べるか) – openSUSE :欧州 = もはやノーコメント(笑)
9 そもそもオープンソースを使うわけだから... ●くろまる サポート受けることが前提ならOSを買うべし!(きっぱり) – 商用Linuxもいくらでもありますしね! ●くろまる OSSはコミュニティーによって開発されるもの。 ●くろまる 何かあったら誰かに質問する or バグ報告が大切 – 質問&バグ報告も、ひとつのスキルです!! – ソースコードを書くことだけが重要なのではありません! ●くろまる コミュニティーが活発なディストリビューションは? →オープンソースカンファレンスに参加しているか?等 ●くろまる 私は「オープンソース=無料」で使えるという発想が好きではありません!
10 のでディストリビューション選びとは... ●くろまる いろんなディストリビューションにまず触れてみましょう! ●くろまる 百聞は一見に如かず! 下手な情報よりもまずは自分の手で動かしてみよう。 タベテミナケリャワカラナイ...
11 というわけで...openSUSEのご紹介 ●くろまる ドイツ発祥のLinuxディストリビューションです! – だから欧州で人気があります。 – 海外で定評のあるSLES, SLEDのオープンソース版 ●くろまる SLES : SUSE Linux Enterprise Server ●くろまる SLED : SUSE Linux Enterprise Desktop ●くろまる openSUSEといえば! YaST(やすと) – コントロールパネルみたいななんでもできるすごいやつ。 ●くろまる Geeko(ぎーこ)くんも忘れずに!! – 本日も特大ぎーこくんが名古屋入りしてます。
12 openSUSEのパッケージ管理コマンドも覚えてね! ●くろまる パッケージ管理コマンド「zypper」 – zypper install apache ←Apacheのインストール – zypper update ←パッケージのアップデート ●くろまる ただし、パッケージ検索ならWebから検索した方が 早い場合もある! – http://software.opensuse.org/search – ワンクリックインストールでリポジトリ登録から パッケージインストールまで自動実行! けど、サーバーではあまりメリットを感じないかな?^^;
13 それではVPSへインストールしてみましょう! ●くろまる なんだか「標準OS」とか「カスタムOS」とかあるんですけど〜 およその VPS は CentOS がデフォルトなんでしょ?orz ●くろまる カスタムOSならいろんなディストリビューション出てくるよ〜 でも openSUSE があるのは・・・(以下略) ●くろまる というわけで、CD/DVDメディアからインストールしてみよう。 他のディストリビューションでも同じ方法でいけるはず!
14 CD/DVDメディアからインストールする方法 ●くろまる 使うもの:ネットワークインストール版CD/DVD ●くろまる 理由:フルDVD版だと VPS への転送に時間がかかるため http://software.opensuse.org/131/ja 細かいインストール方法は VPSサービスによって異なるため、省略します(^^) (今日、VPSサービスのブースへ行ってみる or セミナーへ行ってみる などなど...)
15 セキュリティ対策も忘れずに... 私がこのセミナー資料を書いてる最中、突然知人 から電話かかってきた!(以下実話^^;) 「レンタルしていたサーバーから大量のトラフィック が発生してると指摘を受けた。(から今度相談させ て)」 ...おいっ!!! 事故が他人事とは本っ当に思ってはいけません!!
16 絶対にやっておきたいセキュリティ対策 ●くろまる SSH鍵認証を設定すること! – パスワードのみによるログインは絶対にダメ! – root ユーザーでの直接ログインも絶対にダメ!! ●くろまる 鍵の作成方法については省略(^^) ●くろまる VPS(サーバー)側の SSH設定を変更しましょう。 – ファイル名: /etc/ssh/sshd_config ※(注記)最低限変更しておきたい内容 ●くろまる PasswordAuthentication no =パスワード認証無効化 ●くろまる PermitRootLogin no =rootユーザのログイン無効化 ●くろまる ChallengeResponseAuthentication no =チャレンジレスポンス認証無効化 ●くろまる UsePAM no =PAMを使用した認証の無効化 意味を知ってから自分の環境にあった設定へ変更することが重要です! ●くろまる 変更後「service sshd restart」(SSHD再起動)と入力するのを忘れずに。 SSHといえば... SSHサービスの自動起動 「chkconfig sshd on」 も忘れずに!
17 su か sudo か、それが問題だ! ●くろまる スーパーユーザー(root)のコマンドを入力する場合「su」もしくは 「sodo」を使います。 – su 「su -」と入力した後、rootユーザのパスワードを入力して、 rootユーザのように振る舞う。 – sudo 「sudo zypper up」のように、一般ユーザのまま スーパーユーザーのコマンドを入力する。 ●くろまる どっちを使うべき? – サーバー管理者が複数人いる場合は「sudo」の方がいいのでは? /var/log/messages をみればいつ誰がどのコマンドを使ったかわかりますしね。 – ひとりでサーバーを管理する場合は「su」でもいいと思います。
18 これだけは覚えておきたい! sudo の設定 ●くろまる sudo 設定方法 > su - # usermod -G wheel hashimom # visudo ●くろまる /etc/sudoers の設定 – Defaults targetpw ↓ コメントアウト #Defaults targetpw – ALL ALL = (ALL) ALL ↓ コメントアウト #ALL ALL = (ALL) ALL – #%wheel ALL=(ALL) ALL ↓ コメントイン %wheel ALL=(ALL) ALL スーパーユーザへ変更 一般ユーザ「hashimom」を wheelグループへ追加 ※(注記)もちろん一般ユーザ名は 置き換えて読んでください! /etc/sudoers を編集します 「#」をつけて、コメントアウトします。 # つける...sudo 入力時に root パスワードを聞く # つけない...sudo 入力時に自分のパスワードを聞く → root パスワードを共有しないようにします。 「#」をとって、コメントインします。 → wheel グループに root 権限を付与します。 注: あくまで設定例です! 意味を確かめながら自分の環境にあった設定をしてください。 「#」をつけて、コメントアウトします。 → 下記の wheel グループ以外に root 権限を付与しません。
19 YaSTでファイアウォールを設定しよう ●くろまる openSUSEでは、デフォルトでファイアウォールが起動しています。 ●くろまる 「sudo /sbin/yast」と YaST を起動して、設定してあげましょう。 – 「セキュリティとユーザ」→「ファイアウォール」と選択します。 Iptables のコマンドを 覚える必要もないですね(^^)
20 VPS は「外部ゾーン」に設定 ●くろまる 「インターフェイス」を「外部ゾーン」で設定します。 1. 「インターフェイス」 を選択 2. 「変更」を押して 3. 「外部ゾーン」 を選択
21 アクセスを許可するサービスの追加方法 ●くろまる メニューから「許可するサービス」を選択します。 1. 「許可するサービス」 を選択 2. アクセスを許可する サービスを選択 3. 「追加」を選択 これで SSH は接続できるはず。接続できましたか?
22 ところで「内部」とか「外部」ってなに? ●くろまる VPSでは「外部ゾーン」に設定しよう! ルーターを思い浮かべてください。 ●くろまる 内部ゾーン: LAN側 ●くろまる 外部ゾーン: WAN側 ●くろまる 非武装ゾーン: DMZ GWルーター PC(端末) サーバー 内部ゾーン内部ゾーン 非武装ゾーン(DMZ): 外からも内からもアクセス可能なゾーン 非武装ゾーン(DMZ): 外からも内からもアクセス可能なゾーン インターネット 外部ゾーン外部ゾーン レンタルVPS はクラウド(インターネット)上に置かれています。 だからしっかりとしたセキュリティ対策が必要なんですね!
23 2. 開発環境だったらこれを入れよう!
24 今時の開発環境はアジャイル? ●くろまる あじゃいるってなんぞや ...という話はここではしませんのであしからず^^ ●くろまる とりあえず入れておきたいソフトは? – ソースコード管理ソフト – Jenkins(継続的インテグレーション ) 最低限、そこだけは抑えたいですよね! その他のツールは時間の都合上もあり省略しますm(_ _)m
25 ソースコード管理といえば Git かな ●くろまる Git のインストールコマンド > sudo zypper install git ●くろまる Git リポジトリの作成 > sudo mkdir -p /srv/git/hoge.git > cd /srv/git/hoge.git > git --bare init ●くろまる 接続テスト > git clone ssh://localhost/srv/git/hoge.git ここまでは楽勝...かな?? 例では「/srv/git/hoge.git」という リポジトリを作成しています。 置き換えて読んでください。
26 Gitリポジトリを共有しよう! ●くろまる 複数人で Git を利用する場合は、やっぱしそれなりセ キュリティ対策が必要! – 誰でもサーバーを弄れてしまったら問題ですよね! – wheel グループのユーザー以外は、sudo を使わせないよう にしましょう! ●くろまる 方法は2つ...かな? – Git運用用ユーザをひとつ作って皆で使う – 利用者全員に別々のユーザを発行する ※(注記) Git運用ルールを踏まえた上で決めましょう! ●くろまる 細かな設定方法については省略しますm(_ _)m
27 続いて、Jenkins! ●くろまる 実はインストールは楽勝! > sudo zypper addrepo http://pkg.jenkins-ci.org/opensuse/ jenkins > sudo zypper install jenkins > sudo /etc/init.d/jenkins start ●くろまる これでインストールから起動まで完了です! ●くろまる 問題は SSL ・・・? 専用リポジトリの追加、 インストール、 起動...という順です。
28 ApacheのリバースプロキシでSSL通信しよう ●くろまる 通常の HTTPでは暗号化されておらず、通信は平文 で流れてしまいます。 Wireshark などで解析すると駄々漏れです... ●くろまる SSL を使用して、通信を暗号化しましょう! パスワード入力画面とか平文はまずいしね... ●くろまる Apache のリバースプロキシ機能を使って、 Jenkins とのやりとりを暗号化していきます。
29 YaST から LAMP をインストールしてみよう ●くろまる パッケージのインストールも YaST が便利です! ●くろまる 「ソフトウェア」→「ソフトウェア管理」を選択します。
30 パッケージパターンで LAMP をまるごとインストール! ●くろまる 「Filter」で「Patterns」を選択します。 – 「Web および LAMP サーバ」を探しましょう。 3. 見つかったら「Accept」を押して パッケージのインストールが 始まります。 1. 「Filter」で「Patterns」を選択 2. 「Web および LAMPサーバー」を選択
31 YaST で Apache も設定しちゃえ! ●くろまる YaST から 「ネットワークサービス」-「HTTP サー バ」を選択すると、Apache の設定が行えます。 – ここでは何も設定しないので、全てそのまま「次へ」を押してみましょう! 「次へ」を押して 次画面へ進みます
32 バーチャルホストを使ってみよう ●くろまる Apache には、1台のサーバー上に複数のWebサイトを置くことが できる、「バーチャルホスト」という機能があります。 ●くろまる Jenkins のサイトをバーチャルホストとして登録していきます。 – 他に Webサイトを構築したくなったときに対応できますね! ●くろまる 設定方法: – sudo vi /etc/apache2/listen.conf で以下の行を編集します。 編集前) #NameVirtualHost * ↓ 編集後) NameVirtualHost * ←「#」をとってコメントイン
33 バーチャルホストの設定ファイル ●くろまる /etc/apache2/vhosts.d がの設定ファイルを置き場です。 ●くろまる テンプレートがあるのでコピーして使いましょう! – vhost.template: 通常のサイトのテンプレート – vhost-ssl.template: SSLサイトのテンプレート ※(注記)「cp -p vhost.template hoge.conf」で作成します。 ●くろまる 拡張子は必ず「.conf」という形にします! ●くろまる YaST でも通常のサイトのみバーチャルホストが作れます。 – どちらの方法でもいいですが、YaST で Apache の設定を変更すると、この ディレクトリ内の「.conf」ファイルが消されてしまう場合があります(^^; – そのため「.conf」ファイルを手書きで修正したら、必ず拡張子を変更して、 バックアップを作成しておきましょう! ●くろまる Jenkins (SSL)サイトの作成については後述します。
34 さて、SSL対応...の前におまじない ●くろまる YaST を起動して 「システム」-「/etc/sysconfig エディタ」を開きましょう。 1. 「WWW」-「Apache2」- -「APACHE SERVER FLAGS」 を選択 2. 「SSL」と入力 3. 「完了」を押す 他にもいろんなことができます。
35 SSL にも鍵があるんです! ●くろまる こんな感じで作ります。 > openssl genrsa -des3 -out server.key > openssl req -new -x509 -key server.key -out server.crt ●くろまる 噂の「openssl」です! 入力前に必ずパッケージを最新にしましょう! ●くろまる このコマンドは一例です。オプションの意味を確認してください。 ●くろまる 作成し終わったら配置します。 > sudo cp server.key /etc/apache2/ssl.key/ > sudo cp server.crt /etc/apache2/ssl.crt/ ●くろまる 配置場所については、次頁以降のバーチャルホスト設定ファイルに記載す る場所になります。
36 Jenkins サイトの設定(大詰め!) ●くろまる Jenkins のバーチャルホストを作成します。 – 下記コマンドでファイルを作成してください。 > cd /etc/apache2/vhosts.d > sudo cp -p vhost-ssl.template vhost-ssl.conf > sudo vi vhost-ssl.conf 大詰め! あとすこしだよ〜
37 設定ファイル(例) 編集し終わったら「service apache2 restart」で再起動します! あ、設定ファイルのバックアップも忘れずに!(バックアップは拡張子も変えてね!) <VirtualHost hogehoge.net:443> # General setup for the virtual host ServerName hogehoge.net:443 ServerAdmin hoge@geeko.jp ErrorLog /var/log/apache2/error_log TransferLog /var/log/apache2/access_log ProxyRequests Off ProxyPreserveHost On <Proxy http://localhost:8080/*> Order deny,allow Allow from all </Proxy> ProxyPass / http://localhost:8080/ ProxyPassReverse / http://localhost:8080/ ProxyPassReverse / http://hogehoge.net/ 赤字が修正箇所です! ここからがリバースプロキシの設定です。 元々 Jenkins は「http://localhost:8080/」 という URL で動いています。 それを「https://hogehoge.net/」で 閲覧できるようにするというのが この設定になります。 この下に、先ほど作成した 鍵のファイルパスなどが書かれています。 必要に応じて変更してください。
38 動きましたか〜? ●くろまる かなりざっくり書いてしまっているので、ひとつやふ たつ難関にぶち当たるかも...? – 私もこの資料作成するのに実験をいろいろしています が、なかなか思うようにはいかないものです(^^; – 設定も勉強だと思って、めげずに頑張りましょ〜!
39 3. プライベートクラウドっぽく使うには?
40 暗号化の方法は他にもあります! ●くろまる VPS (クラウド上)にサーバーを構築する以上、セキュ リティの大切さは理解していただけましたでしょうか? ●くろまる 今回紹介した SSH や HTTPS の他にも、Virtual Private Network(VPN) を利用して暗号化する方法が あります。 ●くろまる VPN の種類: – PPTP : Windows 向け?(セキュリティ的に非推奨) – IPsec : 拠点間通信向け(点と点を結びます) – L2TP : スマホ向け(相手のIPアドレスが不特定の場合に) – OpenVPN : Linux 向け?(非対応ばかり...)
41 VPS で VPN を使うとしたら? ●くろまる IPsec が便利かと思います。 – openSUSE では StrongSwan というソフトが使えます。 – 詳細は下記の資料を参考にしてください(^^) http://www.slideshare.net/hashimom/vpn-24901457 ちゃっかり宣伝です。 (昨年OSC京都の資料ですね...)
42 まとめ。
43 たいせつなことは。 ●くろまる オープンソースは使うだけのものではありません! – 自分たちでオープンソース成長させていくんだ!という気持ちで。 – 質問するスキルも身につけましょう! ●くろまる なんでこう設定するの?を確認しましょう! – コピペだけではなんの意味もありません。 – 意味を理解した上で、しっかりセキュリティ対策していきましょう!
44 日本openSUSEユーザ会への問い合わせ ●くろまる わからない場合は・・・ – メーリングリスト – 日本語フォーラム(http://forum.geeko.jp) – IRC (毎週土曜22時〜 freenode #opensuse-ja にて定例) – Twitter (@opensuseja) – Facebook( https://www.facebook.com/opensuseja ) ●くろまる いろいろあるので活用していきましょう!
45 ご清聴、ありがとうございましたm(_ _)m