広角レンズの購入は良かった

イメージ
広角レンズの購入は良かった
 少し前に広角レンズを購入しました。
 撮影する際に広角レンズの必要性を感じていまして、6月に広角レンズを購入しました。

 今回、店舗撮影をする際に威力発揮。

 広角レンズならではの撮影がかなりできました。

 以前のレンズではかなり厳しかった画像を作り出すことができました。

店舗内の撮影に有効 広角レンズを利用した撮影において、一番威力を発揮したのは店舗内の撮影です。

 広い範囲を撮影できると言うことは、広く見せることができます。10mmの撮影をするとかなりの広範囲で撮影が可能です。

 広角レンズの特徴として、「手前のものはより大きく、遠くのものはより小さく写せる」という点があります。遠近感が強くなるわけです。
 この特徴が、店舗内の撮影において広く見せられる仕掛けになります。

屋外撮影に関しても 屋外撮影に関しても広角レンズを利用することで、いいあんばいでの写真が撮れた。


 と言うことで、北九州のソウルフード お好み焼き なにわ のホームページ制作を実施しました。

Dropbox API を利用してPHPでVPSサーバーのバックアップ手順

VPSのバックアップをどこにとるか?


 VPSサーバーには提供者側からバックアップの仕掛けが用意されていません。そう考えると、バックアップをどこかに取得する必要があります。
 以前は、違うブランドのVPSサーバーを借りて、そことrsyncさせる方法をとっていました。

 ただ、この方法だと弊社のサーバー管理方法では、一括バックアップを取得しようとするとrootアカウントでやり取りすることになってしまい、気持ち悪さを感じていました。

 今回、このブログで初めてコード埋込を実施しました。下記URLを参考にコード埋込をできるようにしました。
https://qiita.com/piro_erdes/items/f133e170a8cf6c10b449

Dropbox API 活用

 Dropbox APIを利用することでVPSサーバー内のプログラムを使って、Dropboxへ転送してます。

 弊社の場合、Dropbox Business Advancedを利用していますので、容量無制限でアップで利用できます。
 Dropboxを利用することで、世代管理も自動でやってくれます。
 また、APIコール数も月間で100万まで大丈夫のようです。

CURLを活用

 基本はCURLの機能で実現していますので、タイトルにPHPと入れていますが、基本的には特別なSDKなどは不要で、応用すれば他の言語でも可能だと思います。

Dropbox APIのAPP作成

手順1

まず、Dropbox APIを利用するためには
へアクセスして、右上にある「App console」ボタンを押します。
ログインしてない場合はログインを促されます。

手順2

Create app のボタンを押します。
すると、下記の様な画面が出てきます。
Businessアカウントなので、右にDropbox Business APIの選択肢も出てきますが、Business APIは「管理機能」での利用なので、今回は左側の普通のDropbox APIを選択します。

手順3

続いて、下記の選択をしますが、今回はバックアップというかuploadの機能だけですので、App folderだけで大丈夫と思います。

手順4

Name your appに名前を入れます。
なんか、他で利用されている名前は利用できないみたいですので、ユニークになるような名前を入れてください。
ここで入力された名前がDropbox内のアプリの下にできます。
最後に、I agree to・・・のチェックボックスに印を入れて「Create app」です。

手順5

ここまで完了するとAppの詳細画面が表示されます。
Setting内のOAuhth2にある「Generated access token」のところにあるGenerateボタンを押すとトークンが生成されますので、コピーしてメモってください。
これが、コード内のAPI KEYにあたります。

ここまでが、Dropbox側の準備です。

VPSサーバー側の準備

 弊社管理のVPSの場合、VPSサーバーに複数のVirtualHostを設定して、Linuxのユーザー単位で管理し、コンテンツはユーザーのホームディレクトリ内に置いて管理するように設定しています。
 ただ、それぞれのホームディレクトリに対してはRead権限はOtherに与えていますので、誰でも読むことはできます。
 ですので、Dropboxバックアップ用ユーザーを設定して、そのユーザーがバックアップを実施するように設定しました。
そうすることで、バックアップ用cronの設定も一括管理できます。

DropboxへアップロードするためのPHPソース

 $api_url = 'https://content.dropboxapi.com/2/files/upload'; //dropbox api url
 $token = '{API KEY}'; // oauth token
 
 $filename = $argv[1];
 $filerev = filemtime($filename);
 $headers = array('Authorization: Bearer '. $token,
  'Content-Type: application/octet-stream',
  'Dropbox-API-Arg: '.
  json_encode(
   array(
    "path"=> '/{Directory}/'. substr($filename,{ファイルまでの文字数}),
    "mode" => "overwrite",
    "autorename" => true,
    "mute" => false
   )
  )
 );
 
 $cu = curl_init($api_url);
 
 curl_setopt($cu, CURLOPT_HTTPHEADER, $headers);
 curl_setopt($cu, CURLOPT_POST, true);
 
 $path = $filename;
 $fp = fopen($path, 'rb');
 $filesize = filesize($path);
 
 curl_setopt($cu, CURLOPT_POSTFIELDS, fread($fp, $filesize));
 curl_setopt($cu, CURLOPT_RETURNTRANSFER, true);
 
 $response = curl_exec($cu);
 $http_code = curl_getinfo($cu, CURLINFO_HTTP_CODE);
 echo($response."\n");
 echo($http_code."\n");
 
 curl_close($cu);

こんな感じのソースになっています。1ファイルずつ処理するプログラムです。
コマンドラインでPHPを動かします。
最初はtarで圧縮して、転送させようかとも考えたのですが、ファイルサイズが大きくなる上に毎日すごい転送量になるので、1ファイルずつ処理するというやり方にしました。

コマンドラインは
> find /home/{hoge}/www/ -type f  | xargs -n 1 php backup.php

こんな感じで、まず一括バックアップを取得。

一度、全部バックアップを取得した後は
> find /home/{hoge}/www/ -type f -mtime -1 | xargs -n 1 php backup.php
として、前日に変更があったファイルだけを抽出しています。

上記をcronに記述して、夜間に動かすことでバックアップの取得を実施してます。

このPHPプログラムを利用して、同様にDBのダンプもバックアップしています。

今後の予定

今後は、このやり方でyumのログと/etc以下もバックアップしておきたいと考えてます。

コメント

このブログの人気の投稿

UTM(統合脅威管理)って邪魔で不要

AWSのS3をLinuxでマウントして、更にWindowsで利用

Google Maps APIの値上げ