C-limber's highへようこそ。
C-limber's highは山登りのサイトではなく、福岡システム開発WEB制作会社 C-limber(クライマー)株式会社の技術メモブログです。
福岡システム開発ホームページ制作をお探しの方はお気軽にご相談下さい。

2013年12月23日月曜日

2013年12月22日日曜日

2013年12月21日土曜日

2013年12月17日火曜日

[mysql]mysqldumpの使い方

17:41 Posted by 匿名 No comments
mysqldumpの使い方メモ

通常の利用
mysqldump -u ユーザ名 -p DB名 > 出力先ファイル名

文字エンコードしながら
mysqldump --default-character-set=utf8 -u ユーザ名 -p DB名 > 出力先ファイル名

すべてのデータのバックアップは
mysqldump -u root -x --all-databases > dump.sql

2013年12月12日木曜日

[Mac] windowsユーザに圧縮ファイルを送る場合

8:30 Posted by 匿名 No comments
先日、windowsユーザにzipで圧縮したエクセルファイルを送る際に文字化けしてしまい、迷惑をかけてしまいました。。

ということで、今後winユーザに文字化けデータを送らないようにメモ。

使うソフト:MacZip4Win
ダウンロードはコチラ

それで、エクセルファイルはフォント指定で、MSゴシックを使うとwin側で文字化けするようです。
Osakaで送るとうまく行きました。

最近エクセルをきちんと勉強しなきゃと思ってます。。

2013年12月11日水曜日

[ubuntu][apache] phpが動かない時

11:42 Posted by 匿名 , , No comments
public_html/以下でphpが動作しない事があります。

そんな時は、/etc/apache2/mods-available/php5.confを編集しましょう。(ubuntuの場合)


    
        #この行をコメントアウト
        #php_admin_value engine Off
    


userdirを設定している場合、php5.confのデフォルト設定でpublic_html以下のphpが無効になっています。
迷惑な設定はoffにしておきましょう。

2013年12月10日火曜日

[sftp]SFTPの設定

8:00 Posted by 匿名 , , No comments
出先での作業など公共のwifi環境を使う必要があるとき、
大事なクライアントサーバに生FTPで繋ぐと何があるか分かりませんので、、
FTPの暗号方式の一つ、SFTPを導入しています。

SCPは使った事あるんですが、そもそもmacで作業してるので、winSCPが使えません。
なので、macでも使えるFileZillaが扱える暗号化方式のSFTPを使用しています。

基本SSHなので、注意すべき点は、
・ポートの設定がSSHで設定したポートになる。
・SFTP用アカウントでSFTPのみしか使わせないように制限する事

以下はSFTP用アカウントの機能制限の方法です。
/etc/ssh/sshd_configを変更します。

標準のsftp-serverからsshd内部のinternal-sftpに変更
#Subsystem      sftp    /usr/libexec/openssh/sftp-server
Subsystem       sftp    internal-sftp

ユーザ又はグループ毎に制限追記

Match User designer
    ChrootDirectory /var/www
    ForceCommand internal-sftp

[注意]
上の方法でChrootDirectoryをしないと、SFTP接続時にchrootされません。
/home/hogeにchrootする場合は、/home/hogeを必ずroot:rootにしてパーミッション755に設定して、FTP接続時、SFTP接続時の両方でchrootされるようにします。

以上です。

2013年12月9日月曜日

[ubuntu][aws] awsで10.04から13.04にネットワークアップグレード

7:47 Posted by 匿名 , No comments
vsftp2.3.5のアップグレードのついでに
ubuntuも10.04だったのでアップグレードしてみることにしました。

参考サイト
UbuntuTips/Install/UpgradeNatty - Ubuntu Japanese Wiki

まずアップグレードの前に現在のバージョンにおける全てのアップデートを必ず適用
apt-get update, apt-get upgrade

□まだインストールしていなければ、update-manager-coreをインストールします
sudo apt-get install update-manager-core

(これについてはやらくてもうまくいった)
□/etc/update-manager/release-upgradesを編集し、Prompt=normalを設定します

□アップグレードツールを起動します
sudo do-release-upgrade


30分ぐらいでアップデート終わりました。
$ lsb_release  -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 13.04
Release: 13.04
Codename: raring


2013年12月8日日曜日

[ubuntu][vsftp] vsftpd 3.0.2で500 OOPS: priv_sock_get_cmdがでた場合

7:31 Posted by 匿名 , No comments
vsftpd 2.3.5がユーザ毎のchroot周りがバグがあるらしく、

ユーザ毎のchrootをしようとすると、

500 OOPS: vsftpd: refusing to run with writable root inside chroot ()

って出て困ってました。

で、その問題を解消する為にvsftpの拡張版があったり、3.0からあたらしい設定項目ができたりしてて、

allow_writeable_chroot=YES

とすれば細かい事気にせずユーザ毎のchrootをしてくれるらしいので、
vsftpdを3.02にアップグレードしてみました。

するとまたエラー

500 OOPS: priv_sock_get_cmd

何じゃこりゃと思っていたら、これはvsftpd3系のよくあるバグらしく

seccomp_sandbox=NO

としたら解消されました。

[疑問点]
allow_writeable_chrootを設定したら、user_config_dirが無効になってしまいます。
これはバグなのか、自分がミスってるだけなのか・・・
vsftpdめんどくさいです。

以上です!

参考にしたサイト
VSFTPD: "500 OOPS: priv_sock_get_cmd" - ChemDroid.net
vsftpdでFTPユーザーごとのルートディレクトリを設定する方法 | Weblogy
Wheezyのvsftpdへのログイン先をchrootディレクトリに変更する。labunix's blog

2013年12月7日土曜日

2013年12月6日金曜日

2013年11月26日火曜日

[PHP] メモリ使用量を調べる

11:07 Posted by 匿名 No comments
ローカルで作業してて重い検索なんかやってると時々メモリオーバーで、
画面真っ白になります。

 そんなときはメモリを食ってる部分をリファクタリングですが、
その際は
$mem = memory_get_usage();
$mem = number_format($mem);
print("Memory:{$mem}");
で調べましょう。

この関数は挿入した時点でのメモリ使用量を調べるので、
最終的な使用量を出すには下の方に挿入しましょう。

以上です。

2013年11月22日金曜日

[php][Pear] default_timezone がずれる

19:56 Posted by 匿名 , No comments
PearのMail_Queueを使って、
大量のメールを送信出来るものを作ろうと思ってたときに起こった事。

テストでcronでメールキューを作ると同時に送信する => 問題なく送信。

別に管理画面からキュー登録、その後cronがキュー送信 => 送れない。

本当に原因がわからなくてPearのソース追っかけて
dumpしまくりながら調べた結果・・

原因はtimezoneにありました。

php.iniが Asia/Tokyo にセットされていて安心していたのに、
cronでメールキューを処理する時点でのtimezoneが Europe/Berlin になってました。

なんでなのかは調査が必要ですが、
とりあえずapache経由でのアクセスでは無い時は、(ターミナルとかでやってる時)
apacheが読んでるphp.iniとは違うものを読み込んでいるいる可能性がある。
っていうのを思い知りました。

ちなみにtimezoneを設定するときは、

// タイムゾーンを設定する
date_default_timezone_set('Asia/Tokyo');

// タイムゾーンを表示させる
echo date_default_timezone_get();



Pear+PHP5 は strict_standard(値か参照かの警告) やら deprecated(非推奨) やら エラーでまくるし嫌ですね・・



2013年11月16日土曜日

[blogger]syntaxHighlightの導入

17:02 Posted by 匿名 No comments
記事的に、コードをメモする事が多いので、
シンタックスハイライトを導入してみました。

参考にしたのはコチラ。
BloggerにソースコードをハイライトするSyntaxHighlighterを導入する

結構簡単にできるもんですね!

って思ったら、
使うテンプレートによってはハイライトしてくれません。

jsばりばりのテンプレを使ってたんですが、
見やすさ優先・コード優先のシンプルテンプレートに変更しました。

他にもシンタックスハイライトする方法あるんだろうか・・

余裕がある時ちょこちょこいじってみます。



2013年11月15日金曜日

[yii] CDbCriteriaの書き方いろいろ

13:10 Posted by 匿名 No comments
Yii FrameworkのCDbCriteriaを毎日毎日書いてるわけですが、

$criteria=new CDbCriteria();

としたあと、書き方の選択肢がいくつかあるので、そのメモです。

他のtableをjoinする場合  

$criteria->join.=' LEFT JOIN {{table_a}} a ON t.table_a_id=a.id ';




※メインのtableは t というデフォルトの別名が付きます。
※複数のtableをjoinする場合、CDbCriteriaのjoinプロパティは一つしか無い(配列ではなく文字列なので)ので.(ドット)で連結する事に注意!
※{{table_name}}で指定する事で、動的にprefixを無視してtable名を読み込めます。便利ですね


■ paramsの持たせ方

配列なので当たり前だけど後からどんどん追加できます。

$criteria->params[':name']="%{$name}%"; // 文字列
$criteria->params[':test_1']=$test_1; // 数値等


■ 一つのtextFieldで複数のfieldをテキスト検索する場合  

$criteria->addCondition('t.title LIKE :title OR t.comment LIKE :comment');
$criteria->params[':title']="%{$search['text']}%";
$criteria->params[':comment']="%{$search['text']}%";


■ where in で検索する方法

普通にリファレンスに書いてありますけどね、、一応メモ
$criteria->addInCondition('group_id', $group_id_array);


■ createCommandでも書けます

$commands=Yii::app()->db->createCommand()
   ->from('{{member}} t')
   ->leftJoin(
    '{{member_category_relation}} c',
    't.id=c.member_id AND c.group_id=:group_id'
    ,
    array(
     ':group_id'=>$this->_group->id,
    )
   )
   ->select(array(
    't.id AS id',
    'name',
    'category_id',
    't.update_time AS update_time'))
   ->where(
    array('in', 't.id', $member_ids)
   );
  // 後から追加も可能
  $commands->order=$order_sql;

  // コマンド実行
  $datas=$commands->queryAll();

2013年11月14日木曜日

[デバイス] Mac Book Air のサブモニター用 HDMIアダプタ

11:03 Posted by 匿名 , No comments
安くていいの見つけました

Amazon.co.jp:MacLab.  Mini Displayport - HDMI変換アダプタ

相性保証あり30日間返品可で、
770円

家用、会社用と使ってますが、
ストック用でも一本買っとこうか、と思える安さです。

現状、使用になんの問題もありません。

おすすめです。
Amazon.co.jp:MacLab.  Mini Displayport - HDMI変換アダプタ

2013年11月13日水曜日

[jQuery UI] datePickerで日付が飛ぶ場合

16:43 Posted by 匿名 No comments
jQuery UI の datepickerを使っていて、
時々1900年とか1899年に年が飛ぶ事があります。
そのときの対処法。

参考はここです。

Weird jQuery date picker action - Stack Overflow

Stack Overflow様々です。

これを
$(this).datepicker('destroy').datepicker({
    showOn:'focus',
    dateFormat: "yy-mm-dd",
}).focus();


これに変更
$('.datepicker').not('.hasDatePicker').datepicker({
     dateFormat: "yy-mm-dd",
     showOn:'focus',
});

datePickerが2個でることで起こるバグっぽいので、
すでに生成されている場合は、生成そのものを押さえる感じみたいです。 

勉強になりました。

2013年11月12日火曜日

[git] 各種戻し方

15:19 Posted by 匿名 No comments
■一つのファイルの編集した後で、前回コミットしたところまで、修正内容を戻したいファイルがある場合

git checkout file_path


■ファイルの更新履歴を全て削除したい時(gitの管理下から外す時)

#ディレクトリごと
git rm --cached -r dir/
#ファイルだけ
git rm --cached file_path


■更新履歴がある場合、.gitignoreでignore出来ません。この場合、「ファイルの更新履歴を全て削除」してください。やり方は上記。

2013年11月8日金曜日

[yii] 時間系バリデートの記載

22:47 Posted by 匿名 No comments
yiiのCActiveRecordのvalidateは超便利ですけど、

時間系のバリデートのformatの指定の仕方がちょっと特殊です。

特殊というか、PHPのdate関数と違います。

詳細はこちらを。。

CDateTimeParser | Class Reference | Yii PHP Framework

使えば使うほどyiiが楽しくなる感じ。
他のフレームワークでもこうなのかな。

少なくともZendFramework1系はこんな感じはなかったけど。

2013年11月6日水曜日

[ZF1] セッションを消す時

21:43 Posted by 匿名 No comments
unsetで消そうとしてましたが、 Zend_Session::namespaceUnset('○○'); としないといけないみたいです。 メモメモ。

2013年10月31日木曜日

[ZF1] コントローラ名のCamelCaseは-つなぎ

20:49 Posted by 匿名 No comments
表題のとおり

ZF1にてコントローラ名のCamelCaseは-(ハイフン)つなぎです。

MemberDataController.phpにアクセス
→member-data

macのローカル環境で作業してたら、memberDataでもアクセスできてしまって、
サーバに移すとアクセスできなかったので、注意です。

以上です

2013年8月3日土曜日

カンマ区切りの文字列をCSVで扱う

11:11 Posted by Unknown No comments
ダブルクォーテーションで囲んだ文字列の中にさらにダブルクォーテーションで囲みたい文字列がある場合について調べた結果、当然エスケープ処理が必要。
ダブルクォーテーションのエスケープはダブルクォーテーション自身。
知りませんでした。
よって、エクセルなど2個のダブルクォーテーションを1個とみなすようです。
これで問題解決

2013年8月1日木曜日

[MAMP] macのターミナルでmampのmysqlにログインする場合

22:27 Posted by 匿名 , , No comments
macのターミナルでmampのmysqlにログインする場合

$ /Applications/MAMP/Library/bin/mysql -u root -p

これで入れます

容量の大きいバックアップのsqlをDBにぶち込む時はログインして 該当DBに移動。
souce コマンドで突っ込みましょう。
souce souce_file_path

以上です。

2013年7月29日月曜日

2013年7月17日水曜日

2013年7月16日火曜日

YiiFrameworkでPDFを作成

23:46 Posted by Unknown No comments
ほぼ公式サイトと同じ内容だけど、日本語化に対応させる必要があります。

公式サイトからyii-pdf-0.3.2.zipをダウンロードし、/protected/extensionsにyii-pdfとし配置。
また、今回はmPDFを使用するので、公式サイトからmPDF version5.7をダウンロード。
/protected 配下にvendorsディレクトリを作成し、ダウンロードしたファイルをmpdfとリネームして配置した。

/protected/vendors/mpdf

/protected/config/main.php に以下の内容を追加。

'ePdf' => array(
    'class'         => 'ext.yii-pdf.EYiiPdf',
    'params'        => array(
    'mpdf'     => array(
        'librarySourcePath' => 'application.vendors.mpdf.*',
        'constants'         => array(
            '_MPDF_TEMP_PATH' => Yii::getPathOfAlias('application.runtime'),
        ),
        'class'=>'mpdf', // the literal class filename to be loaded from the vendors folder
        )
    ),
),

日本語に対応させるために、mpdf.phpを編集。
1146行目の以下の内容をコメントアウト。

/* if (preg_match('/([\-+])aCJK/i',$mode, $m)) {
preg_replace('/([\-+])aCJK/i','',$mode);
if ($m[1]=='+') { $this->useAdobeCJK = true; }
else { $this->useAdobeCJK = false; }
}*/

また、以下の1行を追加。

$this->useAdobeCJK = true;

これでOK。

Controller側

$model = $this->loadModel();
$mPDF1 = Yii::app()->ePdf->mpdf();
$mPDF1 = Yii::app()->ePdf->mpdf('ja', 'A4');
$mPDF1->WriteHTML($this->renderPartial('index', array('model'=>$model), true));
$mPDF1->Output();

これでPDFが作成される。



2013年7月11日木曜日

スマホ用画像の圧縮について

14:33 Posted by 匿名 No comments
サイトのレスポンスの良さ、これは特にスマートフォンサイトでは求められてくる部分だと思います。

画像のクオリティを許容範囲まで維持しつつ、ぎりぎりまで画像容量を減らす。

そんな作業にばっちりのサイトを見つけました。

PNG Minimizer

300kの画像が50kぐらいまで容量落ちます。

すごいツールです。感謝。



2013年7月10日水曜日

ubuntuのapt-getとaptitudeの違い

23:28 Posted by 匿名 No comments
aptitudeで構築したサーバとapt-getで構築したサーバが混在してきて、気持ち的に超めんどくさくなったので調べました。

apt-getとaptitudeの違い

とてもわかりやすい解説
2.2.1. apt-get/apt-cache と aptitude の比較

aptitudeの方がapt-getより便利にパッケージの依存関係を解消してくれるみたいですが、
メモリの消費量が多く、重いとのこと。
あとaptitudeでエラーが出るようだったら、apt-getを使うようにと書いてあります。
それで最も大事な事は、
apt-getとaptitudeはlenny以降混在OK!
との事。

なるほど。すっきりした



2013年7月9日火曜日

gitのブランチのpushで本番環境とテスト環境への反映を切り替える

11:27 Posted by 匿名 , No comments
gitの自動デプロイの話

[作業目標]
pushされたものに対して、
branchで判別して処理を分岐、
テスト環境、本番環境へのデプロイを自動化します

レモートのbareリポジトリの直下にhooksというディレクトリが生成されているので、中身を見ます。

pushに対して処理する時は、
post-receive
post-update
というファイルを作ってその中にシェルスクリプトを書いて処理します。

処理の順序は、
1. post-receive
2. post-update
の順番で処理されます。

それぞれのファイルの使い方は、

branchによる分岐が無い場合、
post-receive に処理を記述。

branchによる処理分岐がある場合、
post-update に処理を記述。
(分岐しない処理もpost-updateにはかけます)

今回はbranchで処理を分岐するのでpost-updateに処理を記述する。

[概要]
git push origin master => テスト環境のみに反映
git push origin master:product => 本番・テスト両方に反映

[前提]
本番・テスト環境にgit のリポジトリを生成済

[注意]
それぞれの環境がpullする際のディレクトリ構造は適宜に変更してください
作成したpost-update, post-receive は かならず実行権限を与えてください(これで結構はまりました)

#!/bin/sh
#ブランチ名の取得
branch=$(git rev-parse --symbolic --abbrev-ref $1)
# 本番・テスト環境へ反映
if [ "$branch"  = "product" ]
then
        cd /home/product_user/public_html
        git --git-dir=.git pull ../repo/repo.git product:master
        # テスト環境にも反映
        cd /home/test_user/public_html
        git --git-dir=.git pull ../repo/repo.git product:master
        # リモートのbareリポジトリのmasterブランチとproductブランチを入れ替える
        cd /home/repo_user/repo/repo.git
        git --git-dir=../repo.git symbolic-ref HEAD refs/heads/product
        git --git-dir=../repo.git branch -d master
        git --git-dir=../repo.git branch -m product master
fi

# テスト環境のみへ反映
if [ "$branch" = "master" ]
then
        cd /home/test_user/public_html
        git --git-dir=.git pull ../repo/repo.git master
fi

exec git update-server-info


[ちょっと補足説明]
●bareリポジトリはディレクトリ自体が、○○.gitとなっていて、内部に.gitファイルと持ちませんので、
git --git-dir=../repo.git symbolic-ref HEAD refs/heads/product
として、gitディレクトリにrepo.git自身を指定してgit 命令を実行しています。

●bareリポジトリのbranchの切り替えはcheckoutが使えない
bareリポジトリはworking treeではないらしく、checkoutつかってブランチを切り替えようとするとエラーがでます。
そこで、直接参照を切り替えています。
git symbolic-ref HEAD refs/heads/product
これでbareリポジトリのmasterブランチからproductブランチにcheckoutする事が出来ました。


2013年7月8日月曜日

EC2で標準時間の変更(UCT -> JST)

18:55 Posted by 匿名 No comments
標準ではUCTに設定されています。

それをUCTかJSTに変更する場合、

# 初期設定はUTC
$ date
Mon Jul  8 8:31:49 UTC 2013
 
# 日本の zoneinfo をコピー
$ sudo cp /usr/share/zoneinfo/Japan /etc/localtime
 
# 確認
$ date
Mon Jul  8 17:31:49 JST 2013

webのソースをコピペする場合

10:46 Posted by 匿名 No comments
コピペしたものに改行が含まれている場合、

設定ファイルが読み込めない場合があるので要注意

vsftpdでpasv_modeが動かなくてvsftpd.confを見ても異常なし。

もしかしたらコピペした際の改行コードが影響して、
その行を読み込めてないかもしれないと思って、
その行をvimで直接手打ちしてみたら、pasv_modeが見事通りました。

webからソースをコピペして、それをvimで貼り付けたりする場合、注意が必要です。


2013年7月6日土曜日

git fetchの使い方

19:03 Posted by 匿名 No comments
備考録です。
参考:transitive.info - git fetch 使い方

■リポジトリから変更を取得してマージしない

○マージしないで変更を取得だけしたい場合
git fetch

○細かく制御したい場合は引数を与える
git fetch  


■リモートリポジトリから変更を取得する

○リモートリポジトリ remote_rep から変更を取得するには
git fetch remote_rep

○すべてのリモートリポジトリから変更を取得するには「–all」オプション
git fetch --all


■他のリポジトリのブランチを取得してローカルのブランチにする

にあるブランチ branch を 取得し、ローカルのブランチ local_branch として保存する
git fetch git://example.com/rep.git branch:local_branch


■fetch で取得したコミットを扱う

git fetch で入手したコミットの先頭は FETCH_HEAD で扱える。

○ログを見る
git log FETCH_HEAD

○diffをとる
git diff FETCH_HEAD

○調べて問題がなければマージ
git merge FETCH_HEAD

phpでcurlを有効にする

16:57 Posted by 匿名 No comments
Call to undefined function curl_init()ってエラーが出たらcurlが有効になっていません。

cURLはカールって読みます。

そもそもcURLって何か?
====================
PHP PRO: CURLのセッションを引き継ぐ方法
WebサイトのHTML情報を取得する際にcurlを使用することがあります。curlとはWebブラウザのコマンドライン版のようなもので、与えられたコマンドを元にページ情報を取得する機能です。curlを使用すれば、ログインフォームにPOSTでデータを渡してログイン 処理を行い、ログイン後のページ情報を取得するようなことも可能です。
====================
コマンドラインからのURL=>ページ情報の取得に使うということですね。

インストールコマンド
$ sudo apt-get install php5-curl

使う場合はphp.iniに
extension=curl.so
を追記。

セッションを引き継いで、ログイン後のページ情報を抜き取る事まで出来てしまうようですね。


2013年7月2日火曜日

apache2でphpを有効にする

4:14 Posted by 匿名 No comments
AddTypeとかをhttpd.confに書き込むんではなく、 /etc/apache2/mods-available/php5.confの

<ifmodule mod_userdir.c="">
    <directory home="" public_html="">
#        php_admin_value engine Off ←この行をコメントアウト!
    </directory>
</ifmodule>

です。

2013年6月28日金曜日

sites-availableでの設定注意点

16:39 Posted by 匿名 No comments
デフォルトのサイトを例えばsite_defaultとかで設定を作っていて、

その中でServerNameに何も指定していないVirtualHostの設定があったら、 他の設定ファイルがうまく読み込めなくなります。

そもそも一つの設定ファイルに複数のvirtualドメインの設定を書く事自体がありか、無しかわかりませんが、

新しいサブドメインの設定をanother_siteに書いていたとして
¥ a2ensite another_site
としても、
もともとのsite_defaultにServerNameなしのVirtualHost *:80 の設定があると、 site_default と another_site の 共存ができない(設定がかぶっているので)ので
apacheにアクセスが出来なくなります。

要するに

ServerNameなしのVirtualHost *:80 の設定

はサブドメイン使う場合は消しときましょう。

vsftpdでパッシブを許可する設定

1:09 Posted by 匿名 No comments
手順

======================
1./etc/vsftpd.confに追記
2.portを開ける(今回はaws)
======================

1./etc/vsftpd.confに追記
pasv_enable=YES
pasv_min_port=60000
pasv_min_port=60010


pasv_enable=YESについてはデフォルトらしいけど一応書く。


2.portを開ける(今回はaws)
あとはawsでセキュリティグループのportを開けるだけです。



楽ちんね。

2013年6月26日水曜日

SSLの実装

23:31 Posted by 匿名 , No comments
Rapid SSLを実装

■CSR情報の生成

今回は/etc/apache2/sslに作成
Rapid SSLのHOW TO ページ
mkdir csr key crt ca
パスフレーズありと無しが選べるけど、ふつうは無しでいいと思う。
domainname.keyはそれぞれのドメインに当てはめる事
# openssl genrsa -out ssl/key/domainname.key 2048[Enter]
または、
# openssl genrsa -out ssl/key/domainname.key 4096[Enter]

生成
# openssl req -new -key ssl/key/domainname.key -out ssl/csr/domainname.csr[Enter]
生成された内容確認
# openssl req -noout -text -in ssl/csr/domainname.csr[Enter]


■CSR情報を業者に送信
WHOIS情報に登録あるメールアドレスか
admin@domain
webmaster@domain
宛にしか証明書が送られてこない。
↑先にメールサーバを立ててしまうのが吉。

■送られてきた証明書をサーバーに登録
メール内容
############################################################
Your RapidSSL SSL Certificate Is Below
############################################################
この部分がサーバ証明書
-----BEGIN CERTIFICATE-----
dasutoajrlkalfjalfjakj.....
-----END CERTIFICATE-----

############################################################
Required Intermediate SSL Certificates (CA) Are Below
############################################################
この部分が中間証明書
-----BEGIN CERTIFICATE-----
kjfdalkjfladatoaljllajflaf...-----END CERTIFICATE-----

コピペでサーバ証明書(domainname.crt)と中間証明書(domainname.cacert)を作る
それぞれ
-----BEGIN CERTIFICATE----- と -----END CERTIFICATE----- を含める
普通にエディタで貼り付けて生成

FTPでupload

/etc/apache2/ssl のさっき作ったディレクトリに保存+chown root:root
パーミッションは多分655


■apacheのsites_availableにssl用のサイト追加
default_ssl を バックアップ
default_sslを元に証明書、中間証明書のパスを書き込む
SSLCertificateFile     /etc/apache2/ssl/crt/domainname.crt
SSLCertificateChainFile   /etc/apache2/ssl/ca/domainname.cacert
SSLCertificateKeyFile  /etc/apache2/ssl/key/domainname.key

apache再ロード
確認してアクセスして終わり