さくらインターネット


さくらのvpsを借りたらやること

セキュリティの設定
-------------------------------------------------
1.一般ユーザーを追加して、sudo で root権限を与えられるようにする
参考ページ

2.rootでのログインを禁止
参考ページ

3.ssh のポート番号を 22 から変更

iptables の変更も忘れずに!

参考ページ

4.鍵認証の設定

参考ページ
※authorized_keys のパーミッションを 600 にしないとログインできないので注意!

5.その他の設定も次のサイトのとおり
参考ページ

-------------------------------------------------

ftpクライアントからファイルをアップロード
-------------------------------------------------
ffftp が基本的に sftp 接続できないので fileZilla を使った。

fileZilla でサーバーに繋がったのにアップロードするとエラーになった。公開フォルダの所有者が root なのに、ほかのユーザーでログインしたのが原因。公開フォルダの所有者を変更する。
参考ページ
-------------------------------------------------

さくらサーバーの503エラー対策

503エラーが頻発してアクセス制限された。

サーバーコントロールパネルのリソース使用状況
-------------------------------------------------
2017/xx/xx php.cgi の過負荷により、CGI/PHPが制限されています。
-------------------------------------------------

サーバーのエラーログを確認すると AccessExceededNumber がたくさんある。AccessExceededNumber は、サーバ側のアクセス数上限設定を越えているという警告。

サーバーコントロールから見られる利用統計を確認するとbingbot(msnbot)のアクセスが以上に多い。

対策1

robots.txt に記述
-------------------------------------------------
User-agent:bingbot
Crawl-delay:30
-------------------------------------------------

対策2

Bingウェブマスターツールで、クロールの頻度を調整。

参考サイト

さくらでphp ファイルを .html で動かすため.htaccessがやってること

.htaccess の中身
-------------------------------------------------

#スラッシュ(/) で終わるURLにアクセスがあったときのアクセスの順番。
#デフォルトは index.html。
#index.html index.php 共にない場合、.ht を見に行き、Forbidden(403) と表示される。
#最後に .ht を置くことで ディレクトリの構造を見せない。

DirectoryIndex index.html index.php .ht


#このバイナリファイルで php のバージョンが決まる
#myphp-scriptという種類のファイルにアクセスがあったら /php.cgiで処理する

Action myphp-script /php.cgi


#.phpと.htmlで終わるファイルをmyphp-scriptという種類とする

AddHandler myphp-script .php .html
-------------------------------------------------

参考ページ

【さくら】pearのCache_Liteでキャッシュする

PEAR ライブラリの Cache_Lite でキャッシュする方法
サンプルスクリプトも含めてこのページがわかりやすかった

サンプルスクリプトもほぼそのまま
----------------------------------------------------------------
<?php

// クラス読み込み
require_once('Cache/Lite.php');

// IDのセット
//$cache_id = $_SERVER["REQUEST_URI"]; //こんなんでもいい
$cache_id = '123456';
// オプション
$options = array(
//さくらの場合、/tmp/はホームディレクトリより上にあるがキャッシュは保存できる。ただ他ユーザーと共有なのでホームディレクトリ以下に保存するほうがいいと思う
// 'cacheDir' => '/tmp/', //キャッシュ保存先
'cacheDir' => '/home/acount_name/tmp/', //共有サーバーなのでホームディレクトリ以下。フォルダは作って事前に作る必要がある
'caching' => 'true', // キャッシュを有効に
'automaticSerialization' => 'true', // 配列を保存可能に
'lifeTime' => 10, // 10(生存時間:10秒)
'automaticCleaningFactor' => 200, // 自動で古いファイルを削除(1/200の確率で実行)
'hashedDirectoryLevel' => 1, // ディレクトリ階層の深さ(高速になる)
);

// オブジェクトのnew
$cache = new Cache_Lite($options);

// キャッシュデータがあるかどうかの判別
if ( $cache_data = $cache->get($cache_id) )
{
echo "【キャッシュ使用】
";
$buff = $cache_data;
}
else
{
// キャッシュデータがない。APIからデータを読み込む処理
// データ取得処理ここから
// ……………………… $read_data にデータを入れておく
$read_data = date('Y/m/d H:i:s');
// データ取得処理ここまで

echo "【キャッシュ未使用】
";
$buff = $read_data;
//$cache->save($buff); ← $cache_id は省略できる?(明示したほうが安心)
$cache->save($buff,$cache_id); //キャッシュを保存
}
print_r($buff);
?>
----------------------------------------------------------------

さくらのサブドメインを別のサーバーで使いたい

やりたいこと

現在、さくらレンタルサーバーAでドメインとサブドメイン一個を運用中。ドメイン自体はお名前.comで取得したもの。

これにサブドメインをもう一個追加したい。追加先は新しく契約したさくらレンタルサーバーB。

現在
-------------------------
ドメイン ← さくらレンサバAで運用中
サブドメイン ← さくらレンサバAで運用中
-------------------------

こうしたい
-------------------------
ドメイン ← さくらレンサバAで運用中
サブドメイン ← さくらレンサバAで運用中
新サブドメイン ← さくらレンサバBに追加
-------------------------

さくらレンサバBにサブドメインの設定をして、ドメイン取得元のお名前.comでDNS設定をする。

参考:サブドメインの設定方法メモ

しかし、設定が完了し時間をおいても一向にサブドメインにアクセスできない。IEでアクセスしても「見つかりません」エラーが返ってくる。Chormeでアクセスするとエラー内容の詳細が分かった。

エラー内容
----------------------------------------------------------
The requested URL /php.cgi/index.html was not found on this server.
----------------------------------------------------------

ようは、新しいサブドメインのルートフォルダにphp.cgiがなかったからで、コピーしたら動いた。

参考:さくらインターネットでPHPを.htmlで動かす.htaccessの設定方法

さくらのmysqlサーバーのサブドメインを指定した別サーバーからもログイン可能。(レンサバAのmysqlサーバーにレンサバBからログインができる)

RewriteRuleで同じ名前のフォルダから同じファイルへのリダイレクトができない

top.html というファイルに http://example.com/top/ というurlでアクセスするために、.htaccess に以下の記述をした。

---------------------------
RewriteEngine on
RewriteRule top/$ /top.php
---------------------------

しかしリダイレクトがされない。なぜか?
おそらく RewriteRule の「top/$」の部分は、そういう名前のファイルがないことを条件に指定したパスへリダイレクトを行うからだと思う。だから、top.php という名前のファイルが存在している状態で「RewriteRule top/$」と指定すると top.php というファイルがあるからリダイレクトにならない。(本当なら「top/」のパターンに top.php はマッチしないはずだが)

ひとつわかったこと
転送先のURLのディレクトリに .htaccess ファイルがあると転送後にさらにリダイレクトが実行されるのではまる!!

top.php ファイルがルートディレクトリにない状態だとリダイレクトできる。
ただ、ファイルがないので404エラーになる。
↓↓
---------------------------
RewriteEngine on
RewriteRule top/$ /top.php
---------------------------

top.php ファイルがルートディレクトリにある状態でも以下の書き方ならリダイレクトする。

---------------------------
RewriteEngine on
RewriteRule top/$ /toppage.php
---------------------------

OR

---------------------------
RewriteEngine on
RewriteRule tap/$ /top.php
---------------------------

RewriteRule はいまいちよく分からない。

【さくら】php-mecabが突然使用できなくなった件

php-mecab を使用してるページがエラーしか表示されなくなった。

表示されたエラー
---------------------------------------------------
Fatal error: Class 'Mecab' not found in /home/username/www/xxxx.html on line 20
---------------------------------------------------

推測だが、さくらインターネットの PHP のバージョンが勝手に変更されたのが原因だと思う。phpinfo で mecab が表示されない。つまり、php-mecab が認識されていない。

解決用法、mecab および php-mecab を入れ直した。

入れ直し時に注意すること。

・mecab と php-mecab の古いファイルは念のため削除しておく。上書きされるかと思ったがうまくいかなかった。(これがうまくいかない原因だったかは不明)

・php-mecab のインストール時に php のバージョンを指定する箇所があるので新しいバージョンに合わせる。

・さくらにデフォルトインストールの mecab に問題があった場合解決が難しいので、自前の mecab を local 領域にいれて使用したほうが解決しやすい。(今回、デフォルト → 自前 に変更した)

KAGOYAのデータベースプランにターミナルでアクセス

KAGOYA のデータベースプラン(SSD 共有)の DB サーバーにアクセスする方法、覚書。

1.kagoya のサーバーコントロールにログインして、データベースをつくる。そのデータベースのアクセス許可にアクセス元の IPアドレス を登録する。自分の場合はさくら共有サーバーのIPアドレス。

2.ターミナルからさくらサーバーにアクセス。さくらサーバーからさくらの DB にアクセスするように kagoya の DB にアクセスする。

コマンド(さくらサーバーにログイン後)
----------------------------------------------------
% mysql -h mysql*****.kagoya.net -u ユーザーID -p --default-character-set=utf8
----------------------------------------------------

以後、さくらの DB を使っているのと同じように kagoya の DB を使用できる。

さくらでphpのバージョンを更新してもバージョンがあがらない

さくらインターネットの共有サーバーで、サーバーコントロールからphpのバージョンを更新したあと、phpinfo でバージョンを確認してもあがってなかった。

php.cgi を公開フォルダに置いていたので、新しいバージョンをコピーし直したらphpのバージョンはあがった。

さくらのmysqlで大きなファイルをインポートしたら後半のデータが文字化けした

サクラインターネットのレンタルサーバーをプラン変更したとき、古いデータベースサーバーから新しいデータベースサーバーにデータを移行する必要があった。古いデータを mysqladmin から sql ファイルとしてエクスポートして、新しいデータベースサーバーへはターミナルで接続して source コマンドでエクスポートした。

すると、いくつかあるテーブルの内、後半のテーブル内のデータが文字化けする現象に遭遇した。インポート中のターミナル画面を見ていると気になるエラー?を発見。

--------------------------------------------
Query OK, 870 rows affected (0.02 sec)
Records: 870 Duplicates: 0 Warnings: 0

ERROR 2006 (HY000): MySQL server has gone away
No connection. Trying to reconnect...

Query OK, 850 rows affected (0.02 sec)
Records: 850 Duplicates: 0 Warnings: 0
--------------------------------------------

いったんデータベースサーバーへの接続が切断されて、その後再接続が行われている。そして、その再接続後から文字化けが起こっている?

このエラーは、インポートするデータが大きすぎると起こるらしい。

自分でいじれるサーバーであれば、max_allowed_packet の値を上げることで解決できるようだが(参考)、さくらの自分のプランでは、my.cnf をいじることができないため通用せず。

mysql の文字コードを確認してみる。

//コマンド
-------------------------------
mysql> show variables like "chara%";
-------------------------------

+--------------------------+----------------------------------+
| Variable_name | Value |
+--------------------------+----------------------------------+
| character_set_client | ujis |
| character_set_connection | ujis |
| character_set_database | ujis |
| character_set_filesystem | binary |
| character_set_results | ujis |
| character_set_server | ujis |
| character_set_system | utf8 |
| character_sets_dir | /usr/local/share/mysql/charsets/ |
+--------------------------+----------------------------------+

utf8 のデータだが、設定されている文字コードは ujis が多い。文字コードを変更する最も一般的な方法は my.cnf を書き換えることだが自分のプランではできない。ターミナルで mysqlサーバーへログインするときに 文字コードを指定してみる。

//ターミナルで文字コードを設定
-------------------------------
mysql -u ユーザー名 -p -h ホスト名 --default-character-set=utf8
-------------------------------

//設定後
+--------------------------+----------------------------------+
| Variable_name | Value |
+--------------------------+----------------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | ujis |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | ujis |
| character_set_system | utf8 |
| character_sets_dir | /usr/local/share/mysql/charsets/ |
+--------------------------+----------------------------------+

character_set_database は use でデータベースを選択すると、データベースの文字コードになる。

//最終的にこうなった
+--------------------------+----------------------------------+
| Variable_name | Value |
+--------------------------+----------------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | ujis |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | ujis |
| character_set_system | utf8 |
| character_sets_dir | /usr/local/share/mysql/charsets/ |
+--------------------------+----------------------------------+

この状態で sql ファイルを source で実行したら文字化けは起こらなかった。

1 / 41234