Skip to content

Instantly share code, notes, and snippets.

@hfm
Last active December 18, 2015 14:18
Show Gist options
  • Save hfm/5795684 to your computer and use it in GitHub Desktop.
Save hfm/5795684 to your computer and use it in GitHub Desktop.
maglicaでvm作ってからいろいろやったことのコマンド履歴

1. まずはGitとか

groupinstallで便利ツールズをたらふく入れる。

# yum groupinstall "Development Tools"

1.1 Gitをアップデートする

yumからだと1.7系なので、1.8系をsource installする。

$ cd /usr/local/src
$ sudo wget https://git-core.googlecode.com/files/git-1.8.3.1.tar.gz
$ sudo tar xzvf git-1.8.3.1.tar.gz
$ cd git-1.8.3.1
$ sudo ./configure --prefix=/usr/local/git
$ sudo make
$ sudo make install

インストールが終わるので、/binにシンボリックリンクを貼る

$ sudo ln -s /usr/local/git/bin/git /usr/local/bin

2. userつくる

2.1 GID 1000なグループを作って、sudo使えるような権限を与えておく

# groupadd -g 1000 sampleapp
# visudo
+ %sampleapp        ALL=(ALL)       ALL

2.2 UID 1000なユーザを作る

# useradd -u 1000 -g 1000 okkun 
# passwd okkun
ENTER PASSWORD

3. nginx

$ su -
# yum install nginx
# chkconfig nginx on
# service nginx start

まだ/etc/nginx/nginx.confやってないです。

4. mysql

4.1 初期設定

$ su -
# yum install mysql-server
# vi /etc/my.cnf => character-set-server = utf8
# mysql_secure_installation 
# chkconfig mysqld on
# service mysqld start

4.2 ユーザとDBつくる

$ mysql -u root -p
mysql> GRANT ALL PRIVILEGES ON sampleapp.* TO okkun@localhost IDENTIFIED BY '********';
mysql> exit
$ mysql -u okkun -p
mysql> CREATE DATABASE sampleapp;

5. rbenv + ruby 2.0.0-p195

5.1 rbenvをsystem wideに入れる

$ su -
# git clone git://github.com/sstephenson/rbenv.git /usr/local/rbenv
# cd /usr/local/rbenv
# mkdir shims
# mkdir versions
# mkdir plugins
# git clone git://github.com/sstephenson/ruby-build.git plugins/ruby-build
# sh plugins/ruby-build/install.sh
# git clone https://github.com/sstephenson/rbenv-default-gems.git plugins/rbenv-default-gems
# echo "bundler" >> default-gems
# echo "pry" >> default-gems

5.2 環境変数を通しておく

$ sudo vi /etc/profile.d/rbenv.sh
export RBENV_ROOT="/usr/local/rbenv"
export PATH="/usr/local/rbenv/bin:$PATH"
eval "$(rbenv init -)"

5.3 ruby 2.0.0-p195を入れる

# rbenv install 2.0.0-p195
# gem update --system

6. Rails

sampleapp

$ cd
$ git clone [email protected]:Tacahilo/sample_app.git
$ cd sample_app/
$ 

まだやれてないけど、Gemfileにunicornとか入れる。

unicorn

このあたりを見てやる予定

まだやれてないけど忘れたらアカンこと

  • Railsの実動作は``RAILS_ENV=production``` でやる。
  • mysqlのgrantは、必要最低限な権限だけ付与するというにする

実はよく分かっていなかったこと

  • yum install hogeyum install hoge-devel なパッケージ、何が違うの?
  • hogehoge-devel の違いの調べ方ってなんだろう?
  • /bin とか /usr/local とか、ディレクトリ構成について
    • gitの最新版を入れたい => どのディレクトリに入れよう???
  • 環境変数を通すときに、どのファイルに記述しておくのが理想的?
    • /etc/profile
    • visudo
@hiboma
Copy link

hiboma commented Jun 17, 2013

👍

06/17 18:19:51 hiroya: mysql> create database sample app;
06/17 18:19:56 hiroya: ここ空白で大丈夫かな
06/17 18:20:44 hiroya: $ su -
06/17 18:20:44 hiroya: $ git clone git://github.com/sstephenson/rbenv.git /usr/local/rbenv
06/17 18:20:44 hiroya: $ cd /usr/local/rbenv
06/17 18:20:58 hiroya: ここは su - したら
06/17 18:21:03 hiroya: $ su -
06/17 18:21:03 hiroya: # git clone git://github.com/sstephenson/rbenv.git /usr/local/rbenv
06/17 18:21:03 hiroya: # cd /usr/local/rbenv
06/17 18:21:21 hiroya: ですかね。手順として残す場合は.
06/17 18:22:17 okkun: hiroya: なるほど…!一般ユーザとrootユーザの分け方気をつけます
06/17 18:22:56 hiroya: git とか yum install したリストも極力残す感じで。
06/17 18:23:00 antipop_: 手で入れたパッケージもみんな記録しないと死ぬよ〜
06/17 18:23:36 hiroya: antipop_: が VM を壊しにくる前に履歴を全部残す君
06/17 18:23:56 hsbt: ごごご
06/17 18:24:17 antipop_: infrastructure as codeしてればだいじょうぶ
06/17 18:24:25 hiroya: $ grant all privileges on sampleapp.* to okkun@localhost identified by '********';
06/17 18:24:30 hiroya: ここはとりあえずこれでいいけど、
06/17 18:25:04 hiroya: 権限を極力しぼっておいて、必要最低限な権限だけ付与する というにするのを exercise とします
06/17 18:25:35 hiroya: 6~7 個ぐらいの権限つけてあれば db:migrate してアプリ動かせる感じ

@hfm
Copy link
Author

hfm commented Jun 17, 2013

アドバイスありがとうございます:bow:

@lamanotrama
Copy link

yum install hoge とyum install hoge-devel なパッケージ、何が違うの?

ざっくり言うと

  • hogeはそれ単体で動くもの
  • hoge-develはhogeスタティックリンクライブラリとかヘッダファイルが入ってる

hogeを使ったツールとかを自前でコンパイルするときはhoge-develが必要 rpm -ql hogeとかすると何が入ってるのかわかるよ。

gitの最新版を入れたい => どのディレクトリに入れよう???

色々流儀があるけどgitに限らず自分がよくやるのは

  • /usr/local/git をprefixにしてconfigureしてinstall
  • /usr/loca/git/bin にPATHを通すか、 /usr/local/bin/ 以下にそれぞれシンボリックリンクを張る

/usr/local をprefixにして入れるのは、環境が汚れるので好きくない。gitだったら自分なら~/bin にぶっこむかなぁ。

環境変数を通すときに、どのファイルに記述しておくのが理想的?

基本は~/.bash_profileとか.~/.zprofileがいいと思うよ。
今回systemグローバルにrbenv環境を作ってるけど、/etc/profile以下でロードして常にそれ使うようにしてしまうと、system rubyに依存したディストリデフォの何かが使えなくなる可能性があるからね。特に複数人で使う環境だとそこは気をつけた方がよい。

@hiboma
Copy link

hiboma commented Jun 17, 2013

ここはほんとに必要かな?

# visudo
+ %sampleapp        ALL=(ALL)       ALL

権限分離のポリシーをどうしたらよいかという視点と、Webアプリケーションにコマンドインジェクション脆弱性があった場合を考慮してみてください

@lamanotrama
Copy link

訂正

system rubyに依存したディストリデフォの何かが使えなくなる可能性があるからね

ごめん今回置いた内容(profile.d/rbenv.sh)だったら悪影響ないわ。
でも何にせよ、明確な理由が無い限りは影響範囲は出来るだけ小さくしとくのがセオリーだよ。

@hfm
Copy link
Author

hfm commented Jun 18, 2013

@lamanotrama
ありがとうございます!
gitに関して手順を作成して、手元の環境でも実行しました!
シンボリックリンクを貼ると、ディレクトリがゴチャゴチャせずに区分けできるので良いですね。
環境変数の話にもつながることですが、ソースインストールするようなものは出来るだけ分散してほしくない(=影響範囲を出来るだけコンパクトに留めておきたい)ので、今後もそうやっていきます。

あと、 rpm -ql hoge を初めて知りました。
パッケージインストールしたものの内、どのファイルがどのディレクトリに配置されたのかが一覧できてすごく便利でした。
実はこれを知るまではfindコマンドでルートから全件操作してました…。

@hfm
Copy link
Author

hfm commented Jun 18, 2013

@hiboma
確かに新規作成したユーザにsudoを全権移譲するのは危険でした。
ただ、まだ /etc/sudoers について理解していないことが多いので、
man 5 sudoers で勉強していきたいと思います。

@glidenote
Copy link

ファイル編集した記録はdiff -u my.cnf.before my.cnfみたいな感じでdiff残しておくと良いですよ。添削する方もどこを修正したか分かりやすいです。

$ diff -u my.cnf.dist my.cnf
--- my.cnf.dist 2013-06-18 11:05:30.000000000 +0900
+++ my.cnf      2013-06-18 11:05:03.000000000 +0900
@@ -148,7 +148,7 @@
 [mysqldump]
 quick
 max_allowed_packet = 16M
-character-set-server = ujis
+character-set-server = utf8

 [mysql]
 no-auto-rehash

diffからpatchが作れるので、次回以降はそのpatchを使って、ファイル修正が出来ます。

diffを取る習慣が身につくと、バックアップは必ず取るようになりますが、ファイル修正する場合は必ずバックアップを取りましょう。gitで管理してgit diffでも良いです。
設定変えたら動かなくなったけど、バックアップ無いから元にも戻せない!みたいな障害が防げます。

@hfm
Copy link
Author

hfm commented Jun 19, 2013

@glidenote
ありがとうございます!
恥ずかしながらpatchコマンドを知りませんでした。これから使っていきます!

@hfm
Copy link
Author

hfm commented Jun 20, 2013

https://gist.github.com/Tacahilo/5820097
上記の内容をpuppetで再現するための記録を展開しています。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment