実験酒場

Welcome to the 実験酒場
2010年 2月 24日(水曜日) 13:27
作者: Administrator   
印刷 Eメール
サーバー設定 - CentOS

CentOSによるWebサイト(企業サイト、ECサイト)構築のためのサーバー初期設定を備忘録的に記します。

SELinuxを無効化


[root@localhost ~]# lokkit

lokkit

Tabキーで移動Spaceキーで決定。SELinuxを「Disabled」に選択し、「Custamaize」ボタンを押します。(SELinuxを無効にするのは、yum installで他のソフトとの依存関係が崩れることがあるらしいですので。使い方が分かれば有効にしても良いでしょうけれど。)

SELinuxとは、Linuxをセキュアにするソフトだそうです。ソフトを全てインストールし終えたら有効にしても良いでしょうけれども、細やかな設定をする必要があるそうです。

SELinuxを有効にする場合は、lokkitの設定画面でPermissiveを選択します。

CentOSのコマンドについて

CentOSの簡単コマンド一覧表

CentOSを最新バージョンにアップデート


[webmaster@localhost ~]$ su - //root管理者になる
パスワードを入力
[root@localhost ~]# yum -y update
「rpmdb: unable to lock mutax: Invalid argument」とメッセージが表示された場合は以下の対処
[root@localhost ~]# yum clean all
[root@localhost ~]# yum update glibc*
でglibc関係を更新
[root@localhost ~]# yum -y update

管理者用の一般ユーザーの作成


[root@localhost ~]# vi ~/.bash_profile

# .bash_profile

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
        . ~/.bashrc
fi

# User specific environment and startup programs

PATH=$PATH:$HOME/bin:/sbin:/user/sbin   //:/sbin:/user/sbinを付け加える

export PATH
unset USERNAME

[root@localhost ~]# useradd admin //例としてadminという一般ユーザーを作る
[root@localhost ~]# passwd admin //パスワードの設定
Changing password for user admin.
New UNIX password:
Retype new UNIX password:
passwd: all authentication tokens updated successfully.

一般ユーザーの権限を付与user


[root@localhost /]# visudo

admin ALL = NOPASSWD: ALL //sudoコマンドで全ての権限
Apacheのみの権限の場合
admin ALL = (root) /etc/init.d/httpd start, \
                   /etc/init.d/httpd stop, \
                   /etc/init.d/httpd restart \

ホスト名を変更

SentOSの場合、初期状態ではlocalhost.localdomainと設定されていますが、不具合が出る可能性があります。

  1. ホスト名を変更していない同士で、メールの送受信が行えない
    • sendmail は、SMTP HELO の応答文字列で、自ホスト名と同じものが、返された場合ループとして判断される。 そのため、ホスト名を出荷時の localhost.localdomain から変更していない同士でメールの送受信が行えません。
  2. dnsbl に登録されやすくなる
    • サーバのホスト名が localhost.localdomain となっている場合、それを理由として dnsbl に登録される可能性があります。
    • dnsbl に登録されると、サーバからのメール配信がスパム扱いとなり、サーバ運用に支障が出る恐れがあります。

変更方法


[root@localhost ~]# hostname example.com //localhostをexample.comに設定(自サイトのドメインを使用)

但し、この方法ですと仮想専用サーバの再起動を行うと設定したホスト名が初期化されます。 恒常的に変更する場合は、/etc/sysconfig 以下のnetwork ファイルを編集します。 編集方法ですが、viなどのテキストエディタで /etc/sysconfig/network ファイルを開きます。


[root@localhost ~]# vi /etc/sysconfig/network

HOSTNAME="*****"(*****は設定したいホスト名)を記述します。
example.com を設定したい場合は、
NETWORKING="yes"
GATEWAY="192.0.2.1"
HOSTNAME="example.com"
a
管理者ユーザをwheelグループに追加

rootになれるユーザを管理者のみにする。

[root@localhost ~]# usermod -G wheel admin
[root@localhost ~]# vi /etc/pam.d/su
#auth       required     pam_wheel.so use_uid
↓
auth       required     pam_wheel.so use_uid

システムの言語を日本語(UTF-8)に設定


[root@localhost ~]# vi /etc/sysconfig/i18n
LANG="ja_JP.UTF-8"
SUPPORTED="en_US.UTF-8:en_US:en:ja_JP.eucJP:ja_JP:ja"
SYSFONT="latarcyrheb-sun16"

上記の設定で次回ログインから日本語が表示されるようになります。

最終更新 ( 2010年 3月 27日(土曜日) 16:49 )
 
2009年 9月 02日(水曜日) 07:56
作者: Administrator   
印刷 Eメール
CMSカスタム - ec-cube カスタム

ec-cubeの決済画面で、のしの表書きの選択や、包装の選択項目を追加するカスタム。

1.phpmyadminで、テーブルmtb_jobと同様のテーブル、mtb_optionを作成。

phpmyadminの下段にテーブルを新規作成とありますので、新規作成をクリック。テーブルの内容もmtb_jobと一緒。同じような内容ができたら、保存。でphpmyadminを閉じる。

phpmyadmin

インストール方法や使い方はググッてみたら、教えてくれる人がいます。

データベースがPostgreSQLの方はphpPgAdminで同上の方法です。

2.ec-cube管理画面でギフト、のしの項目を設定

管理画面⇒システム設定⇒マスタデータ管理で作ったテーブルが表示されると思います。

  • ID:0 指定なし
  • ID:1 簡易包装
  • ID:2 完全包装
  • ID:3 無地のし
  • ID:4 お祝い
  • ・・・・・・・

という感じで項目を作成。

3.phpmyadminのdtd_orderとdtd_order_tempにadd_optionというフィールドを追加

再びphpmyadminにログインして、dtd_orderとdtd_order_tempのテーブルにadd_optionというフィールドを追加。僕は最後尾に追加しました。

  • 型:smallint
  • NOTNULL
  • デフォルト:0

とします。

4./data/class/pages/shopping/LC_Page_Shopping_Payment.phpを編集

59行目辺りの$this->allowClientCache();の以下に2行を追加


//以下の二文を追加
$masterData = new SC_DB_MasterData_Ex();
$this->arrOPTION = $masterData->getMasterData("mtb_option");

338行目の$this->objFormParam->addParam("配達日", "deliv_date", STEXT_LEN, "KVa", array("MAX_LENGTH_CHECK"));の以下に一文を追加する。


//以下の一文を追加
$this->objFormParam->addParam("オプション", "add_option", INT_LEN, "n", array("NUM_CHECK"));

上記のようにオプションの一文を追加。

5./data/class/pages/shopping/LC_Page_Shopping_Confirm.phpを編集

LC_Page_Shopping_Confirm.phpの55行目$this->arrReminder = $masterData->getMasterData("mtb_reminder");の以下に一文追加。


//以下の一文を追加
$this->arrOPTION = $masterData->getMasterData("mtb_option");

562行目辺りのソースの塊の中で赤字の, add_optionを追加


//一時受注テーブルからの情報を格納する
function lfSetOrderTempData($uniqid) {
$objQuery = new SC_Query();
$col = "payment_id, use_point, deliv_time_id, message, point_check, deliv_date, add_option";
$from = "dtb_order_temp";
$where = "order_temp_id = ?";
$arrRet = $objQuery->select($col, $from, $where, array($uniqid));
// DB値の取得

6./data/class/pages/admin/order/LC_Page_Admin_Order_Edit.phpを編集

86行目付近の $this->arrORDERSTATUS = $masterData->getMasterData("mtb_order_status");の以下に一文を追加。


//以下の一文を追加
$this->arrOPTION = $masterData->getMasterData("mtb_option");

7./data/Smarty/templates/default/shopping/payment.tplを編集

payment.tplの時間指定の以下に下記ソースを追加


<div class="payarea02">
<h3>オプションの指定</h3>
<p>ご希望の方は、オプションを選択してください。</p>
<div>
<!--★オプション指定★-->
<!--{assign var=key value="add_option"}-->
<span class="attention">
<!--{$arrErr[$key]}-->
</span> <em>オプション指定:</em>
<select name="<!--{$key}-->" style="<!--{$arrErr[$key]|sfGetErrorColor}-->">
<!--<option value="" selected="">指定なし</option>-->//コメントアウト
<!--{html_options options=$arrOPTION selected=$arrForm[$key].value}-->
</select>
</div>
</div>

8./data/Smarty/templates/default/shopping/confirm.tplを編集

ご注文確認ページの注文内容のテーブルのお好みの場所に以下のソースを追加。(<!--{if $tpl_login~の中に入れないようにだけ気をつける。)


<tr>
<th>オプション</th>
<td><!--{$arrOPTION[$arrData.add_option]|escape}--></td>
</tr>

最後に管理画面の.tplを編集する。

9./data/Smarty/templates/default/admin/order/disp.tplと/data/Smarty/templates/default/admin/order/edit.tplを編集

/data/Smarty/templates/default/admin/order/disp.tplのテーブルの任意の場所に以下のソースを追加。


<tr class="fs12n">
<td bgcolor="#f0f0f0" colspan="5">▼オプション</td>
</tr>
<tr class="fs12n">
<td bgcolor="#ffffff" colspan="5" height="24">
<!--{assign var=add_option value="`$arrForm.add_option.value`"}-->
<!--{$arrOPTION[$add_option]|default:"指定なし"}--></td>
</tr>

/data/Smarty/templates/default/admin/order/edit.tplのテーブルのメモ項目の下に以下のソースを追加。


<tr class="fs12n">
<td bgcolor="#ffffff" colspan="6">
<!--{assign var=key value="add_option"}-->
<span class="red12"><!--{$arrErr[$key]}--></span>
<select name="<!--{$key}-->" style="<!--{$arrErr[$key]|sfGetErrorColor}-->">
<option value="" selected="0">指定無し</option>
<!--{html_options options=$arrOPTION selected=$arrForm[$key].value}-->
</select>
</td>
</tr>

以上です。

秀和システムのec-cubeの公式ガイドブックカスタマイズ編をコピペしただけだけど、結構追加項目が多くて難儀しました。

※ec-cubeの公式ガイドブックの内容はバージョン2.4.0に対応しています。2.4.1の場合、拡張された機能の記述がありますので、そのままコピペした内容をアップロードするのではなく、のし機能に対応した部分だけ付け加えていくほうが良いでしょう。

/data/class/pages/フォルダはあまり編集したくない領域ですけど、ネットショップでのし紙や包装の選択項目は必須だと思いますので、仕方がない。

多分ec-cubeの次期バージョンでは実装される要項だと思いますので、バージョンアップまで待ったほうがよいのかも知れません。

しかし、もし次期バージョンでこの機能が実装されなかったら、..カスタムするしかないですね。

最後、お客様に届く受注メールのテンプレートも一応、今回ののしの選択の項目を付け加える必要がありますね。

方法は、ec-cubeフォーラムに載っていました。

data/Smarty/templates/default/mail_templates/order_mail.tplを編集します。

以下の一文を、配送情報とご請求金額の項目のところに追加。


オプション:<!--{if $arrOrder.add_option == 0}-->指定なし<!--{elseif $arrOrder.add_option == 1}-->簡易包装<!--{elseif $arrOrder.add_option == 2}-->完全包装<!--{elseif $arrOrder.add_option == 3}-->無地のし<!--{elseif $arrOrder.add_option == 4}-->御祝<!--{elseif $arrOrder.add_option == 5}-->寿<!--{elseif $arrOrder.add_option == 6}-->内祝<!--{elseif $arrOrder.add_option == 7}-->長寿祝<!--{elseif $arrOrder.add_option == 8}-->御中元<!--{elseif $arrOrder.add_option == 9}-->御歳暮<!--{elseif $arrOrder.add_option == 10}-->祝開店<!--{elseif $arrOrder.add_option == 11}-->祝開業<!--{elseif $arrOrder.add_option == 12}-->御見舞<!--{elseif $arrOrder.add_option == 13}-->御霊前<!--{elseif $arrOrder.add_option == 14}-->志<!--{else}-->その他(お問い合せ欄にご入力ください)<!--{/if}-->

上記のソースは自分の例です。

上記の<!--{if $arrOrder.add_option == 0}-->の番号は、ec-cube管理画面のマスタ-データ管理か、phpmyadminでmtb_optionを開いたら確認できます。

後はテストを繰り返しながら、気になるところを直していきます。

最終更新 ( 2009年 9月 18日(金曜日) 10:30 )
 
2009年 8月 31日(月曜日) 21:25
作者: Administrator   
印刷 Eメール
CMSカスタム - ec-cube カスタム

http://nakawake.net/?p=679 を参照

/data/class/pages/admin/order/LC_Page_Admin_Oder_Pdf.phpの57行目に領収書を追加。


$this->arrType[0]  = "納品書";
$this->arrType[1]  = "領収書";

次に、106行目あたりに納品書の場合と領収書の場合の分岐処理。


            //納品書の発行の場合
            if($arrRet['type'] == 0) {
            $objFpdf = new SC_Fpdf($arrRet['download'], $arrRet['title']);
            foreach ( $arrRet['order_id'] AS $key=>$val ) {
            $arrPdfData = $arrRet;
            $arrPdfData['order_id'] = $val;
            $objFpdf->setData($arrPdfData);
            ++$i;      }
            }
            //領収書の発行の場合
            elseif($arrRet['type'] == 1){
            $objFpdf = new SC_Fpdf_Order($arrRet['download'], $arrRet['title']);
            foreach ( $arrRet['order_id'] AS $key=>$val ) {
            $arrPdfData = $arrRet;
            $arrPdfData['order_id'] = $val;
            $objFpdf->setData($arrPdfData);
            ++$i;      }
              }

最後に20行目くらいに戻ってrequire_once(CLASS_PATH . "SC_Fpdf.php"); の下に以下の1行を追加。

require_once(CLASS_PATH . "SC_Fpdf_Order.php");

  

data/class/SC_Fpdf.phpをコピーして、SC_Fpdf_Orderにリネームして、同じ階層フォルダにアップロード。(内容は好きな形に変更する。)

そして各リネームしたページの34行目から以下をそれぞれのページ名に変更


require_once(DATA_PATH . 'pdf/japanese.php');
  define('PDF_TEMPLATE_DIR', DATA_PATH . 'pdf/');
    define('PDF_IMG_DIR', HTML_PATH. USER_DIR. USER_PACKAGE_DIR. TEMPLATE_NAME. '/img/pdf/');
    class SC_Fpdf_Order {
    function SC_Fpdf_Order($download, $title, $tpl_pdf = "template_nouhin02.pdf") {

最後に新しいPDFテンプレートを作ります。

template_nouhin02.pdfという名前で、適当に作り変えました。(上のソースはtemplate_nouhin02.pdfをアップロードしないと動かないです。)

/data/pdf/template_nouhin02.pdfでアップロードします。

参照先のなかわけ様、ありがとうございます。

 

最終更新 ( 2009年 9月 02日(水曜日) 09:50 )
 
<< 最初 < 1 2 3 4 5 > 最後 >>

ページ 1 / 5