だるまブログ

RT107eとCentOSでipsec生存確認

Posted by on 07 9月 2014 | Tagged as: IPSec, サーバー

VPNが途切れがちなので調査したところ、RT107eのログに

[IKE] ICMP: dead peer detection SA[1] yyy.yyy.yyy.yyy
[IKE] inactivate ISAKMP socket
[IKE] initiate informational exchange (delete)
[IKE] inactivate IPsec socket[transport:1](outbound)
[IKE] inactivate IPsec socket[transport:1](inbound)
IP Tunnel[1] Down

と出ており、接続が切れていました。

IPSecの生存確認をしていないことが原因のようでしたので、以下のように変更しました。
ヤマハ-ルータ(RT107e)のIPSec/L2TP – 2:Centosとの接続の設定を変更し、

 RT107eの設定

tunnel select 1

tunnel encapsulation l2tp
tunnel endpoint address yyy.yyy.yyy.yyy
ipsec tunnel 1
ipsec sa policy 1 1 esp aes-cbc sha-hmac
ipsec ike keepalive log 1 on ←変更 IPSecの生存確認のログを有効にする
ipsec ike keepalive use 1 on ←変更 IPSecの生存確認を有効にする
ipsec ike keepalive use 1 on icmp-echo yyy.yyy.yyy.yyy ←追加 CentOSのGlobalアドレスに向けてICMPでIPSecの生存確認
ipsec ike local address 1 192.168.1.1
ipsec ike nat-traversal 1 on
ipsec ike pre-shared-key 1 text
ipsec ike remote address 1
l2tp tunnel disconnect time off
l2tp keepalive use on 10 3
l2tp keepalive log on
l2tp syslog on
ip tunnel tcp mss limit auto
tunnel enable 1

としました。

 CentOSの設定

/etc/ipsec.confを変更し、

config setup
protostack=netkey
nat_traversal=yes
virtual_private=%v4:10.0.0.0/8,%v4:192.168.0.0/16,%v4:172.16.0.0/12
oe=off
force_keepalive=yes ←追加

としました。

これで、24時間以上たっていますが、途切れることなく接続しています。
SAの寿命は8時間ですが、これを超えて接続していますので、問題無いようです。


Concrete5 コンポーザーのサムネイルサイズ変更

Posted by on 14 6月 2014 | Tagged as: Concrete5, 開発

最近はConcrete5ばかり触っています。 Concrete5は運営に優れた非常に優秀なCMSです。
コミュニティーに色々な情報があります。 http://concrete5-japan.org/

Concrete5にはブログ機能もあり、記事を追加する際「コンポーザー」という便利な機能があるのですが、ここで入力可能なサムネイルが 150X150ピクセル のため、変更しようとして結構色々調べてしまったので、備忘録で書いておきます。

※元ネタはこちら→ http://www.concrete5.org/community/forums/usage/how-to-change-default-theme-in-composer/ (英語のフォーラム)

要は、concrete/blocks/image/composer/thumbnail.php をユーザー領域かパッケージ領域にコピーして、一番上の

if(!isset($width)) { $width = 250; } if(!isset($height)) { $height = 250; }

を変更するだけです。

※パッケージ領域の場合 /packages/パッケージ名/blocks/image/composer/thumbnail.php
※ユーザー領域の場合 /blocks/image/composer/thumbnail.php

 

ヘッダー画像を変更したい場合は、concrete/blocks/image/composer/header.php をユーザー領域かパッケージ領域にコピーして

$this->inc(‘composer/thumbnail.php’,array(‘width’=>960,’height’=>212));

を変更すればOKです。

※ユーザー領域かパッケージ領域の説明はこちら→ http://concrete5-japan.org/help/developer/basic_structure_of_concrete5/

これで変更されたので、メデタシメデタシです。

 

※2014/7/15追記 パッケージ領域で上手く行かない場合があったのですが、ユーザー領域(/blocks/image/composer/thumbnail.php )で設定したらうまくいきました。


Apacheの.htaccess設定で躓く

Posted by on 08 3月 2014 | Tagged as: サーバー

当分、サーバの設定はWebMinで行ってるのですが、バーチャルドメインの設定ですっかり忘れていたので備忘録。

バーチャルドメインを設定した時、.htaccessを動かすためには、

DocumentRoot “/var/www/XXX”
ServerName xxxx
<Directory “/var/www/xxx”>
・・・
AllowOverride All
・・・
</Directory>

AllowOverride All

を入れる必要があったのでした。

いや~忘れてました。


jQueryプラグインbxsliderが止まるのを修正

Posted by on 03 3月 2014 | Tagged as: jQuery, WEB, WEBプログラミング, プラグイン

jQueryのプラグインでレスポンシブ対応のbxsliderというプラグインがあります。

商用利用もOKなMITライセンスで、スマホやタブレットのスワイプにも対応したイケてるやつです。

※作者はFAQの下の方で「ビール奢ってね!」って言ってます。トップページの「Buy me a beer」から奢ってあげましょう!

機能も豊富で便利なのですが、一つイケてないのが

ページャーやPrev、Next(デフォルトだと三角のイメージが量端に出ます)を押すとオートアニメーションが止まる。

という点です。

jquery.bxslider.jsのソース見ると、

var clickPagerBind = function(e) ・・・ ページャーを押した時のファンクション

var clickNextBind = function(e) ・・・ Next押した時のファンクション

var clickPrevBind = function(e) ・・・ Prev押した時のファンクション

のそれぞれで

if (slider.settings.auto) el.stopAuto();

と、オートのアニメーションをストップしてます。

なんで、上記、3つのファンクションでif (slider.settings.auto) el.stopAuto();をコメントすれば、止まらなくなります。

コールバックファンクションもあるので、静止時間時間過ぎたら、startAutoするってのでも実現できるのですが、タイマー仕掛けたりメンドウなので、 el.stopAuto()をコメントすることにしました。

ミニマイズでやりたいけど、ソース追うのが面倒なので、ナシってことで。

※タイマーとコールバックで実現されてる方もいらっしゃいます。
自動再生させているはずのスライダーが止まっちゃうんです!!(bxSlider使用)


EC-CUBEの公開とセキュリティーを考慮したディレクトリ配置

Posted by on 25 2月 2014 | Tagged as: EC-CUBE

EC-CUBEをオフィシャルサイトからダウンロードし解凍すると、ディレクトリの中に、

  • data
  • docs
  • html
  • test
  • tests

のディレクトリと

  • .coveralls.yml
  • .travis.yml
  • build.xml
  • composer.json
  • COPYING

のファイルがあります。

EC-CUBEの公開では、本体はhtmlディレクトリの中身で、必要な様々なプログラムやテンプレートがdataの中に入っており、htmlの中のdefine.phpで設定を行います。

 

1. URLがhttp://example.comでEC-CUBEを公開し、そのルートがwwwというディレクトリ

wwwの中に上記htmlの中のファイルを全て入れます。

EC-CUBE公開ディレクトリ

EC-CUBE公開ディレクトリ

 

2. http://example.com/shop/でEC-CUBEを公開し、そのルートがwwwというディレクトリ

wwwの中のshopというディレクトリにhtmlの中のファイルをいれます。

dataディレクトリ

dataディレクトリ

 

上記でwwwは

ブラウザからアクセスできるディレクトリ

になるため、www以下にdataディレクトリを入れることはセキュリティー上問題があります。

ですので、ブラウザからアクセスできない

wwwと同じもしくはそれ以上の階層

にdataディレクトリを入れる必要があります。

そして、wwwもしくはshopの中にある、

define.php

でhtmlの中身から見たdataフォルダの相対パスと名前を設定します。

1.http://example.comでEC-CUBEを公開の場合、

define(‘HTML2DATA_DIR’, ‘../data/’);

2. http://example.com/shop/でEC-CUBEを公開の場合、

define(‘HTML2DATA_DIR’, ‘../../data/’);

となります。


xl2tpdのログに”CCP: timeout sending Config-Requests”と出る

Posted by on 25 2月 2014 | Tagged as: IPSec, サーバー

ヤマハ-ルータ(RT107e)のIPSec/L2TP – 2:Centosとの接続で/etc/ppp/options.xl2tpd.conn-1に

logfile /var/log/xl2tpd.conn-1.log

とログファイルを指定していたのですが、そこに

sent [CCP ConfReq id=0x2]
sent [CCP ConfReq id=0x2]
CCP: timeout sending Config-Requests

と出ていました。

調べてみると、

CCP(Compression Control Protocol) とは、PPP通信に使用されるデータ圧縮の方式を、接続先と取り決めるのに使用するプロトコルです。

http://www.bcom.nec.co.jp/comstarz/router/faq/ro_faq/ppp.htm

とのことです。

RT107eの設定を見ると、インターネットプロバイダとの接続には

ppp ccp type none

となっていたので、CentOSとの接続もCCP無しで良いだろうと考え(ブロードバンドでいらないらしい)、VPNの接続に用いるPP1の設定に「ppp ccp type none」を設定しました。
YAMAHAルータ コマンド備忘録 『ppp ccp type none』

ところが、/var/log/xl2tpd.conn-1.logに変わらず上記エラーログが出るので、

/etc/ppp/options.xl2tpd.conn-1

noccp

を加え、サーバ・クライアント両方で「CCP使わないよ」と設定することでエラーログは出なくなりました。

追記:2014/03/02
上記設定でたまに切れていたVPNの接続が安定し、切れなくなりました。


Wp-Post 良くある質問1- WordPressインストールディレクトリ

Posted by on 24 2月 2014 | Tagged as: EC-CUBEプラグイン"WpPost"

※2014/2/24に記事を書き換えました。

弊社で提供させていただいてるEC-CUBEプラグイン”WpPost“で

WordPressインストールディレクトリが良く分からない

という質問が多いので、例をあげてご説明したいと思います。

※ご注意
WpPostをご利用いただく場合、同一サーバ上にWordPressとEC-CUBEをインストールする必要がありますのでご注意ください。

WordPressインストールディレクトリとは

EC-CUBEの公開ディレクトリを基準としたWordPressインストールディレクトリまでのファイルパス

になります。

多く考えられるのは、以下のケースではないでしょうか。

CASE1 今までWordPressでサイトを展開しているが、新たにEC-CUBEをインストールし、ECサイトを追加したい。

CASE2 新たにWordPressとEC-CUBEをインストール

また、CASE1の場合、

  • A.今までのWordpressの下にEC-CUBEをインストール。
  • B.今までのWordpressと別ドメインでEC-CUBEを運営したい。
  • C.サブドメインでEC-CUBEを運営したい。

という場合が考えられます。

Case1-A 今までのWordpressの下にEC-CUBEをインストール

例えば、URLがhttp://hoge.com/でWordPressのサイトを展開していて、EC-CUBEをhttp://hoge.com/shop/で公開するとします。

この場合、/html/wp/shopにEC-CUBEをインストールするというのがもっとも簡単なやり方です。

※EC-CUBEのhtmlというディレクトリの名前をshopと変えています。
※www部分はサーバの設定によって異なりますので、ご自分野環境に合わせて読み替えてください。

図にすると、こんな感じです。

Case1-A 今までのWordpressの下にEC-CUBEをインストール

Case1-A 今までのWordpressの下にEC-CUBEをインストール

※EC-CUBEのPHPやSmartyが入るdataディレクトリはブラウザでアクセスできない場所に置くことにします。
上の図の場合、shop(元html)/define.php の中でdataフォルダの位置と名前を define(‘HTML2DATA_DIR’, ‘../../../data/’); で指定します。

この場合、一つ上の階層にWordPressがインストールされていますので、

WordPressインストールディレクトリ = ../

となります。下図の、「*1」がWordPressのインストール場所になります。

Case1-A WordPressのインストール場所

Case1-A WordPressのインストール場所

Case1-B 今までのWordpressと別ドメインでEC-CUBEを運営したい。

http://hoge.com/でWordPressのサイトを展開していて、これと別にhttp://shop-happy.com/でEC-CUBEを展開するとします。

※ドメインの設定は、サーバによって異なりますので、ご自分野環境に合わせてください。
※EC-CUBEのhtmlというディレクトリの名前をshopと変えています。
※www部分はサーバの設定によって異なりますので、ご自分野環境に合わせて読み替えてください。

図にすると、こんな感じです。

Case1-B 今までのWordpressと別ドメインでEC-CUBEを運営

Case1-B 今までのWordpressと別ドメインでEC-CUBEを運営

この場合、EC-CUBEとWordPressが同じ階層にインストールされているので、以下のような設定になります。

Case1-B WordPressのインストール場所

Case1-B WordPressのインストール場所

WordPressインストールディレクトリ =../wp

上の、「*1」がWordPressのインストール場所になります。

Case1-C サブドメインでEC-CUBEを運営したい。

例として、http://hoge.com/でWordPressのサイトを公開していて、http://shop.hoge.com/でEC-CUBEを公開するとします。

この場合、CASE1-BとWEBサーバの公開設定部分が異なるだけで、WpPost・WpPostPlusの設定はCASE1-Bと同じになり、

  • /html/wpをhttp://hoge.com/で公開
  • /html/shopをhttp://shop.hoge.com/で公開

となります。
※サブドメインの設定は、サーバによって異なりますので、ご自分野環境に合わせてください。
※EC-CUBEのhtmlというディレクトリの名前をshopと変えています。
※www部分はサーバの設定によって異なりますので、ご自分野環境に合わせて読み替えてください。

図にすると、こんな感じです。

Case1-C サブドメインでEC-CUBEを運営

Case1-C サブドメインでEC-CUBEを運営

この場合、WordPressインストールディレクトリは以下のようになります。

Case1-C WordPressのインストール場所

Case1-C WordPressのインストール場所

WordPressインストールディレクトリ =../wp

となります。上の、「*1」がWordPressインストールディレクトリになります。

Case2 新たにWordPressとEC-CUBEをインストール

この場合は自由に決められますので、サイト設計の際、WordPressインストールディレクトリを決定ください。


title書き換えで悩む

Posted by on 31 1月 2014 | Tagged as: EC-CUBE, EC-CUBEプラグイン"WpPost", WEB, WEBプログラミング, wordpress, プラグイン

EC-CUBEのプラグインWpPostのSEO対策をしていて2回ほど躓いたので、書いておきます。

EC-CUBEのプラグイン作成ではSmartyのテンプレートをフックして、内容を変更できます。

  1. prefilter・・・Smrtyテンプレートコンパイル前※コンパイル時のみ
  2. outputfilter・・・Smrtyテンプレートコンパイル後※テンプレート出力時に毎回

prefilterでtitleタグを変更するために

$objTransform->select(‘title’)->replaceElement(file_get_contents($template_dir . ‘plg_hoge_add.tpl’));

とすると、「テンプレートの操作に失敗しました。title が存在しません」となります。

悩んだのですが、解決しないためEC-CUBEのフォーラムで質問したら、titleではエラーするようです。
http://xoops.ec-cube.net/modules/newbb/viewtopic.php?topic_id=13941&forum=17&post_id=62557

上記リンクにあるようにjQueryで<title>~</title>の中身を入れ替えるようにしました。

 $('title').text('Smartyのtagとか');

やれやれと思っていたら、ChromeやFireFoxは問題無いのですが、IEでエラーが出ます!

色々悩んだところ、どうも$('title').text('Smartyのtagとか');が影響しているようなので、調べてみると、大正解のページを見つけました。

jQueryでタイトルタグが書き換えられない

なので、

document.title = "Smartyのtagとか";

とすることで、解決!

やっと思い通りの動きをするようになりました。


category_description()でちょっと悩んだ

Posted by on 31 1月 2014 | Tagged as: WEB, WEBプログラミング, wordpress

30分ほど悩んだので、備忘録として書いておきます。

WordPressで

<?php echo category_description( $category_id ); ?>

でカテゴリの説明が取得できますが、

<p>カテゴリ説明のテキスト</p>

と返ってきます。

<p>~</p>が余計なので、

$var = strip_tags(category_description());

としたのですが、この値をSmartyで利用しようとするとエラーが出ました。

色々調べたら改行が残っていたので、

$var = str_replace(array(“\r\n”,”\r”,”\n”), ”, $var);

と、改行を削除することで解決しました。


IE8でjQueryセレクタにHTML5要素を指定すると動かない

Posted by on 29 1月 2014 | Tagged as: WEB, WEBプログラミング, wordpress

忘れがちなので、メモしときます。

WordPressでwp_list_comments()を使うと、コメントリストのHTMLが取得できますが、

‘format’ => ‘html5′

とすると、コメントごとに

<artcle id=”div-comment-XX”>
中身・・・
</article>

というHTMLになります。
http://codex.wordpress.org/Function_Reference/wp_list_comments

 

このid:div-comment-XXに対し、jQueryで

$(“#div-comment-XX”).css(“display”,”none”);

とかすると、<article>がHTML5の要素のため、IE8では動きません。
※IE9未確認

 

解決策1.

‘format’ => ‘xhtml’

として、HTML5のタグは使わない。

 

解決策2.

ブラウザ判定して、IE10未満の場合
<article>~~</article>を<div>~~</div>
に置換する。

 

今回レスポンシブな作業なので、解決策2で対応しました。


Next»