UbuntuVPSでJekyllを使い始める方法

提供:Dev Guides
移動先:案内検索

序章


Jekyll は、単純な静的サイトジェネレーターです。 Markdown、Textile、Liquid、HTML、CSSで入力されたページを受け取り、完全な静的HTMLページを出力します。 JekyllはGitHubPages でうまく機能しますが、いくつかの制限があります。たとえば、プラグインでの操作は特に簡単ではありません。 したがって、独自のVPSでJekyllサイトをホストすることをお勧めします。 そうするのは簡単です!

このガイドでは、以下を使用します。

  • Jekyllコンテンツを作成してください
  • nginxでコンテンツを提供
  • Capistranoをデプロイします

インストール要件


VPS

  1. UbuntuVPSを設定する
  2. nginxをインストールして起動します

ローカル

まだインストールしていない場合は、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のデプロイタスクは次のようになります。

  1. 既存の静的Jekyllサイトを削除します
  2. Jekyllサイトを構築する
  3. ビルドに含まれる不要なファイル(主にキャップファイル)をクリーンアップします
  4. 静的サイトのコンテンツを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を実行するのと同じくらい簡単です。