kikukawa's diary

都内で活動するシステムエンジニアが書いてます。 興味を持った技術やハマったポイント、自分用メモをつけてます。 最近はweb中心

Nginxで画像のアップロードに失敗する(413 Request Entity Too Large)

Nginx + passenger + Rails
画像アップロード機能を作っていた時に、
下記のエラー(ブラウザのコンソールに表示)に遭遇しました。

413 Request Entity Too Large

原因は、Nginxが受け取れるクライアントからの
リクエストのbodyサイズが小さかったこと。
その値を決めるのがclient_max_body_sizeで、
デフォルト1Mまでのようです。
1Mだと、大きめの画像はアップロードできませんでした。
以下のようにserverディレクティブに書きます。

server {
  listen 80;
  server_name localhost;
  access_log  logs/access_log  main;
  error_log  logs/error_log;
  client_max_body_size 5M;
  location / {
    root /path/to/doc_root;
  }
  error_page  403 404 500 502 503 504  /404.html;
  location = /404.html {
      root   html;
  }
}

参考 参考

Atomのスニペットのscopeの調べ方 Windows編

Atomスニペットを登録するときは
下記のような形式でcsonを書いていきます。

'.source.js':
  'Snippet Name':
    'prefix': 'hello'
    'body': 'Hello World!'

このとき、.source.jsに当たる部分を各言語別に何を記載すればよいか
分からないことが多いのですが、その調べ方です。
Windowsでは

ctrl-alt-shift-p

でした。

Log Cursor Scopeというコマンドらしいです。
もしくは、setting view の各言語の設定のscopeを見ると分かりやすいです。
Installed Packegesのところで「language php」などと調べたい言語を指定して絞込みます。

f:id:devillikeaangel:20150729021455j:plain

その後、対象のパッケージを選択すると、各言語の設定画面が表示されます。
表示された画面のScopeという項目を確認すると、指定すべき文字列が分かります。

f:id:devillikeaangel:20150729021502j:plain

参考

show slave statusがEmpty

自分用メモ

mysqlレプリケーション設定をするのに、
my.cnfにレプリケーションの設定を記述して立ち上げたら、
show slave statusEmpty set
を返してきました。
masterでダンプを取得して、それを復元したslave用データベースに レプリケーション設定しようとしたときのお話です。

mysql> show slave status;
Empty set (0.00 sec)

エラーログを見てみると

[Warning] 'for replication startup options' is deprecated and will be removed in a future release. Please use ''CHANGE MASTER'' instead.

CHANGE MASTER TO MASTER_HOST = 'master_hostname', MASTER_USER = 'user_for_replication', MASTER_PASSWORD = 'password_for_replication';

とWarningが出ていました。
下記手順で、SQLを発行します。

一応slave止める

mysql> stop slave;

SQL実行
MASTER_LOG_POSはdumpファイルの先頭に書いてある

# head -n 30 dump.sql
-- MySQL dump 10.13  Distrib 5.1.58, for unknown-linux-gnu (x86_64)
--
-- Host: localhost    Database: 
-- ------------------------------------------------------
-- Server version       5.1.58-log

/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES binary */;
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
/*!40103 SET TIME_ZONE='+00:00' */;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;

--
-- Position to start replication or point-in-time recovery from
--

CHANGE MASTER TO MASTER_LOG_FILE='master-bin.000002', MASTER_LOG_POS=999;
mysql> CHANGE MASTER TO MASTER_HOST = 'master_hostname', MASTER_USER = 'user_for_replication', MASTER_PASSWORD = 'password_for_replication',  MASTER_LOG_FILE='master-bin.000002', MASTER_LOG_POS=999;

確認

mysql> show slave status;

Can't open and lock privilege tables

自分用メモ

mysqlの起動時に

Fatal error: Can't open and lock privilege tables: Table 'mysql.user' doesn't exist

というエラー出て怒られた。
/etc/my.cnfに対して、
/path/to/project/etc/my.cnfという
シンボリックリンクを貼っていたのだが、
シンボリックリンクの参照先を移動してしまったため、
再起動に失敗してた。