カテゴリー
SSH

SSHのコマンド一覧

SSHで処理した方が楽な作業が多くなってきたので(バックアップとか)、コマンドをまとめておく事にする。よく使うコマンドだけなので追々追加。

▼基本


ls ・・・ ディレクトリ内の確認

cd «対象ディレクトリ» ・・・ ディレクトリ移動

▼フォルダを丸ごと圧縮


$ zip -r «ZIPファイル名» «対象ディレクトリ»

$ unzip «ZIPファイル名»

カテゴリー
EC-CUBE

EC-Cube(2系)でプラグインをインストールできない場合

さくらビジネスに移管したEc-Cube 2.12.2でプラグインを入れようとしたところ、
赤文字で「※解凍に失敗しました」の文字。

という事で調べてみると、Archive/Tar.phpというファイルの最新版を取ってきて入れ直してみると動く模様。PHP5.5上で動かないファイルがあり(下記の通り)、どうもこのファイルがその元凶らしい。

・オーナーズストア>モジュール管理
・オーナーズストア>プラグイン管理
・システム設定>バックアップ管理
・デザイン管理>テンプレート追加
・コンテンツ管理>ファイル管理

入れたらさくっと動きました。

カテゴリー
.htaccess Wordpress

サーバー引っ越しをしドメイン移管をした際のWPに入っているhtaccessの設定に注意

へテムル→さくらビジネスのケースだけじゃないと思うが、サーバー移管でWordpressを移管する際の注意点。
特にhtaccess。マルチサイトを切っている場合は特に気をつけておく点をメモメモ。

【1】旧サーバーで使っていたhtaccessは合わない可能性が高いので、基本一緒に移管しない。
一緒にアップロードせずにとりあえずhtaccessなしでとりあえず動かす(もしくは、デフォルトのhtaccessを入れておく)
じゃないとおそらく画面は「Internal Server Error」が表示される可能性あり。

【2】マルチサイトを使ってる場合は、最初はhtaccessは持ってかない。なぜなら設定が変わってる可能性があるため。
管理画面のネットワーク管理画面にある「設置」→「ネットワーク設置」にあるhtaccess情報をコピーしてサーバーにhtaccess初アップ。
これで、一応マルチサイトの末端ページは見る事が出来るはず。見る事はね。

【3】上記の設定だと、マルチサイトの管理画面に入れない、マルチサイトでアップした画像やファイルが閲覧できない可能性がある。
これは上記の「ネットワーク設置」にある情報では動かないため、らしい。htaccessの中にインストール先ドメインが入ってるかと思うので


RewriteRule ^([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes).*) ●ドメイン●$2 [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(.*\.php)$ ●ドメイン●$2 [L]

これを削除してアップすると、マルチサイトが動き出す。


RewriteRule ^([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes).*) $2 [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(.*\.php)$ $2 [L]

カテゴリー
Server

ドメイン移管処理後、できるだけ早くチェックしたい場合の設定

ドメイン移管処理を行った際、同サーバー内でのDNS切り替えなら比較的すぐに反映するけど、別サーバーにDNSを切り替える場合だとネットワークドメイン浸透に時間が掛かってしまい、ちゃんと移管できたのか分からないのでどきどきする・・・という事がある。特にショッピングサイトだったりとか、でかいクライアントのサイトだったりとか。メンテナンスの看板を出しておくというのも手だけど、すばやく確認できるようにしたい場合は、ネットワークのDNSをGoogle Public DNSにしてあげると反映後のサイトを見るスピードを速める事ができる。

いわゆるTCP/IP設定のDNSサーバーに、「8.8.8.8」と「8.8.4.4」を設定するだけでOK。

カテゴリー
nanoblock

nanoblock award 2016にエントリー中

今年もやってきましたよ。nanoblock award 2016の受付が。
早速、エントリーしています。本名でエントリーする男気。
締め切りが6月中旬なのでもう少し増やしたいところです。

「あ、ぶ~らぶら♪」(博多の情景シリーズ)
「ごめ~~~ん」(博多の情景シリーズ)
必殺のフィニッシュブロー vs 渾身のガード
必殺!ラリアット
逃走!
雪の日の情景

・・・にしても、今年もハイレベルな作品がエントリーされており、戦々恐々としております。頑張らなきゃ-。

カテゴリー
Wordpress

[WP]WordPressでと同じ動きをするコメントアウトを使う

WordPressとMovableTypeのどちらも使っていると、「こっちのこのシステムがあれば便利なのに」と思ったりするもの。
その中の一つにMTにある「mt:Ignore」というMTタグがある。このタグで囲ったらその中のソースはソース上にも表示されないという代物。WPではそういう専用タグがないので困っていたのだが、phpの構文でできる模様。テストしたら消えたのでぜひぜひ。


<?php if(0) { ?>
この部分は出力しない
<?php } ?>

カテゴリー
CSS

[CSS]疑似クラスまとめ

一部なかなか覚えられないのでまとめておく

▼最初&最後だけに反映



プロパティ:first-child{~};

プロパティ:last-child{~};


▼奇数&偶数だけに反映



プロパティ:nth-child(odd){~};

プロパティ:nth-child(even){~};


▼指定の倍数だけに反映(例は2の倍数)


プロパティ:nth-child(2n) {~};


▼順番を指定して反映(例は2番目に反映)


プロパティ:nth-child(2) {~};


▼下からの順番を指定して反映(例は下から2番目に反映)


プロパティ:nth-last-child(2){~};


▼1~3番目の指定を繰り返して反映


プロパティ:nth-child(3n+1){~};

プロパティ:nth-child(3n+2){~};

プロパティ:nth-child(3n+3){~};

カテゴリー
Data base

hetemlでSSHを使ったDBのエクスポート&インポート

友人に「最近こんな仕事をしているんだ」とWPやMTの踏み込んだ実装やサーバーの話したら、「もうデザイナーちゃうやん」と言われました。世の中のデザイナーはデザイン仕事で、コーディング、CMS実装はまた別のお仕事らしいですが、コーディング&実装をセットでやる人って珍しいらしいですよ、奥さん。そんなお仕事を今しております。
で。そんなわけで、デザイナーの仕事じゃないような防備録。hetemlサーバーでSSHを使ってデーターベースを引っこ抜き、もう一回入れる方法の防備録。
というのも、DBのサイズがでかくなるとphpMyAdminではエクスポートしてくれないことが多くなるので、コマンドラインを叩いて作業をする必要があるため。
使用するのは、hetemlサーバー、Tera Term。
hetemlの管理画面にアクセスし、右のサイドナビから「データーベース」「SSHアカウント」を開いておく。Tera termの設定方法は、hetemlのこちらから確認して設定。

▼エクスポート

ログインしたら「-bash-4.1$」と表示されるので、ここからコマンドラインの世界。DB情報等を下記のように書き込む。

mysqldump --single-transaction -u {mysqlのアカウント名} -p{mysqlのパスワード} -h {mysqlサーバー名} 対象DB名 > 出力先.sql


ポイントは-pとパスワードの間には半角スペースは入れないこと。
例えば、
・mysqlのアカウント名・・・_AAA
・mysqlのパスワード・・・BBB
・mysqlサーバー名・・・ mysql999.heteml.jp
・エクスポート先のDBファイル名・・・CCC(※任意)
とするならば、上記のコマンドは以下のようになる。

mysqldump --single-transaction -u _AAA -pBBB -h mysql999.heteml.jp _AAA > CCC.sql


吐き出されたDBはDDD.sqlという名前で、最上位フォルダ(※公開ディレクトリの/web/より一つ上)に生成されるので、それをローカルに落としておく。

▼インポート

インポートの場合は、最上位フォルダ直下にインポートさせるsqlファイルをまずアップしておく。そしてコマンドラインは以下の通り。

mysql -u [ユーザ名] -p[パスワード] -h [ホスト名] [データベース名] < [インポートするファイル名]


インポートと同じように-pとパスワードの間には半角スペースは入れないことと、ファイル名の前の記号が「>」「<」と異なっているので注意。
例えば、
・mysqlのアカウント名・・・_XXX
・mysqlのパスワード・・・YYY
・mysqlサーバー名・・・ mysql000.heteml.jp
・インポートするDBファイル名・・・ZZZ
とするならば、上記のコマンドは以下のようになる。


mysql -u _XXX -pYYY -h mysql000.heteml.jp _XXX < ZZZ.sql


カテゴリー
Movable type

[MT]記事ページで表示記事を外しながら所属カテゴリ一覧を表示、しかも空いた枠に最新の記事を埋める(ややこし!)

つまり、

・記事一覧枠が3つあり、ここには記事ページが所属するカテゴリー一覧を表示したい
・でも表示している記事は外して欲しい
・そうなると、例えばカテゴリーに3件しか所属してない=該当記事がそのうちのひとつだから表示が2件になる。
・その空いた1枠には全記事からの最新記事を入れて欲しい
・もちろん表示している記事がいちばん新しかったら外してね!

・・・という要求仕様に応えるソースである。

以前探した記事で「MTの個別記事で同じカテゴリの記事一覧を表示する際に、現在の記事を除外する」というのがあったのだが、MTの仕様なのか「10件表示する」→「該当記事が入っている」→「表示させない」→「9件」という動きをしており、空いた穴を埋めてくれない物だった。それを前回のエントリーでまずはうまく行ったので、これをベースに分岐を交えてやってみた。



<mt:EntryCategory setvar="primary_category">
<mt:EntryCategories>
    <mt:if tag="CategoryLabel" eq="$primary_category">
        <mt:CategoryLabel setvar="now_cate">
        <mt:CategoryCount setvar="now_cate_count">
    </mt:if>
</mt:EntryCategories>


<mt:EntryID setvar="entryid">

<mt:Entries id="$entryid">
<mt:EntryTitle setvar="now_entry">
</mt:Entries>



<mt:If name="now_cate_count" eq="1">
<p>▼所属記事数1→カテ数0→最新記事3件表示</p>

 <MTEntries lastn="3" unique="1">
   <li><$MTEntryTitle$></li>
 </MTEntries>

<p>※合計3件表示</p>

<mt:ElseIf name="now_cate_count" eq="2">
<p>▼所属記事数2=カテ数1</p>

    <MTEntryCategories type="primary">
 <MTEntries unique="1">
   <li><$MTEntryTitle$></li>
 </MTEntries>
    </MTEntryCategories>

<p>▼空白補完→最新記事2件表示</p>

 <MTEntries lastn="2" unique="1">
   <li><$MTEntryTitle$></li>
 </MTEntries>

<p>※合計3件表示</p>


<mt:ElseIf name="now_cate_count" eq="3">
<p>▼所属記事数3=カテ数2</p>

    <MTEntryCategories type="primary">
 <MTEntries unique="1">
   <li><$MTEntryTitle$></li>
 </MTEntries>
    </MTEntryCategories>

<p>▼空白補完→最新記事1件表示</p>
 <MTEntries lastn="1" unique="1">
   <li><$MTEntryTitle$></li>
 </MTEntries>


<p>※合計3件表示</p>

<mt:Else>
<p>▼所属記事数4=カテ数フル</p>

    <MTEntryCategories type="primary">
 <MTEntries unique="1" lastn="3">
   <li><$MTEntryTitle$></li>
 </MTEntries>
    </MTEntryCategories>

<p>※合計3件表示</p>

</mt:If>


今回は、分岐用&カテゴリー指定用に所属カテゴリーと所属カテゴリーの記事数を取得し、これを変数変換する命令を最初に追加している。
そして、前回のエントリーIDを取得し、その記事をmt:Entriesで呼び出し、uniqueを使うための履歴の為に・・・というのは前回通り。
あとは、取得した所属カテゴリーの記事数の数字を使って分岐をし、それぞれ穴を埋めるための必要な記事数を呼び出していく、というわけですな。
uniqueが反応しているので、同カテゴリー一覧にも最新記事一覧にも表示記事は表示されないようになってるはず。これは多分色々使いまわせる技術ではないだろうか。

役に立った!と思った方は、広告バナーを一回ぽちっと押すだけでいいのでこの労力を誉めてください(笑

カテゴリー
Movable type

[MT]変数予約いろいろ

MT仕事で必要となってきたのが、変数のセット。
この分岐を理解することが、複雑な分岐がある程度クリアできてくる。

まずは変数をセットする構文。
大体2種類があるがどれも同じ命令となる。
例えば、mt:EntryIDをentry_numに入れる方法。


<MTSetVarBlock name="entry_num"><mt:EntryID></MTSetVarBlock>

<mt:EntryID setvar="entry_num">

例えば、記事のエントリーIDが999の場合は、この「999」がentry_numに収められる。
2番目のはmt:EntryIDを直で書いているように見えるが、変数に入れられるので表示はされない。

そして、entry_numに入った値を表示する方法は、Getvarを使う。


<mt:GetVar name="entry_num">

しかし、この値をMTタグ内で使用する際は、getvarでは対応できないので、「$」で呼び出すことになる。


<mt:Entries id="$entryid">
<mt:EntryTitle>
</Entries>

mt:if内では、nameに入れて、その値をモディファイアと比較することで、分岐を行える。
下記の内容だと、エントリーIDが999の場合、1000の場合、それ以外の場合、という分岐の内容になる。


<mt:If name="entry_num" eq="999">
<p>私はゾウを愛しています</p>
<mt:ElseIf eq="1000">
<p>私はゾウより、シロクマを愛しています</p>
<mt:Else>
<p>私はゾウもシロクマも愛していないのです</p>
</mt:If>


これを利用して、インデックステンプレートかカテゴリーテンプレートか、それとも記事テンプレートか・・・というような判別にも使える。各テンプレートの1行目などに仕込んでおくと超便利。下記の物はサンプルであるので、独自に名前を付けたり、インデックステンプレートが複数あるから名前を変えるなどもOK。


<$MTSetVar name="main_index" value="1"$>
<$MTSetVar name="category_index" value="1"$>
<$MTSetVar name="entry_archive" value="1"$>
<$MTSetVar name="page_archive" value="1"$>

そしてこれを分岐させる。


<mt:If name="main_index">
トップの時
<mt:ElseIf name="archive_index">
アーカイブ用インデックスの時
<mt:ElseIf name="entry_archive">
エントリーの時
<mt:ElseIf name="page_archive">
ウェブページの時
<mt:Elseif name="category_archive">
カテゴリの時
<mt:ElseIf name="datebased_archive">
月や年アーカイブの時
<mt:else>
その他
</mt:If>

MTの分岐もいろいろ面倒だが、分かりやすいと言えば分かりやすい。

追記。ループの回数でもいろいろできる模様。
例えば、記事を3個出すが、それぞれdivのクラスが違う場合とかに使える。



<MTEntries lastn="3">

<mt:If name="__counter__" eq="1">
            <div class="box1">
<mt:elseIf name="__counter__" eq="2">
            <div class="box2">
<mt:elseIf name="__counter__" eq="3">
            <div class="box3">
<mt:Else>           
</mt:If>

  <$mt:Include module="ブログ記事概要"$>
  </div>
</MTEntries>

incrementを使うことで増加する数値にも対応できるらしい。それについてはまだ必要ないかもしれないが。
これらで使える特殊変数はこんな物がある。

__first__
ループ出力の最初である場合 true (1) となります。

__last__
ループ出力の最後である場合 ture (1) となります。

__odd__
ループ出力の奇数回目の場合 ture (1) となります。

__even__
ループ出力の偶数回目の場合 ture (1) となります。

__index__
ループのインデックスを格納します。

__counter__
ループした回数を格納します。