さくらのレンタルサーバーにSSH接続してWordPressをデプロイ

WordPress

お疲れ様です.

杏です.

 

当ブログはWordPressで開設しています.

WordPressとはPHPで構築されたCMS(コンテンツマネジメントシステム)です.

WordPress(などのCMS)を利用することで,ブログや,クリエイターのポートフォリオページを簡単に開設することが出来ます.

PHPとは主にWebアプリケーションを構築するために用いられるプログラミング言語です.ほとんどのレンタルサーバーはPHPがセットアップ済みのため,基本的にはFTPクライアントでサーバーにソースコードをアップロードするだけで,デプロイ(Webへの公開)が可能です.

FTP接続でのアップロードはFIleZillaなどのクライアントソフトを利用すればGUIによって簡単に行うことができるのですが,Wordpressのテーマやプラグインを自作する場合,開発環境のソースコードと,本番環境(レンタルサーバー)側のソースコードを同期させるような仕組みが必要になります.特にソースコードに変更や修正が生じた場合,変更部分を明確にして,変更部分のみを本番環境に反映させる仕組みが必要になったりします.

今回はSSH接続とGitを利用して,デプロイおよびソースコードの更新を行う方法を記していこうと思います.

 

環境

Windows10

Visucal Studio Code 1.25.1

Git2.9.0

Tera Term(SSHクライアント) 4.91

WordPress 4.9.7

さくらのレンタルサーバ  スタンダードプラン

GitLab フリープランアカウント

 

はじめに

  • Git,TeraTermのインストールは済んでいることを想定しています.(SSHクライアントは何でもいいです)
  • Gitの基本的な知識をあることを想定しています.
  • GitLabへの登録が済んでいることを想定しています.(GitLabに限らずgitホスティングを利用していれば適応できます)
  • さくらのレンタルサーバスタンダードプランを契約していることを想定しています.他のプラン,他社のレンタルサーバーでもSSHやgitがインストールされていることがほとんどだと思うので応用できると思います.
  • ローカルにPHPおよびWordPressの開発環境があり,ローカルで開発したシステムをレンタルサーバーにデプロイする状況を想定しています.
  • WordPressに限らず,PHPでWebアプリケーションを開発している場合にも適応できると思います.

 

 

WordPressをダウンロードする

 

WordPressの公式ページにアクセスします

https://ja.wordpress.org/

ページ右上のWordPressをダウンロードボタンを押します

ボタンを押すとダウンロードページへ遷移します.

 

ダウンロードボタンを押すと,WordPressのソースコードが圧縮されたzipファイルのダウンロードが開始します.

ダウンロードしたZipファイルを適当な場所に解凍します.(基本的にはXAMPPなど の公開ディレクトリなど)

 

.gitignoreの設定

解凍したディレクトリをエディタで開き,ルートに「.gitignore」という名前のファイルを新規に作成します.

.gitignoreファイルに下記のURLのテキストをコピー&ペーストします.

https://github.com/github/gitignore/blob/master/WordPress.gitignore

 

 

.gitignoreとはgitでのバージョン管理の対象外のファイルおよびディレクトリのパスを指定するファイルです.

先のURLはGitHubで配布されている.gitignoreのサンプルコードです.

基本的には,システムを運用していくうちに自動で生成されるようなファイルを.gitignoreファイルでバーション管理の対象外にします.

逆にシステムの構築にかかせないファイルを.gitignoreで指定してしまうと,システムが動かなくなる可能性があるので注意です.

今回は特に変更しません,注意点としては「wp-config.php」が.gitignoreに指定されていることです,別の環境でソースコードを実行する場合,wp-config.phpを新規に作成する必要があります.これは,デプロイ時に本番環境用のwp-config.phpを作成する必要があるので,後々利点が分かってきます.

 

gitでコミットする

コマンドプロンプト,またはGitクライアントで

git init

git add .

git commit -m ‘commit message’

を実行します.

 

GitLabへソースコードをpush(アップロード)する

GitLabはgitホスティングサービスです.

GitHubでもBitBucketでも同じようなことは出来ます

New projectボタンを押します.

Project nameを設定します.

Create proectボタンを押下するとプロジェクトが作成されます.

 

作成されたプロジェクトのページを参考に

remote add,pushコマンドを実行します.
init,add,commitコマンドは実行済みです.


pushが完了したのち,GitLabのプロジェクトページを更新すると,ソースコードがアップロードされていることが確認できます.

 

SSHでレンタルサーバーにアクセス

ソースコードがGitLabにアップロードできたので,次はレンタルサーバーにソースコードをcloneして,デプロイしてみます.

Tera Termを起動してログインするサーバーの情報を入力します.

ホスト,ユーザー名,パスフレーズは FTP用に設定されているものと同じです.

さくらのレンタルサーバーのサーバーコントロールパネルから確認できます.

ホスト=FTPサーバー

ユーザー名=FTPアカウント

です.

 

黒い画面に「Welcome to FreeBSD!」と表示されたらログイン成功です.

試しに「git –version」と入力するとgitがインストールされていることが分かります.

 

WordPressのディレクトリを公開ディレクトリに設定するとも可能ですが,今回は公開ディレクトリの中にWordPressディレクトリを設置する状況を想定します.

まずcdコマンドでサーバーの公開ディレクトリへ移動します.

さくらのレンタルサーバーの場合,公開ディレクトリの初期設定は「/home/サーバー名/www」なので,SSHでログインした直後の状態で「cd www」を入力すれば良いと思います.

 

cloneを試してみる(まず負けてみる)

公開ディレクトリに移動した状態で,試しに,cloneコマンドを実行してみます.

GitLabのプロジェクトページからclone用のSSHコマンドをコピーします.

 

SSHクライアントで「git clone <コピーしてきたsshコマンド>」を入力します 「git clone git@gitlab.com:ユーザー名/wordpress.git」のようなコマンドになります.

しかし,これだとcloneは失敗します.

cloneを行うにはGitLabにSSH公開鍵を設定する必要があります.

 

GitLabにSSH公開鍵を設定する.

まずsshに関するファイルを設置するためのディレクトリである「.ssh」ディレクトリに移動します.

基本的には「cd ~/.ssh/」で移動できます.

「.ssh」ディレクトリに移動した状態で「ssh-keygen」コマンドを実行します.

「ssh-keygen」コマンドは対話形式でSSHの公開鍵,秘密鍵を生成します.

1つ目の質問では,鍵の保存先を設定します.

これはこだわりが無ければそのままエンターを押せばデフォルトの「~/.ssh」ディレクトリに生成されます.

2つ目の質問は鍵に対するパスワードを設定します.

3つ目は,2つ目で入力したパスワードの確認のため,同じ文字列を入力します.

 

「ls」コマンドを入力するとid_rsa(秘密鍵)とid_rsa.pub(公開鍵)が生成されていることが分かります.

「cat id_rsa.pub」コマンドを入力するとid_rsa.pub(公開鍵)の中身を確認することができます.

「cat id_rsa.pub」コマンドで表示された文字列をすべてコピーします.

 

GitLabの設定,SSH Keys設定ページにアクセスします.

先にコピーしたid_rsa.pub(公開鍵)の中身を,貼り付け,Add keyボタンを押します.

これでGitLabへのSSH keyの設定は完了です.

 

cloneコマンドを再実行

先ほど実行できなかったcloneコマンドをもう一度実行してみます.

手順通り進めていたとすると,現状,~/.sshディレクトリにいるはずなので,もう一度公開ディレクトリへ移動します.

サーバーの初期設定の場合 「cd ~/www/」で公開ディレクトリへ移動できます.

公開ディレクトリへ移動した状態で再び 「git clone git@gitlab.com:ユーザー名/プロジェクト名.git」 を実行してみましょう,

パスワードの入力を求められた場合は,鍵の生成時に設定したパスワードを入力してください.

 

今度はcloneが成功するはずです.

 

cloneすることで本番環境のサーバーにソースコードが設置されているので,

レンタルサーバーのURLにアクセスすると,WordPressが設置できていることが確認できます.

http://レンタルサーバーのアドレス/cloneしたプロジェクト名

であることに注意してください.

WordPressのディレクトリを公開ディレクトリとする設定の解説は趣旨がそれるので行いません.

 

URLにアクセスしてみると,セットアップのページが表示されますが,これはwp-config.phpファイルが存在しないためです.最初のほうで設定したgitignoreによって,ローカル環境にwp-config.phpがあったとしても,clone先の本番環境にはwp-config.phpがコピーされません.

このままGUIに従って設定することも可能ですが,せっかくなのでGitの機能を利用してみます.

その前にWordPress用のデーターベースを作成します

 

データベースを作成する

さくらのレンタルサーバーのサーバコントロールパネルへアクセスします.

データベースの設定ページでデータベースを作成します.

GUIに従って作成できるため,とりあえず作ってみましょう.

データベースが出来ました.ここで設定した情報をwp-config.phpに設定します.

 

本番環境用のconigファイルを作成する

データベースが作成できたら,まずローカル(開発環境)のソースコードを編集します.

ローカルのwp-config-sample.phpをコピーしてwp-config-prod.phpという名前で保存します.

wp-config-prod.phpのprodはproduction(本番)環境という意味です.

wp-config-prod.phpに,先に作成したデータベースの情報を入力します.

MySQL のホスト名は,コントロールパネルでいうところのデータベース サーバという部分のことです.
wp-config-prod.phpの追加と編集か出来たら.
変更点をコミットして,GitLabにpushします.
pushできたら,つぎは本番環境で変更点をpullします.
SSHクライアントの作業になるので,必要があれば再度ログインして,プロジェクトディレクトリへ移動(cd ~/www/プロジェクト名)します.
プロジェクトディレクトリで「git fetch」と「git merge origin master」を実行すると,GitLabの最新状態のソースコードを,本番環境のソースコードにマージします.
表示される文字からも「wp-config-prod.php」が追加されたらしいことが分かります.
この段階ではまだ本番環境のwp-config.phpが準備できたわけではありません.
「cp wp-config-prod.php wp-config.php」コマンドを実行することで,wp-config-prod.phpがwp-config.phpという名前でコピーされます.
これで本番環境にwp-config.phpを設定することができました.
もう一度
http://レンタルサーバーのアドレス/cloneしたプロジェクト名
にアクセスしてみると,サイトの情報を入力するページになっていることが分かります.
これはwp-config.phpによってデータベースの設定が完了していることを意味しています.
サイト情報を入力すればWordPressの利用を開始することができます.

以下,後日談

これでWordPressをGitとSSHクライアントによってデプロイすることができました.
どうでしょうか?
FileZillaでD&Dで設置した方がはるかに楽ですね^^;

しかし,今回の場合はwp-config-prod.phpを追加する程度の変更ですが,テーマや,プラグインを自作する場合は,Git無しではソースコードの管理が困難になります.
Gitを利用すれば,ソースコードの,どの部分をいつ編集したのか記録することが出来ます.
開発環境でソースコードを変更したときは,先のようにfetch & mergeコマンドを実行することで変更箇所だけ本番環境に反映することが出来ます.
余計なファイルを上書きしてしまい不具合が起きるリスクを減らすことが出来ます.

とは言え,WordPressとGitでの管理はあまり相性が良いとは言えないです.
インストールしているプラグインをjsonなどで管理できればいいのですが,現状はプラグインのディレクトリごとgitで管理するしかないので,gitファイルが肥大化してしまいます.
PHPにはcomposerというパッケージ管理システムがあるので,composerを利用したアプリケーションの開発の場合,SSHでアクセスしてデプロイしたりする方が多いかも知れません.
正直,レンタルサーバー+WordPressはFTPクライアントなどで手軽にアップロードできることがメリットでもあるので,”黒い画面”の練習程度に試してみてください.

あとFTPには無いSSHのメリットとして通信が暗号化されるというのがあります.
アップロードしているソースコードを傍受される可能性は低いかも知れませんが,もし仕事で使うなら少しでも注意したい部分ではありますね.
もう少し知識を深めると,SSH鍵を利用して,よりセキュアで管理しやすいファイルのやり取りを行うことが出来ます.基本的にはGitの項目で説明したSSH Keyの設定と同じことをするだけです.

そもそもFIleZillaなどのFTPクライアントでもSSH(SFTP)は利用できますが,コマンド操作を覚えるとUNIX系OSへの理解が深まり,メンテナンスの対応範囲が広がります.
さくらのレンタルサーバーを使い始めるにあたって,GitやSSHが使えるのか不安だったのですが,問題なくつかえました .レンタルサーバーによってはGitが無かったりすることもあると思うので試用期間などを利用して,自分が求めている構成を満たしているか確認することをおすすめします.(それとも最近は,どのレンタルサーバーでも使える?)

 

参考にした本とか

エンジニアのためのWordPress開発入門 (Engineer’s Library)

新品価格
¥3,218から
(2018/12/17 21:50時点)

Spread the love
コメントはまだありません

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

Python
Pythonオレオレオレオレチートシート

目次1 参考ページ2 環境の作り方2.1 インストール2.1.1 windowsの場合2.1.2 M …

Spread the love
PHP
PHP俺チートシート

PHPをコーディングする上で「これどうやんだっけ」みたいのをいちいちドキュメント確認とかしてたので, …

Spread the love
Laravel
やる、Laravel5.7を。その2「インストールして認証とかを試す」

お疲れ様です. RainGearの杏です.   目次0.1 はじめに0.2 環境0.3 イ …

Spread the love