さくらインターネット


【さくらVPS】PHPセッションファイルの保存場所

さくらVPS に PHP をインストールしたときにPHPセッションファイルの保存先と保存先の指定方法について調べたときの覚書

セッションファイルの保存場所は、 php.ini の session.save_path ディレクティブで指定できる。しかしデフォルトではコメントアウトになっていた。

その状態で phpinfo() を実行すると、 session.save_path の右カラムは no value になっている。

savepath

ターミナルから phpinfo を見る場合
-------------------------------------------------
cat /etc/php.ini | grep session.save_path
-------------------------------------------------

実際のセッションファイルは左カラムに記載されているパスにある。

セッションファイルのあるパス
-------------------------------------------------
/var/lib/php/session
-------------------------------------------------

で、このパス(/var/lib/php/session)はどこで設定しているのかというと、php.conf ファイルになる。

-------------------------------------------------
cat /etc/httpd/conf.d/php.conf
-------------------------------------------------

php.conf 内の記述
-------------------------------------------------
php_value session.save_path "/var/lib/php/session"
-------------------------------------------------

セッションファイルの保存先を変更したいなら、php.ini の session.save_path のコメントアウトを外して有効にすればいい。

変更前
-------------------------------------------------
;session.save_path = "/tmp"
-------------------------------------------------

変更後
-------------------------------------------------
session.save_path = "希望の保存先パス"
-------------------------------------------------

さくらVPSで外部ホストからmysqlに接続する

さくらVPSで外部ホストからmysqlに接続するには、接続を許可するユーザーを作ればいい。

参考サイト
MySQLに外部ホストから接続できるように設定する

接続を許可するユーザーを作るSQL
-------------------------------------------------
grant all privileges on 接続を許可するDB名.* to new_user_name@"接続元のホスト" identified by 'password' with grant option;
-------------------------------------------------

grant → 付与。許諾する。mysqlで権限を付与する命令。

all privileges → 全ての権限を与える。

privileges → プリビレッジ。権限の意。

さくらVPSと同じドメインのメールを使う

さくらのVPSをメールサーバーにするよりさくらのメールボックスを利用したほうが簡単なのでその方法。

参考ページ
さくらのVPS-さくらのメールボックスでウェブサイトと同じドメインを使う
さくらメールボックス連結のVPSメールサーバーMX設定
さくらのナレッジ

メールの作成は、さくらのサーバーコントロールパネルから行う
メールアドレスの作成・変更・削除

さくら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 をインストール
-------------------------------------------------
-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
-------------------------------------------------

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

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

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

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

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

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

お名前側で設定する場合

さくら側で設定する場合

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

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

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

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

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

iptables の変更も忘れずに!

参考ページ

4.鍵認証の設定

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

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で複数の独自ドメインを運用する

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);
?>
----------------------------------------------------------------

1 / 41234