Yuya Sato のアーカイブ

大量ファイルの転送

2016年11月30日

大量のファイルをリモートに転送する時に普通にscpなどで転送すると時間がかかります。 そこで一旦tarに圧縮して転送という方法も考えられますが、今度はtarの圧縮に時間がかかってしまいます。 リモートに直接ファイルを書き込み、リモートで展開するようにすると、無駄なI/Oを削減できます。 ``` $ tar -zc [path] | ssh remote-server "tar -zx -C [destination]" ```
続きを読む

knife soloで「Cannot find sub command for ‘solo’」というエラー

2016年11月9日

原因として2つのknifeコマンドが共存している状態にあるため、knifeからsoloサブコマンドが見えなくなってしまっているためエラーが発生します。 解決策として、 ``` sudo /opt/chef/embedded/bin/gem install knife-solo ``` などとして、soloが見えていない方にknife-soloをインストールすると解決します。
続きを読む

Webアクセス解析ツール3タイプ

2016年11月2日

Webサイトなどのアクセス解析をするツールは主に3つのタイプに分けることができます。 ### サーバログ取得型 サーバログ取得型は、apacheのアクセスログなどのログファイルに記録されたものからアクセス数や日時を解析するタイプです。 AWStatsやvisitorsなどといった解析ツールがこれに当たります。 ### Webビーコン型 Webビーコン型は、htmlに記述されたJavascriptのタグが動作することによってアクセスデータを解析
続きを読む

【PHP】パスワード付きzipファイルの生成

2016年10月26日

通常PHPでzipファイルを作成するときには以下のようにしてZipArchiveクラスを使用して作成すると思います。 ``` $zip = new ZipArchive(); $res = $zip->open('./zip/hoge.zip', ZipArchive::CREATE); if ($res === true) { $zip->addFile('hoge.png'); $zip->addFile('hoge.jpg');
続きを読む

mysql冗長化

2016年10月12日

mysqlをマスター・スレイブ構成にして冗長化を図るときには以下のような設定を行います。 ### マスター側の設定 /etc/my.cnfに以下を追加し再起動 ``` server-id = 1 log-bin = /var/lib/mysql/mysql-bin ``` レプリケーション用のユーザを作成し、replication slave権限を追加 ``` CREATE USER 'repl'@'(スレーブのIP)' IDENTIFI
続きを読む

sysstatによるログの確認

2016年10月5日

sysstatはサーバのLoadAverageやCPU使用率、メモリ使用率の監視を行います。sysstatによって得られたログはsarコマンドを用いて確認できます。 ### ログの種類 sysstatのログは/var/log/saディレクトリ内に保存されます。このディレクトリには大きく分けて以下の2種類のファイルが存在します。 * saXX: sarコマンドによって指定した項目を表示します。XXには日付が入ります。 * sarXX: saXXの情報を保存し
続きを読む

PHPでPGP・S/MIMEによる暗号化

2016年9月21日

問い合わせメールフォームなどでメール送信が発生する時、サイトはSSLに対応していてもメールが平文で送られてしまってはセキュリティ的に良くないので、PGPやS/MIMEを使用して暗号化することができます。 PGP・S/MIMEはメール文書の暗号化などに使われます。基本的なシーケンスは以下のようになります。 1. 平文を暗号化する際に、まず当該平文を圧縮する 2. セッション鍵と呼ばれる使い捨ての秘密鍵を作成し、共通鍵暗号方式で暗号化する 3. セッション鍵は受け
続きを読む

Postfixのキューにあるメールを確認する

2016年9月14日

Postfixのキューにあるメール一覧は以下のように確認できます。 ``` $ mailq -Queue ID- --Size-- ----Arrival Time---- -Sender/Recipient------- 2A20B41858* 1641 Wed Sep 14 11:22:22 support@example.jp s1t5y3y1@gmail.com
続きを読む

NFDをNFCに変換

2016年9月8日

Macでは濁点などの日本語はNFD形式(本体の文字と濁点を別々の文字としエンコードする形式)で扱われるのに対して、Windowsなど他のOSではNFC形式(本体の文字と濁点を1つの文字としてエンコードする形式)で扱われるので、表示のされ方が異なります。 そこで、Mac・Windows両方で統一した表示のされ方になるようNFD形式をNFC形式に変換します。 PHPではNormalizer::normalize()関数を使い変換します。 (php-intlを入れてい
続きを読む

Postfixメール転送設定

2016年9月7日

Postfixでメールを転送するための設定です。 sendmailでは/etc/aliasesに転送先を記述します。以下のような記述があった場合root@example.com宛のメールをtensou@example.comに転送します。 ``` root: tensou ``` また、root@example.com宛にメールが来たら任意のプログラムを実行する設定記述することもできます。以下ではroot宛にメールがあった場合sample.phpプログラムを
続きを読む

SSL/TLS周りまとめ③【Webサーバへの設置】

2016年9月1日

Webサーバを構築する時にSSLを有効化する設定を行うことが良くあります。 しかし、サーバの鍵を作って、証明書を作って、それをWebサーバのconfファイルに設定してなどとしていると、「証明書」「電子署名」「.pem」「.csr」「.crt」など色々な用語が出てきてわけが分からなくなってしまいます。 そこでSSL/TLS周りの知識の整理として今回はWebサーバへの設置についてまとめていきます。 # SSL/TLSプロトコル SSL/TLSはインターネット
続きを読む

SSL/TLS周りまとめ②【PKI(公開鍵基盤)】

2016年8月31日

Webサーバを構築する時にSSLを有効化する設定を行うことが良くあります。 しかし、サーバの鍵を作って、証明書を作って、それをWebサーバのconfファイルに設定してなどとしていると、「証明書」「電子署名」「.pem」「.csr」「.crt」など色々な用語が出てきてわけが分からなくなってしまいます。 そこでSSL/TLS周りの知識の整理として今回はPKI(公開鍵基盤)についてまとめていきます。 # PKI(公開鍵基盤) **PKI(公開鍵基盤)**は公開
続きを読む

SSL/TLS周りまとめ①【公開鍵暗号化・電子署名】

2016年8月31日

Webサーバを構築する時にSSLを有効化する設定を行うことが良くあります。 しかし、サーバの鍵を作って、証明書を作って、それをWebサーバのconfファイルに設定してなどとしていると、「証明書」「電子署名」「.pem」「.csr」「.crt」など色々な用語が出てきてわけが分からなくなってしまいます。 そこでSSL/TLS周りの知識の整理として今回は公開鍵暗号化・電子署名についてまとめていきます。 公開鍵暗号化・電子署名はどちらも秘密鍵と公開鍵のペアを使いますが、
続きを読む

WordPressでbasic認証を導入する際の注意点

2016年8月26日

ブルートフォースアタックなどでWordpressの管理画面に不正ログインされる危険性があります(https://wpdocs.osdn.jp/%E3%83%96%E3%83%AB%E3%83%BC%E3%83%88%E3%83%95%E3%82%A9%E3%83%BC%E3%82%B9%E6%94%BB%E6%92%83)。 安全性を高める1つの手段として管理画面にbasic認証をかけ2重認証化することなどが考えられます。basic認証のために以下のような.htacce
続きを読む

サブシェル

2016年8月24日

コマンドを()で括ることによって、元のシェルは子プロセスを生成しサブシェルとしてコマンドを実行することができます。 サブシェルは子プロセスとして実行されるので親の環境変数などを変更したくない時など様々な使用法があります。 ### 一時的に環境変数を変更する サブシェル内では環境変数をenにし、親シェルはそのままにできます。 ``` $ (LANG=en; man 1 printf) ``` ### telnetコマンドを実行する telnetな
続きを読む

mod_rewriteで特定のIP以外は指定のページに飛ばす

2016年8月19日

mod_rewriteを使い、特定のIPからアクセスした場合には通常通りページを表示し、それ以外のIPからのアクセスはメンテナンスページなど特定のページに飛ばせるようにします。 httpd.confまたわ特定のサイトの.htaccessに以下を追記します。 ``` RewriteEngine On RewriteCond %{REMOTE_ADDR} !^111\.222\.333\.444k$ RewriteRule .* /maintenan
続きを読む

CentOS7のサービス管理

2016年8月17日

CentOS7になりサービスの管理システムが変更されたため、細かな部分で7以前のバージョンのCentOSと異なる点が出てきました。 ### サービスの起動・終了 7以前では ``` $ /etc/rc.d/init.d/httpd start $ /etc/rc.d/init.d/httpd stop ``` とやっていましたが、CentOS7では以下のようにします。 ``` $ systemctl start httpd $ syst
続きを読む

[Shell]指定した特定の行だけ出力する

2016年8月12日

ファイルなどから?行目だけと指定した行の部分を出力するには以下のような方法があります。 5行目を出力 ``` $ sed -n 5p ``` また以下でも可能です。 5行目を出力 ``` cat | head -5 | tail -1 ```
続きを読む

yumのErrno14

2016年8月5日

yum updateをしようとした所、以下のようなエラーが出た。 ``` ... http://ftp.riken.jp/Linux/centos/6.7/os/x86_64/repodata/repomd.xml: [Errno 14] PYCURL ERROR 22 - "The requested URL returned error: 404 Not Found" 他のミラーを試します。 ... ``` これはyumが参照しているリポジトリが古い
続きを読む

useraddコマンド

2016年8月3日

useraddコマンドはユーザアカウントを作成するコマンドです。以下のようなオプションが存在します。 * -c : コメントを追加する * -d : ホームディレクトリのパスを指定する * -u : UIDを指定する * -g : GIDを指定する * -s : ログインシェルのパスを指定する * -p : パスワードを指定する -pオプションではユーザのパスワードを指定することが出来ますが、このオプションを用いる場合パスワードを
続きを読む