序章
Jekyll は、単純な静的サイトジェネレーターです。 Markdown、Textile、Liquid、HTML、CSSで入力されたページを受け取り、完全な静的HTMLページを出力します。 JekyllはGitHubPages でうまく機能しますが、いくつかの制限があります。たとえば、プラグインでの操作は特に簡単ではありません。 したがって、独自のVPSでJekyllサイトをホストすることをお勧めします。 そうするのは簡単です!
このガイドでは、以下を使用します。
- Jekyllコンテンツを作成してください
- nginxでコンテンツを提供
- Capistranoをデプロイします
インストール要件
VPS :
ローカル:
まだインストールしていない場合は、RubyとRubyGemsをインストールします。 これを行う最良の方法は、 Rubyバージョンマネージャー(RVM)を使用することです。 RVMホームページ( rvm.io )からコマンドを使用します。これは、次のようになります。
curl -L https://get.rvm.io | bash -s stable --ruby=2.0.0
他のプロンプトに従って、システムにRubyをインストールします。 インストールしたら、必要なgemをインストールできます。
gem install jekyll capistrano
Jekyllでブログを作成する
JekyllのWebサイトには、クイックスタートガイドがあり、簡単なJekyllサイトを作成して提供する手順を説明しています。 そこにはもっとたくさんの使用法の詳細があります。 まず、簡単なブログを作成します。 作業したいディレクトリに切り替えて、以下を実行します。
jekyll new .
cd myblog
jekyll serve
localhost:4000で実行されているサイトを確認できるはずです。
「myblog」ディレクトリに移動すると、いくつかのフォルダが表示されます。 私たちが気にしているのは _site
; これには、次のステップでデプロイするJekyllによって生成された静的サイトが含まれています。
Capistranoを使用した展開用のブログの設定
Jekyllサイトがまだ実行されている場合(実行後 jekyll serve
)、そのプロセスを終了します。 まだ「myblog」ディレクトリで、次を実行します。
capify .
これにより、Capistranoの展開に必要なファイルが作成されます。 Capistranoは、SSH経由で展開することを前提とした「意見のあるソフトウェア」です。 コマンドを実行すると、次の場所にファイルが作成されているはずです。 config/deploy.rb
; それを開き、次のように更新します。
# replace this with your site's name
set :application, "Blog"
set :repository, '_site'
set :scm, :none
set :deploy_via, :copy
set :copy_compression, :gzip
set :use_sudo, false
# the name of the user that should be used for deployments on your VPS
set :user, "deployer"
# the path to deploy to on your VPS
set :deploy_to, "/home/#{user}/blog"
# the ip address of your VPS
role :web, "123.456.789.10"
before 'deploy:update', 'deploy:update_jekyll'
namespace :deploy do
[:start, :stop, :restart, :finalize_update].each do |t|
desc "#{t} task is a no-op with jekyll"
task t, :roles => :app do ; end
end
desc 'Run jekyll to update site before uploading'
task :update_jekyll do
# clear existing _site
# build site using jekyll
# remove Capistrano stuff from build
%x(rm -rf _site/* && jekyll build && rm _site/Capfile && rm -rf _site/config)
end
end
次のステップは、Capistranoに必要なディレクトリ構造でVPSを設定することです。 これを行う必要があるのは1回だけです。
cap deploy:setup
最後に、VPSをデプロイします。
cap deploy
Capistranoのデプロイタスクは次のようになります。
- 既存の静的Jekyllサイトを削除します
- Jekyllサイトを構築する
- ビルドに含まれる不要なファイル(主にキャップファイル)をクリーンアップします
- 静的サイトのコンテンツをSFTP経由でVPSにコピーし、指定されたディレクトリにドロップします
nginxでブログをホストする
VPSに戻り、nginxsites-availableディレクトリに切り替えます。 これは通常、次の場所にあります。
cd /etc/nginx/sites-available
実行した場合 ls
このディレクトリには、(少なくとも)「デフォルト」というファイルが表示されます。 必要に応じて、これをテンプレートとして使用できます。
sudo cp /etc/nginx/sites-available/default /etc/nginx/sites-available/example.com
静的サイトの場合、多くの構成は必要ありません。 次の構成は、最低限として機能するはずです。
server {
# listen on http (port 80)
# remove the "default_server" if you are running multiple sites off the same VPS
listen 80 default_server;
# the IP address of your VPS
server_name 123.456.789.10;
# see http://nginx.org/en/docs/http/server_names.html for options
# to use your own domain, point a DNS A record at this IP address
# and set the server name to (eg.) "blog.example.com"
# the path you deployed to. this should match whatever was in your
# Capistrano deploy file, with "/current" appended to the end
# (Capistrano symlinks to this to your current site)
root /home/deployer/blog/current;
index index.html
# how long should static files be cached for, see http://nginx.org/en/docs/http/ngx_http_headers_module.html for options.
expires 1d;
}
または、この要点を使用して、必要不可欠なものを入手することもできます。 いずれの場合も、このディレクトリに目的のnginx構成で新しいファイルを作成します。 作成したら、sites-enabledディレクトリからシンボリックリンクを作成する必要があります。
sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/example.com
シンボリックリンクを使用すると、元の構成ファイルに触れることなくシンボリックリンクを削除することで、サイトを簡単にオフラインにすることができます。
次に、nginxが提供するファイルを読み取れることを確認します。 Nginxは、ホストしているディレクトリ内のすべてのものと、すべての親ディレクトリを読み取って実行できる必要があります。 これを行うには、サイトのディレクトリの所有権をnginxユーザーに付与します。 www-data
. 次に、必要なディレクトリへの読み取りと実行アクセスを許可します。
sudo chown -R www-data:www-data /home/deployer/blog/current
sudo chmod 755 -R /home
最後に、nginxに構成を更新するように指示する必要があります。 これは次の方法で実行できます。
# tests the nginx configuration; if this is not successful you should fix any errors raised
sudo nginx -t
# safely restarts the nginx worker
sudo kill -HUP `cat /var/run/nginx.pid`
または、nginxを再起動することもできます。 ただし、上記のオプションは一般的に安全であると考えられています。
sudo service nginx restart
テストと今後
VPSのIPアドレスに移動します。 Jekyllサイトのホームページが表示されます。
次は何ですか? これで、Jekyllを使用してコンテンツの作成とサイトのカスタマイズを開始できます。 オンラインでプッシュしたい新しいコンテンツがあるときはいつでも、それは行うのと同じくらい簡単です cap deploy
.