OSの授業の予習会でやった内容を載せていきます。主に昨年の授業内容を参照しているので今年度の内容とは内容が異なる可能性があります。
OSの授業ページ
- Day1(9/21)
- Day2(9/22)
- Day3(9/23)
- Day4(9/26)
- Day5(9/27)
- Day6(9/28)
- 環境構築
- 問題1.2〜1.4のAnsibleのpingまで
OSの授業で必要なインストールのページに沿ってやっていきます。
本当はHigh Sierraにアップデートしたほうがいいんだろうけど面倒くさいので僕はSierraのままです。ひょっとしたら授業でHigh Sierraじゃないとダメみたいな指示があるかも?余裕があればアップデートしておこう。
dog foodは食べたほうが良いのでMojaveにしてみよう
おそらく大体が既に設定されているので設定不要
Alfredとか使えるとAlfredから辞書引けていいですよ
僕はこの設定はいじってません。必要があればGoogleの検索画面から
設定→検索設定→言語→Google サービスで使用する言語→English
を選択すると英語が優先されます。
ターミナルで
brew install mercurial
を入力。Ansibleに関しては問題1.4でもpipでAnsibleを入れさせる項があるので両方入れたほうが良さげ。
brew install ansible
pipではいれない
ターミナルで
java --version
を実行し, java 10.0.2 と出たら最新。(9/21/2018現在)
そうでないなら
brew cask install java
を実行。
!勉強会で発生した事例!
Cask 'java' is unreadable: undefined method 'undent' for 〜
のようなエラーメッセージが出てbrew cask uninstall java
やbrew cask reinstall java
が実行できない。
→/usr/local/Caskroom/java/.metadata/**/Casks/java.rb
を開き, <<-EOF.undent
となっている部分を<<-EOF
に変更し, brew cask uninstall java && brew cask install java
を実行すると無事最新版にアップデートできた。
JavaのSDKをbrea caskでいれるとこういう問題が発生するのとJavaPathFinderの課題で
過去のSDKをinstallする必要があるので brew cask
でinstallするのはあまりオススメではないです
講義ページでInteliJとなっているのはスペルミスなので注意。
JetBrainsの公式サイトでアカウントを取得した後に学生ページにアクセス, APPLY NOWを押し, 各フォームに情報を入力した後にメールが届くのでその指示に従い認証を行うとJetBrainsの製品版アプリケーションを利用できる。
IntelliJのUltimate版をダウンロードする際は公式サイトダウンロードしてもよいが,
brew cask install intellij-idea
からインストールを行うのが管理がしやすいためおすすめ。
Ultimate使おうぜ(使えるんだし)
brew cask install virtualbox
を実行する。
講義ページにあるParallelsとVMware FusionはどちらもVirtual Boxと同じ仮想マシンソフトウェア。
VirtualBoxわりと更新多いのでbrew caskから入れないほうが良いかも(人によるか) ちなみにVirtualBoxは必ず最新版を使うこと
Fedoraの公式サイトにアクセスし, 真ん中のFedora Serverをダウンロード。学科のサーバー上にも同じファイルがあるのでそっちのほうが早いかも?
学科サーバーからダウンロードする場合は
scp yomitan.ie.u-ryukyu.ac.jp:/net/open/Fedora/Fedora-Server-dvd-x86_64-28-1.1.iso ~/Downloads/
を実行。
でかいファイルは rsync -avzP
あたり使うのがオススメ
やり忘れたのでまた後日。
略
学科の学内向けページからシステム利用→外部サイト→Akatsuki
を選択し, サインインした後に右上のLDAP情報変更
をクリック, Shellの項を/bin/bash
から/bin/zsh
に変更し, 変更するボタンを押すと完了。
ssh yomitan@ie.u-ryukyu.ac.jp
でログイン, echo $SHELL
を入力し, /bin/zsh
と返ってきたら成功。
pushd
はcd
と同様ディレクトリ間を移動するコマンド。cd
と違い, pushd
を実行することでカレントディレクトリがスタックに追加され, 引数に与えたディレクトリに移動する。引数を与えない場合直前にいたディレクトリに移動する。
popd
はpushd
でスタックに追加したパスを削除するコマンド。引数を与えずpopd
のみをじっこうするとカレントディレクトリをスタックから削除し, 直前のディレクトリに移動する。
dirs
コマンドでスタックの状況を確認できる。
問題文にある login した directory を覚えておくように zshrc に設定を付け加えて、正しく実行されることを確認せよ。 は恐らくsetopt auto_pushd
のことだと思われる。これを .zshrc
に追記することによってcd
する度に自動でスタックにカレントディレクトリを追加することができる。
実はこの課題は後半にも出てきますが「ログインしたディレクトリを覚えておく」というのは
例えば /etc/
にアクセスしてexitし,再びシェルを開くと /etc/
にcdした状態で始まるみたいな内容だと良さそうです
やり方は色々あって setopt_auto_pushd
をいい感じに使うのでもいいし,zshのhook機能を使うとか(add-zsh-hook
chpwd
chpwd_recent_dirs
...他にも色々便利なのがあるのでググって見よう)
あとは一時的にファイルに書き出すとかでも良いよね.
実はOSの3章のページをよく見るとkono先生のzshの設定例があってそこに答えの一例が
ssh-keygen
を実行することで~/.ssh/id_rsa
と~/.ssh/id_rsa.pub
が自動生成される。その際に-f
オプションを使うと鍵を書き込むファイル名を指定できる。
あとは資料通りに
ssh yomitan.ie.u-ryukyu.ac.jp "mkdir ~/.ssh; chmod 700 ~/.ssh "
と
cat ~/.ssh/id_rsa.pub | ssh yomitan.ie.u-ryukyu.ac.jp "cat >> ~/.ssh/authorized_keys"
をローカルで実行し,
yomitan.ie.u-ryukyu.ac.jp 上に~/.ssh/authorized_keys
が正しく設定されていることを確認したら
ssh-add ~/.ssh/id_rsa
を実行,
ssh yomitan.ie.u-ryukyu.ac.jp "date ; ls -ld ~"
を実行し, パスワードが要求されることなく結果が出力されたら成功。
ssh-keygen
で作る時はちゃんといい感じに作って(語彙力)
参考
略
9/22/2018現在Fedora 28が最新なのでそれをインストールする。問題にある通りインストール時間を計測しなければならないため授業開始後にもう一度インストールすることになりそう。
インストールの方法は, まず(ここではVirtual Boxを用いての方法を説明する)VirtualBox.app
を起動する。
次に左上の新規
を押し, 適当な名前(Fedora等)を入力, タイプを_Linux_ , バージョンを_Fedora_(32bitと64bitどちらでも可)にする。メモリーサイズを1000MB程度に設定し, 仮想ハードディスクを作成する
を選択, 次にVDI(VirtualBox Disk Image)を選択し, サイズを固定サイズに設定, 適当な場所にディレクトリを設定しサイズを1000MB程度に設定し作成。その後作成したマシンを起動し, 環境構築編でダウンロードしたFedoraを指定, 設定が完了するとInstall Fedora 28
を選択する。
しばらくすると自動でインストーラーが立ち上がるので言語を日本語(またはEnglish)に選択しインストール先を選択, インストールの開始を選択し, それが終了するとユーザーを作成した後ディスクを再起動すると完了。
この時先程指定したFedoraをセットしたままだと再度インストーラーが起動してしまうので, VirtualBoxのOSの設定画面を開き, ストレージタブのコントローラー: IDE
に設定されているディスクをクリック, 右側の属性の項にあるディスクのマークをクリックし, 仮想ドライブからディスクを除去
を選択, OKを選択する。
サイズは固定サイズじゃなくても良いですね.可変でも良いとは思います.
user作るのを忘れないこととadministratorにちゃんと入れておいておくと良い(チェックしないとsudoが使えない状態で作成される) あとキーボードの設定をちゃんとしておくのをおすすめする
先程のVirtualBox.app
の設定を開き, ネットワーク→高度→ポートフォワーディング
を選択, ホストポートを4022, ゲストポートを22に設定しOKを押し設定を閉じる。Fedoraを起動した状態でssh localhost -p 4022 -l root
を実行しFedoraにログインできたら成功。
tips
Fedoraの操作をターミナルで行うときに, VMで表示しているFedoraのウィンドウが邪魔だと思う場合は, 起動するときにVMの起動ボタンのそばにある▼
ボタンを押してヘッドレス起動
を選択すると, VMのウィンドウを開かずにOSを起動することができる。
なんでゲストポート22とホストポートを対応させる必要があったのかは抑えておくと良いです. ホストは4022でなくても構いません.
ちなみにVirtualboxのVMへはヘッドレス起動の上にsshログインしてTerminal.appから操作するほうが楽
先程ssh-keygen
は終わっているのでやらなくてよい。次にローカルで
ssh localhost -p 4022 -l root "mkdir ~/.ssh; chmod 700 ~/.ssh "
と
cat ~/.ssh/id_rsa.pub | ssh localhost -p 4022 -l root "cat >> ~/.ssh/authorized_keys"
を実行し,
ssh localhost -p 4022 -l root ls -al
を実行しパスワードが要求されることなく出力がされたら成功。
tips
ユーザーをrootではなく自分で設定したユーザーにした場合, 上記の設定を行ってもパスワードが聞かれるという状態になったが, authorized_keys
のパーミッションを600にすると解決したので, うまくいかない場合は確認してみよう。
rootに鍵通すのはあまり良くない(人によって意見は分かれると思うが)
sudoersに設定されている一般userに通して,無効では su -
とか sudo su
で成り上がると良いと思われる.
ちなみに authorized_keys
は600にしないといけなくて,このファイルは追記ok(いくつかの公開鍵を書いても良い)
あとチートだが ssh-copy-id
とかいう便利ツールもある.探してみよう
sudo easy_install pip
sudo pip install ansible
を実行。
実行しちゃ駄目
君たちpyenvでpython入れてるはずだから pip
は既に入っていると思うし
ansibleはpythonからいれるよりbrew経由でいれた方が良いよね
Fedora側でdnf install python
を実行。(恐らく講義ページでpythongとなっているのは間違い)
正確には sudo dnf install python
ですね.Pythonは入ってたら入れなくても良い(そういえば入ってなかった気がする)
任意のディレクトリでecho vm ansible_user=root ansible_port=4022 ansible_host=localhost > hosts
を実行し,
ansible vm -i hosts -m ping
を実行して
vm | SUCCESS => {...
のような出力が返ってくれば成功。
!講義ページでecho vm ansible_user=root ansible_port=3022 ansible_host=localhost > hosts
となっているのは間違いなので注意!
- 問題1.4のAnsibleのPlaybook
進捗ないです!!!!
- 問題1.4のAnsibleのPlaybook
過去のリポジトリを使っても問題ないとのことなので講義ページに載っているAnsibleによるセットアップのリポジトリをcloneします。任意のディレクトリで
hg clone ssh://yomitan.ie.u-ryukyu.ac.jp//home/hg/y17/k178572/ansible
を実行するとカレントディレクトリにansible
というディレクトリがコピーされているのでそこに移動します。
main.yml
の中のuser
の部分をroot
(もしくは自分で設定したFedoraのユーザー名)に変更し, ローカルの~/.ssh/config
に下記のよう見書き込む。(なければ作成する)
Host test-fedora
HostName localhost
Port 4022
User <rootもしくは自分で設定したユーザー名>
IdentityFile ~/id_rsa
ssh test-fedora
でログインできることを確認した後に, 先程のansible
ディレクトリで
ansible-playbook -i hosts main.yml --ask-become-pass
を実行する。するとパスワードが聞かれるのでVMで設定したパスワードを入力する。
!僕が遭遇したエラー!
<ユーザー名> は sudoers ファイル内にありません。この事象は記録・報告されます。
といったエラーが出た場合。
→Fedora上で以下の手順を実行。
$ su
$ visudo
### visudoの中身
(略)
Allows people in group wheel to run all commands
%wheel ALL=(ALL) ALL (ここの行頭のコメントをはずす, コメントアウトされていなければそのまま)
$ usermod -G wheel <ユーザー名>
$ su <ユーザー名>
過去のリポジトリというかansibleのはこの優しさを感じながらやってみてね おそらくvisudoの必要はないはず.usermodだけで良い
VirtualBoxの設定を開き, ネットワーク→高度→ポートフォワーディング
と進み, 右上の+マークをクリックした後, 追加されたルールのホストポートを8080, ゲストポートを80に設定してOKを押して設定を閉じる。
ブラウザでlocalhost:8080
にアクセスするとWordPressのinstallページが表示されるので, [サイトのタイトル], [ユーザー名]等を入力する。
その後wordpressのインストールを行えば完了。
tips
localhost:8080
にアクセスしてもFedora test page
のようなページが表示されwordpressのinstallページが表示されない場合は, 先程の
ansible-playbook -i hosts main.yml --ask-become-pass
をもう一度やってみると解決するかも。
- 問題2.1のJDKとIntelliJのインストール
今回は割と講義ページに説明が詳しく載っているためそこまで説明はいらないかと思いますがとりあえず書きます。
JDKのinstallは冒頭の環境構築でbrewでjavaをinstallを行った人は不要かと思われます。
資料通りに。
講義資料では gradle.bundle
に付け加えると書いてありますが, 実際は buile.gradle
というファイルなのでそれに書き込みます。
tips
エラー: メイン・クラス 〜〜〜 を検出およびロードできませんでした
原因: java.lang.ClassNotFoundException: 〜〜〜
のようなエラーが出る場合はファイル名や, build.gradle
で指定したパスが間違っている可能性が高いのでそれを確認してみましょう。
konoのままメールで提出したらF
(略)
Gradle Wrapper とは, gradlewというスクリプトを生成するコマンドで, このスクリプトを生成しておくと Gradle を導入していない環境でも gradle
コマンドと同様のビルドを行うことができます。
gradle wrapper
を実行すると, projectに次のようなファイル群が生成される。
├── gradle
│ └── wrapper
│ ├── gradle-wrapper.jar
│ └── gradle-wrapper.properties
├── gradlew
├── gradlew.bat
Gradleのバージョンが古い場合は, ./gradlew wrapper --gradle-version=4.10
のようにアップグレードしたいバージョンを指定すると, gradle-wrapper.properties
が書き換えられ, アップグレードできる。
ちなみに存在しないバージョンも指定できるらしい。(その場合はgradlewが使えなくなるため手動でgradle-wrapper.propertiesを書き換え直さないといけない)
参考
Gradle Wrapper スクリプト (gradlew)を作成する
Gradleプロジェクトをアップグレードする
このあたりはIntellijが自動でやってくれるのであまり手を加えないほうが良い
ちなみにmercurialリポジトリに含めていいのは build.gradle
と書いたソースだけ
.idea/
とかいれない
そういえばJDKがどこにinstallされたかは探したかな?
進捗ないです!!!!!
履修登録をした
UnitTestを通すところまでは行きましたが細かいところがまだ途中なので後ほど。。。。
全体的に進んでていいですね.slackのOSチャンネルにはいると幸せになれそう