what else?

エンジニア、UI、UXとかについて、備忘録を走り書いたもの

nginxサーバでgzipの設定する方法とその確認

nginxサーバにgzip圧縮を設定してみました。
画像、css、js、その他ファイルなどの静的コンテンツの容量を減らして、サーバのリクエスト量を減らしちゃうぜってやつです。

confファイルの設定

confファイルに以下のように書く。
nginx.confでもいいし、virtualhostを設定した別個のconfファイルでもOK。

各場所はserver{〜}の中。

server {
    gzip on;
    gzip_types image/png image/gif image/jpeg text/javascript text/css;
    gzip_min_length 1000;
    gzip_proxied any;
    gunzip on;
}

それぞれの意味とか

gzip on;

まずはgzipを使えるようにする。

gzip_types image/png image/gif image/jpeg text/javascript text/css;

対象となるファイルの設定。
画像ファイル(png,gif,jpg)とjs、cssを対象にしました。

gzip_min_length 1000;

gzip化する画像の最低ファイル容量の指定。
もともと軽い画像だと、圧縮する方に時間がかかってしまい、結果として遅くなっちゃいます。
とりあえず1000で指定。

gzip_proxied any;


リクエストの種別にgzipするかを指定できる。
今回は全てのリクエストを対象にするので、anyを指定。

gunzip on;

gzipに対応していないブラウザ向けの処理。

設定後は再起動

sudo systemctl restart nginx

gzipが有効かどうか確認する方法

gzipを設定したサーバの画像URLを指定して、以下のコマンドを実行。

curl -I -H 'Accept-Encoding: gzip,deflate' https://ドメイン/画像のパスとファイル名

リクエストに

Content-Encoding: gzip

とあればgzip化が成功してます。

さくらVPSのcentos7でnginx+php-fpmを入れたが、php-fpmが動かなかった場合の対処方法

新しくサーバをつくることになり、さくらVPSを契約した。
さくらVPSはこれで2つ目。いろいろ使ったけど、なんだかんだ安定してるよね。

いつのまにやらcentos7が標準インストール可能になったので、今回契約した新サーバもcentos7にしてみた。

そのサーバで、php7+nginxの環境をつくっている最中にphp-fpmが動かなくて、ハマった。

php-fpmが動かない

nginx.confは順調に起動できたけど、
php-fpmのwww.confの一通りの設定を終えて、起動すると...

$sudo systemctl start php-fpm
Failed to start php-fpm.service: Unit not found.


あれ、serviceがないって言われる。
システムの設定ファイルが置いている場所をみてみると

$ls /etc/systemd/system/

リストの中に下記が...

drwxr-xr-x 2 root root 6 1月 1 23:59 php70-php-fpm.service.d

なぬ、そもそもphp-fpmじゃなかった。
「php70-php-fpm」でした。

というわけで下記で実行。

$sudo systemctl start php70-php-fpm

こちらのコマンドで無事に実行できました。

php70-php-fpmに合わせて書き換える

ちなみに、php-fpm.sockのパスも違いました。

/var/run/php-fpm.sock

ではなく

/var/run/php70-php-fpm.sock

でした。
nginxとphp-fpmのconfに書いてある.sockファイルのパスも上記に直しました。

これで無事に動いた。
なんでphp70だったんだろ。

さくらVPSを新規で契約後、SSHでログインできない場合の対応

先日、新規サーバとしてさくらVPSを契約しました。
もともと1Gのサーバを使ってたんだけど、追加でもう一台2Gのプランで借りました。


 
VPSっていろいろあるんだけど、ネームバリュー的にさくらにしました。

パパっと入力を終えて、クレカ支払いにして2週間のお試し期間をもらう。
契約完了後すぐに、サーバのIPアドレスが送られてきました。

さっそく、ターミナルからSSH

$ssh root@XXX.XX.XXX.XX
ssh: connect to host XXX.XX.XXX.XX port 22: Connection refused

あれ、ログインできない。

お試し期間だとSSHできないとか?
そうだとしたら、VPSサーバのお試しの意味ないだろJK。

いろいろ調べてみると、
契約当初かつお試し期間はつながりにくいらしい

というわけで対処法を2つほど紹介。

再起動しよう

さくらVPSの管理画面から再起動しましょう。

コンソールのURLはこちら
https://secure.sakura.ad.jp/vpscontrol/


管理画面のコンソールからiptableで22番を開放

再起動しても治らない場合はこちらの方法で。
ちなみに、僕も何度か再起動してもダメだったので、こちらの方法でした。

さきほどの管理画面にログインして、コンソールを開きましょう。

バージョンは何でもOK。

$iptables -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT

ログインしたら上記コマンドを実行。

$service iptables restart

実行後は、iptablesをリスタート。

$ssh root@XXX.XX.XXX.XX

これで、改めてローカルのターミナルからSSHしたらいけました。
めでたしめでたし。