2014
Yearly Archive
Yearly Archive
maru 07 9月 2014 | : 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との接続の設定を変更し、
tunnel select 1
tunnel encapsulation l2tp
tunnel endpoint address yyy.yyy.yyy.yyy
ipsec tunnel 1ipsec 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 1l2tp 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
としました。
/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時間ですが、これを超えて接続していますので、問題無いようです。
maru 14 6月 2014 | : 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 )で設定したらうまくいきました。
当分、サーバの設定はWebMinで行ってるのですが、バーチャルドメインの設定ですっかり忘れていたので備忘録。
バーチャルドメインを設定した時、.htaccessを動かすためには、
DocumentRoot “/var/www/XXX”
ServerName xxxx
<Directory “/var/www/xxx”>
・・・
AllowOverride All
・・・
</Directory>
と
AllowOverride All
を入れる必要があったのでした。
いや~忘れてました。
maru 03 3月 2014 | : 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をオフィシャルサイトからダウンロードし解凍すると、ディレクトリの中に、
のディレクトリと
のファイルがあります。
EC-CUBEの公開では、本体はhtmlディレクトリの中身で、必要な様々なプログラムやテンプレートがdataの中に入っており、htmlの中のdefine.phpで設定を行います。
wwwの中に上記htmlの中のファイルを全て入れます。
wwwの中のshopというディレクトリにhtmlの中のファイルをいれます。
上記で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/’);
となります。
maru 25 2月 2014 | : 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の接続が安定し、切れなくなりました。
maru 24 2月 2014 | : 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の場合、
という場合が考えられます。
例えば、URLがhttp://hoge.com/でWordPressのサイトを展開していて、EC-CUBEをhttp://hoge.com/shop/で公開するとします。
この場合、/html/wp/shopにEC-CUBEをインストールするというのがもっとも簡単なやり方です。
※EC-CUBEのhtmlというディレクトリの名前をshopと変えています。
※www部分はサーバの設定によって異なりますので、ご自分野環境に合わせて読み替えてください。
図にすると、こんな感じです。
※EC-CUBEのPHPやSmartyが入るdataディレクトリはブラウザでアクセスできない場所に置くことにします。
上の図の場合、shop(元html)/define.php の中でdataフォルダの位置と名前を define(‘HTML2DATA_DIR’, ‘../../../data/’); で指定します。
この場合、一つ上の階層にWordPressがインストールされていますので、
WordPressインストールディレクトリ = ../
となります。下図の、「*1」がWordPressのインストール場所になります。
http://hoge.com/でWordPressのサイトを展開していて、これと別にhttp://shop-happy.com/でEC-CUBEを展開するとします。
※ドメインの設定は、サーバによって異なりますので、ご自分野環境に合わせてください。
※EC-CUBEのhtmlというディレクトリの名前をshopと変えています。
※www部分はサーバの設定によって異なりますので、ご自分野環境に合わせて読み替えてください。
図にすると、こんな感じです。
この場合、EC-CUBEとWordPressが同じ階層にインストールされているので、以下のような設定になります。
WordPressインストールディレクトリ =../wp
上の、「*1」がWordPressのインストール場所になります。
例として、http://hoge.com/でWordPressのサイトを公開していて、http://shop.hoge.com/でEC-CUBEを公開するとします。
この場合、CASE1-BとWEBサーバの公開設定部分が異なるだけで、WpPost・WpPostPlusの設定はCASE1-Bと同じになり、
となります。
※サブドメインの設定は、サーバによって異なりますので、ご自分野環境に合わせてください。
※EC-CUBEのhtmlというディレクトリの名前をshopと変えています。
※www部分はサーバの設定によって異なりますので、ご自分野環境に合わせて読み替えてください。
図にすると、こんな感じです。
この場合、WordPressインストールディレクトリは以下のようになります。
WordPressインストールディレクトリ =../wp
となります。上の、「*1」がWordPressインストールディレクトリになります。
この場合は自由に決められますので、サイト設計の際、WordPressインストールディレクトリを決定ください。
maru 31 1月 2014 | : EC-CUBE, EC-CUBEプラグイン"WpPost", WEB, WEBプログラミング, wordpress, プラグイン
EC-CUBEのプラグインWpPostのSEO対策をしていて2回ほど躓いたので、書いておきます。
EC-CUBEのプラグイン作成ではSmartyのテンプレートをフックして、内容を変更できます。
- prefilter・・・Smrtyテンプレートコンパイル前※コンパイル時のみ
- 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とか');
が影響しているようなので、調べてみると、大正解のページを見つけました。
なので、
document.title = "Smartyのtagとか"
;
とすることで、解決!
やっと思い通りの動きをするようになりました。
maru 31 1月 2014 | : 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);
と、改行を削除することで解決しました。
maru 29 1月 2014 | : 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未確認
‘format’ => ‘xhtml’
として、HTML5のタグは使わない。
ブラウザ判定して、IE10未満の場合
<article>~~</article>を<div>~~</div>
に置換する。
今回レスポンシブな作業なので、解決策2で対応しました。