ページ

2013-06-07

301リダイレクト[Jekyll, RedirectMatch]

Jekyllでpermalinkを
permalink: /post/:year/:month-:day/:title.html
の様に変更したのだが、それに応じた検索エンジンへの対応として
301 リダイレクトを使って転送をすることにした。


301リダイレクト自体はapacheの機能である.htaccessファイルを設定する事で行った。
ErrorDocument 404 http://www.sample/404.html
RedirectMatch 301 /post/(.*)/(.*)/(.*)/ http://www.sample/post/$1/$2/$3.html
リダイレクトは2行目でリダイレクトマッチを使っている。
一応書いておくとポストしていたページが
http://www.sample/post/year/month-day/title/
といった形でインデクシングされていたのでこういうリダイレクトをしている。

2013-05-21

Jekyll設定色々(3)



jekyll bootstrapを使っている前提で話を進める。

rssの追加


更新pingの方法(基本的な)
1.ping serverに更新pingを打つ(各種ツールで)
2.クローラが来てサイトの

を読み取る。


2を完全に知らなかったのだが、解決策は非常に簡単であり、
普通に_layout下にあるdefault.htmlにrss.xmlのリンクを追加すればいい。




safeの解除


_pluginが無効になる為safe設定を普通に使う時もtrueにするわけにはいかない。
なのでjekyll bootstrapでgoogle analyticsを導入しようとした時に_include/JB/analyticsのsite.safeを外した。

2013-05-16

Jekyllでサイトを作成した時に困った部分

Jekyllでサイトを作成した時に困った部分のメモ,(前回のjekyll設定)

marukuからkramdownの変更


jekyllで使われているdefaultのmarkdwonであるmarukuを日本語で使っていると、リストの表記で上手くいかず、調べてみると日本語のパースが上手くいかない事が分かり、kramdownに変更した。

変更方法は簡単で_config.ymlに以下を追記すればいい。
markdwon: kramdown



tag,categoryページ設定


個別のtag、categoryページを生成するようにする。
pluginは公式にあったsampleを参考にtag用のpluginも作成。

ファイル名に日本語が使われていると保存先によっては弾かれる。
なのでtag、categoryの生成するpluginと生成した各ページへのリンクを作り、tag_list,category_listに日本語からローマ字になるようフィルターをかませる。


stringexは漢字もローマ字に変換してくれる。
require 'stringex'
samplestr.to_url


filter は公式のliquid filterの部分を参考にした。
def to_roma(input)
    "#{input.to_url}"
end

参考リンク
Jekyll Plugins

file転送方法,Github以外への

初めはncftpを使っていたが、
公式サイトでGlynnが勧められているのでこちらを使ってみることにした。

Deployment methods

2013-05-14

ArchLinuxでjekyllを使うに当たってのpythonとrubyの設定

jekyllを導入するに当たってのメモ



jekyll:http://jekyllrb.com/
jekyll bootstrap:http://jekyllbootstrap.com/
Archlinux jekyll:https://wiki.archlinux.org/index.php/Jekyll


jekyllでは動作環境としてRuby1.9,Python2が必要であり
Arch linuxの現時点でのデフォルトがRuby2,Python3な為設定が必要だった。
その為、RubyはRVMで環境を切り替える事に、Pythonではvirtualenvを使い仮想環境を用意する事にした。




Ruby1.9の設定方法:

環境を切り替えて使うrvmを使用する事にした。


RVMをインストールするスクリプトを即実効。

curl -L get.rvm.io | bash -s stable
もちろん確認してから実効してもいい。
curl -L get.rvm.io > rvm-install



~/.bashrcか~/.bash_loginに追加。

[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm"
設定を再読み込み(~/.bashrcに設定した場合)
source ~/.bashrc



使用するrubyをインストール

rvm install 1.9.3
defaultに設定、2に切り替える場合も同様。
rvm use 1.9.3 --default



参考リンク
Archlinux RVM



Python2.7の設定方法:

python2.7は仮想環境であるvirtualenvを使い、その上でjekyllの生成を行う事にした。


python-virtualenvwrapperのインストール
pacman -S  python-virtualenvwrapper

~/.bashrcに設定

export WORKON_HOME=~/.virtualenvs
source /usr/bin/virtualenvwrapper.sh
設定を再読み込み,~/.virtualenvsフォルダーを生成
source ~/.bashrc
mkdir $WORKON_HOME


基本的なコマンド説明
mkvirtualenv -p python2.7 my_env #my_envの作成
workon my_env #my_envに環境を切り替える
deactivate #仮想環境から戻る。
rmvirtualenv my_env #my_envを削除する。


参考リンク
Python_VirtualEnv



jekyllのインストール:

ここまでできればjekyllが使えるようになる。


rubygemsでjekyllをインストールする。
gem install jekyll


サンプル生成、ディレクトリの変更
jekyll new myblog
cd myblog


仮想環境を生成し、jekyll のテスト
mkvirtualenv -p /usr/bin/python2.7 --distribute my_env
jekyll serve  #http://localhost:4000

2013-04-24

VPS(host1free,debian6)の設定

前日に行ったhost1freeの承認がされていた為にしたVPSの設定で詰まった所を載せておきます。
使用したVPSのOSはdebian6の32bitです。


wheel groupが無い:group 'wheel' does not exist

いつもの様に設定をしようとしてwheel groupに追加しようとしてもdebianではそのようなgroupは存在しない為、errorが出てしまう。
debianでは他の方法を取る必要があり、adm groupをwheelの様に使用する事が多い様である。


なのでvisudoもwheelではなくadmにし

%adm  ALL=(ALL) ALL
の様にすれば良い。





iptablesでconntrackが無い: No chain/target/match by that name.

firewallの設定をする時に、上記のerrorメッセージが出た為に調べたがconntrackのmoduleが無いために設定上必要ないのであれば、state moduleを使うといい。


例えば以下のようなconntrack moduleは

/sbin/iptables -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
/sbin/iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
のようなstate moduleに置き換えれば良い


補足だがctstateはconntrack moduleのオプションなのでstate moduleでは使えないこと。さらに
state moduleでは INVALID, ESTABLISHED, NEW, RELATED の 4つを識別することができる。
conntrack moduleではそれにSNATとDNATを合わせた6つである。



参考リンク

明示的なマッチ