さくらインターネット


さくらvpsでphpmyadminをインストールする

さくらのvpsで phpmyadmin をインストールしたときの覚書

phpmyadmin は 下記ページの後半を参考にすればいい。

さくらのナレッジ Webサーバーを構築しよう(2)

しかし説明のとおりインストールすると、標準でインストールされる php5.3 向けの phpmyadmin がインストールしようとしてエラーが出て完了しない。

php5.6 だとこれではインストールできない
-------------------------------------------------
yum install phpmyadmin
-------------------------------------------------

yum install phpmyadmin で依然入れたバージョンを削除するなら簡単にアンインストールできる
-------------------------------------------------
yum remove phpmyadmin
-------------------------------------------------

なので、php のバージョンに合った phpmyadmin をインストールする

php5.6 で yum を使って phpmyadmin をインストール
-------------------------------------------------
yum install -y --enablerepo=remi,remi-php56 phpMyAdmin
-------------------------------------------------

【さくらvps】CentOS6 で php を update

標準リポジトリから php をインストールしたら php5.3 だったので、php5.6 にした時の覚書

現在有効なリポジトリの一覧を表示

コマンド
-------------------------------------------------
yum repolist all
-------------------------------------------------
status が enabled となっているのが有効なリポジトリ

epel は有効になっていた

最新バージョンの php を手に入れるには Remi リポジトリを利用するのがいいらしいので、使えるようにする。

CentOS6系で Remi リポジトリをインストール
-------------------------------------------------
rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
-------------------------------------------------
以下ほぼこちら通り:CentOS6/CentOS7にPHP5.6/PHP7をyumでインストール

現在のPHPバージョンを確認
-------------------------------------------------
rpm -qa | grep php
php --version
-------------------------------------------------

現在のphp を削除(しなくても update されるけど念のため)
-------------------------------------------------
yum remove php-*
-------------------------------------------------

PHP5.6をインストール
-------------------------------------------------
yum install --enablerepo=remi,remi-php56 php php-devel php-mbstring php-pdo php-gd
-------------------------------------------------

php をインストールしたら php.ini の編集も忘れずに

ここを参考にphp.ini で4か所のみ設定する
---------------------------------------
mbstring.language
mbstring.internal_encoding
mbstring.detect_order = UTF-8,SJIS,EUC-JP,JIS,ASCII
expose_php ← on だとレスポンスヘッダーに php のバージョンが表示されてしまうので Off にする
---------------------------------------

自分の環境では以下の2つは設定変更しなかった
---------------------------------------
error_log ← 指定しなくてもサーバーに保存されるようなので指定しない
mbstring.http_input ← 非推奨なので設定しない
---------------------------------------

さくらレンタルサーバーからVPSへの引っ越し手順

さくらレンタルサーバーから vps への引っ越し手順の覚書

引っ越しをするときは、vps の設定をすべて済ませておくこと。php や mysql も使える状態になってから引っ越し作業に取り掛かる。設定に戸惑ってダウンタイムが長くなるのを防ぐため。

vps を借りてからの設定についてはこちら

お名前かさくらどちらかでネームサーバーを変更

共用サーバーを利用していた時はさくら側で設定が必要だったが、vpsの場合、お名前でもさくらでもどちらで設定してもいい

お名前側で設定する場合

さくら側で設定する場合
さくら側で設定する場合 参考2

さくら側で設定する場合、お名前側でさくらのネームサーバーのドメインを参照するネームサーバーとして登録しておく必要がある。
お名前側で一日前にネームサーバーをさくらに指定していた場合、その後さくらでゾーン設定すると実際にページが表示されるまで10分ほどかかった。(即時反映されるかと思ったが意外と時間がかかった)

さくら側で設定する場合、さくらレンタルサーバーでのネームサーバーの指定を解除しておく必要がある。その後二時間は再設定できないので、早く済ませたいならお名前側で設定するほうがいい。

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

セキュリティの設定
-------------------------------------------------
1.一般ユーザーを追加して、sudo で root権限を与えられるようにする
参考ページ
※初期設定でPort22が使えない場合は、SSHでログインできない。VPSコントロールパネルのコンソールからログインする
※最初ターミナルでログインしようとしたら、port22 が使えないってログインできなかった。yum update したからかお試しから本登録に変更したからログインできるようになった

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

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

iptables の変更も忘れずに!

参考ページ

4.鍵認証の設定

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

鍵認証を有効にしたらパスワード認証を無効にするのを忘れずに
詳細
パスワードを有効にしたらリスタート
-------------------------------
sudo /etc/init.d/sshd restart
-------------------------------

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

マルチドメインに対応するところで、/etc/httpd/conf.d/vhost.conf ファイルを作るのは、conf.d ディレクトリに .conf のファイルを作るとデフォルトで読み込まれるから。httpd.conf ファイルにそういう記述がされている。

httpd.conf の抜粋
-------------------------------------------------
# Load config files from the config directory "/etc/httpd/conf.d".
#
Include conf.d/*.conf
-------------------------------------------------

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

上の参考サイトでマルチドメインの設定をするとサーバーのIPアドレスでのアクセスができなくなるので、httpd.confを編集してIPアドレスでアクセスできるようにする。
さくらVPSで複数の独自ドメインを運用する

ServerAlias の記述を加えて、ドメインの www のありなしを統一する。www のリダイレクトは サーバーの設定ファイルか .htaccess で制御。
詳しくはこちらを参考
さくらVPSでwwwサブドメインのURLを統一(正規化)する

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 領域にいれて使用したほうが解決しやすい。(今回、デフォルト → 自前 に変更した)

2 / 512345