11.RailsプロジェクトをGitで共同開発RubyRailsGitCentOSさくらVPSはじめに自由にテスト出来るLinuxのサーバーがほしくて、さくらVPSで構築してみました。手順をアップしていく予定です。Railsを共同開発できるようにGitで管理したいと思います。Railsインストール時に作成したテスト用プロジェクトHelloWorkdを共同開発できるようにGitで管理したいと思います。共同開発用のマシンは、ローカルのWindows10のマシンにします。構成は、こんな感じです。共有リポジトリ(リモートリポジトリ)は、サーバーに配置して複数人で共有するためのリポジトリです。共有リポジトリは、GitHub等を使う方法もありますが、今回はプロジェクトの有るさくらVPSサーバー内に作成します。Gitでは、開発マシンのソースを直接本番ソースにアップするのではなく、一度共有リポジトリにアップ(プッシュ)したものを本番ソースから取りに行く(プルする)形になります。サーバーにある本番ソースもローカルマシンの開発ソースと同様ローカルポジトリですので、開発側がアップした変更は手動で本番ソースに取り込む必要があります。これだと不便ですので、共有リポジトリが変更を受け取った時自動的に本番ソースが取りに行くように設定します。checkout共有リポジトリ(リモートリポジトリ)作成まず、複数人で共有するためのリポジトリを作成します。共有リポジトリは、作業用のディレクトリ・ファイルを持たず管理用のファイルのみの『ベアリポジトリ』にします。さくらVPSサーバーの/optに共有リポジトリを作成します。共有リポジトリ用ディレクトリ作成/optの中に「プロジェクト名.git」というフォルダを作成します。/opt/helloworld.git/-pは/optフォルダがなければ作成します。「4.Apache・PHPインストール」で作成したWebコンテンツ操作用のグループ(webadmin)にします。Railsインストール」で作成したHelloWorldプロジェクトを本番ソースとします。この本番ソースにローカルリポジトリを作成し、共有リポジトリ(リモートリポジトリ)にプッシュします。リポジトリのセットアップ本番ソースのディレクトリに移動し、ローカルリポジトリを作成します。共有の必要がないファイルは、除外ファイルに指定します。railsコマンド実行時に作成される.gitignoreファイルにリポジトリから除外するファイルを指定するためのルールが記載されています。このファイルに以下を追加します。files.doc/*.swp*~.project.DS_Store.idea.secretファイルをインデックスに追加(addコマンド)本番ソースのファイルをコミット待ちの変更が格納される「ステージングエリア」という一種の待機場所に追加します。statusコミット本番ソースのローカルリポジトリへの変更反映します。repository共有リポジトリ(リモートリポジトリ)にプッシュ本番ソースのローカルリポジトリを共有リポジトリにプッシュします。リモートリポジトリのアドレスに「origin」という名前を付けて記録しておきます。(「origin」にしたのは、pushやpullコマンドは実行時にリモートリポジトリ名を省略するとoriginという名前を使用する為)この作業は、本番ソースのディレクトリで行います。/opt/helloworld.git本番ソースのローカルリポジトリを共有リポジトリにプッシュします。この作業も、本番ソースのディレクトリ内です。push」だけでpushしてくれます。以上で、本番ソースが反映された共有リポジトリが出来ました。開発用ローカルマシン(Windows10等)で変更した内容は、共有リポジトリにプッシュします。この時点で、共有リポジトリは最新データになります。本番ソースのリポジトリは、開発ローカルマシンのリポジトリと同様ローカルポジトリですので、本番ソース側から取り込む作業(プル)しない限り、本番ソースのリポジトリは古いままです。開発側がアップした変更は手動で本番ソースに取り込む必要があります。これだと不便ですので、共有リポジトリが変更を受け取った時、自動的に本番ソースが取りに行くように自動化します。自動化にはフックを使います。フックは、Gitでコマンドを実行する直前もしくは実行後に特定のスクリプトを実行する為の仕組みです。クライアントからpushを受け取った直後に起動。更新内容の確認が可能。pushによる更新対称ブランチごとに起動。共有リポジトリの中にある「hooks」の中に、フック名のスクリプトファイルを作成することで実現できます。今回は、開発のローカルリポジトリからプッシュされ、その内容が適用された後に本番のローカルリポジトリからプルするスクリプトを実行したいので、「/opt/helloworld.git/hokks/post-receive」というスクリプトファイルを作成します。スクリプトの内容は、本番ソースのドキュメントルートに移動し、publlを実行します。pullスクリプトファイルを他のユーザから実行できるようにパーミッションを設定します。/opt/helloworld.git/hooks/post-receive以上でサーバー側の設定は完了です。各ツールのインストールRuby、Rails、Git等をインストールしていきます。Rubyインストール下記サイトからダウンロードします。(x64)」をダウンロードしました。https://rubyinstaller.org/downloads/ダウンロードしたファイルを実行すると下記の画面が表示されます。License」を選択し[Next>]をクリックします。下記画面が表示されたら、チェックボックス3つともチェックをいれ、[Install]をクリックします。下記画面が表示されたらそのまま[Next>]をクリックします。下記画面のようにインストールが開始されますので、終わるまでしばらく待ちます。インストールが終了すると、下記画面が表示されます。そのまま[Finish]をクリックすると画面が閉じ、インストールが完了します。引き続き下記の画面が開きます。1,2,3と入力して[Enter]キーを押すとインストールが開始されます。[]」と表示されますので、[ENTER]キーを押すと画面が閉じます。Railsに必要なgemをインストールSQLite3インストールコマンドプロンプトを開き、以下を実行します。[Y/n]」と聞いてきますので「Y」を入力します。プロンプトに戻ったらインストール終了です。引き続き以下のコマンドを実行します。ruby下記画面のようにプロンプトに戻ったら完了です。nokogiriインストールコマンドプロンプトで以下を実行します。[Y/n]」と聞いてきますので「Y」を入力します。プロンプトに戻ったらインストール終了です。引き続き以下のコマンドを実行します。--use-system-libraries下記画面のようにプロンプトに戻ったら完了です。Node.jsインストール下記サイトからダウンロードします。(.msi)」の「64-bit」をダウンロードしました。ダウンロードしたファイルを実行すると下記の画面が表示されますので[Next]をクリックします。Agreement」にチェックを入れ[Next]をクリックします。下記画面が表示されますので、そのまま[Next]をクリック。下記画面もそのまま[Next]クリック。・・・」にチェックをいれて[Next]をクリック。下記画面の[Install]クリックで、インストールが開始されます。インストールが終わるまでしばらく待ちます。インストールが終わると下記画面が開きますので[Finish]をクリックすると画面が閉じます。引き続き下記の画面が開きます。...」と2回表示されますので都度[Enter]キーを押してください。下記の画面が開き、インストールが開始されます。ext:」と表示されたら完了です。[Enter]キーを押すと画面が閉じます。Bundlerインストールコマンプロンプトを開き下記のコマンドを実行します。bundlerGitインストールGUIでGitが使えるTortoiseGitを使います。開いた画面の[全般][TotoiseGit][言語(Language)]より「日本語(日本)」を選択、[OK]ボタンをクリック以上でWIndows10の設定は完了です。共有リポジトリからクローンを作成します。作成場所は、C:\Prj\HelloWorldにします。(複製)...]を選択します。下記の設定画面が開きますURLには以下の値を設定します。"共有リポジトリディレクトリ"ディレクトリは、クローンを作成するフォルダ名を設定します。ここでは、「C:\Prj\HelloWorld」にしました。フォルダは無ければ作成されます。Putty鍵のロードにチェックを入れ、[...]をクリックし、秘密鍵を選択します。7.sftp接続」の設定時に作成した秘密鍵ファイルです。7.sftp接続」で設定したパスフレーズを入力し[OK]をクリックします。動作確認サーバーを起動してみるコマンドプロンプトを起動し、ディレクトリの移動。install」しろと出ました。path.どうもファイルの読み取り権限に問題があるようです。調べてもよくわからなかったので、ちと乱暴ですが管理者としてコマンドプロンプトを実行してみました。install」したら、無事動きました。サーバー起動に再チャレンジ。stopブラウザで確認。コントローラーを作成しプッシュしてみるコントローラーを追加作成し、追加・変更した内容を共有リポジトリにプッシュしてみます。sプッシュ変更したファイルをさくらVPSサーバの共有リポジトリにプッシュします。その前に、開発用ローカルマシンのローカルリポジトリに変更をコミットします。HelloWorldフォルダの上で右クリックし、表示されたメニューより[Gitコミット(C)->"master"...]を選択。下記のようにコミット画面が表示されますので、「メッセージ」を入力し、追加ファイルにチェックを入れ[コミット]ボタンをクリックします。下記画面のようにコミットが実行され、成功と表示されるとコミットは成功です。コミットが成功したら、さくらVPSサーバの共有リポジトリへプッシュします。上記画面の[プッシュ]ボタンをクリックすると下記のプッシュ画面が開きます。[OK]をクリックし、サーバーの共有リポジトリにプッシュします。プッシュが実行されます。共有リポジトリへのプッシュを確認するために、ログを見てみます。repository開発用ローカルマシンのリポジトリから、さくらVPSサーバの共有リポジトリへのプッシュはうまくいっているようです。開発リポジトリから共有リポジトリにプッシュがあると、自動的に本番サーバーがプルするように設定していました。これが動いているか、本番ソースのログをチェックしてみます。hello_controller.rb無事、本番ソースへ反映されていました。本番ソースのサーバーを起動します。これでGitを使った共同開発の環境が出来ました。補足Windows環境に追加sqlite3のテーブル作成時にWindows環境に足りないものがありましので、これをインストールします。ファイルとして認識されていません。sqlte3をインストールしていなかったので入れます。下記サイトから2つのファイルをダウンロードします。・sqlite-dll-win64-x64-3300100.zip・sqlite-tools-win32-x86-3300100.ziphttps://www.sqlite.org/download.htmlダウンロードしたファイルを適当な場所で解凍し、出来たファイルの中から「sqlite3.exe」と「sqlite3.dll」をルビーをインストールしたフォルダの中の「bin」フォルダにコピーします。私の環境では「C:\Ryby26-x64\bin」にコピーしました。Gemfileに追加モデルクラスを作成した時、以下のメッセージが表示されました。test/fixtures/books.ymlGemfileに追加しろとのことなので、以下をGemfileファイルの最後に追加しました。platformsの設定は、Windowsのみに反映する為です。update一度modelを削除し、再度generateしたところ、エラーメッセージは消えました。.exitsqlite3も無事動作していることが確認できました。次回は、Pythonのインストールの予定です。upLoginユーザーは見つかりませんでした。