さくらの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
-------------------------------------------------

参考ページ

動的に生成した要素に対してマウスオーバー(アウト)のイベントを起こす

動的に生成した要素に対してマウスオーバー(アウト)のイベントを起こすjQueryの記述

-------------------------------------------------------
$(document).on({
"mouseenter": function(){
$(this).removeClass("notouchstyle").addClass("touchstyle");
},
"mouseleave": function(){
$(this).removeClass("touchstyle").addClass("notouchstyle");
}
}, ".touch-res");
-------------------------------------------------------

参考サイト

【PHP】mysqlでselectしたデータの出力時に使う変数名に変数を使う

$get_datas['カラム名'];

↓↓↓

$get_datas[$culumn_name];

変数名をそのまま記述すればOK。可変変数は不要。

【javascript】ajaxを利用しない場合のローディング画像の出し方

ぐるぐる回るローディング画像の具体的な表示の仕方についてはこちらを参考

ajaxありの場合
-----------------------------------------------
JavaScriptdispLoading("処理中..."); //ローディング画像を表示するユーザー定義関数

//ajax処理

removeLoading(); //ローディング画像を消すユーザー定義関数
-----------------------------------------------

ajaxなしの場合
-----------------------------------------------
JavaScriptdispLoading("処理中...");

//javascript で描写が画面に反映されるタイミングは、関数の実行が終わってから。
//そのため、ローディング画面を表示させるために一旦ここで関数を終わらせる。
setTimeout(function() {

//時間がかかるjavascriptの処理(ajaxでない)。

removeLoading();
}, 0);
-----------------------------------------------

javascriptは、関数の実行中にページの書き換えは起こらない。関数の実行キューが空になって時点ではじめてページの書き換えが起こることに注意。

参考サイト

特定の文字列を含むファイルをサーバー内から探す

コマンド
-----------------------------------------------------
find ./ -name "*.*" -exec grep -l "tango_output" {} \;
-----------------------------------------------------

./ 現在のディレクトリ以下を指定

-name "*.*" .(ドット)を含むファイルをすべて検索

-exec find の検索結果ひとつひとつに指定したコマンドを実行する。-exec grep だと grep が実行される

grep -l -l は、検索条件にマッチしたファイル名を表示する。

grep -l "tango_output" tango_output という文字列を含むファイルを探す。

{} find でヒットしたファイル名やディレクトリ名に置き換えられる。

\; ; をシェルの特殊文字である コマンドの境界とみなされないようにするためにエスケープしている

参考ページ

CSS「………」などが改行しなくてはみ出る場合の対処法

「………」などが改行しなくてはみ出る場合の対処法

CSS
-------------------------------------------------
word-wrap:break-word;
overflow-wrap : break-word;
-------------------------------------------------

ジャンプ先ページで特定の要素をウインドウの中央に表示

ページ内リンクの要領で、特定の要素をウインドウの中央に表示する方法

<script type="text/javascript">
//ページの読み込みが完了したら
window.onload = function(){

var positionX = window.pageXOffset;
var positionY = window.pageYOffset;
alert(positionX);
alert(positionY);
//window.scrollTo( 0, 200) ;

// 要素の位置を取得する
var element = document.getElementById("jump");
var rect = element.getBoundingClientRect() ;

// 座標を計算する
var positionY = rect.top + window.pageYOffset ; // Y座標のスクロール量
// alert(positionY);
positionY = Math.floor(positionY) ; //小数点以下切り捨て
// alert(positionY);

var winHeight = window.innerHeight; //現在のウインドウの高さ

alert("ウインドウの高さ" + winHeight);

//0.5秒遅れてスクロールさせる。速いとうまくいかない※
setTimeout(function() { window.scrollTo( 0, positionY - winHeight/2) ; }, 500);
}

※ 詳細はこちら

こちらも参考

XMLHttpRequest cannot load エラーの対処法

jqueryでajaxを利用すると、コンソールにエラーが出た

実行したjquery
-------------------------------------------------
$.post(
//アクセスするURL
'http://sub.exemple.com',
{
'value': value
},
function(data){
//リクエスト成功時の処理
});
-------------------------------------------------

コンソールに出たエラー
-------------------------------------------------
XMLHttpRequest cannot load http://sub.exemple.com. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://exemple.com' is therefore not allowed access.
-------------------------------------------------

リクエスト成功時に実行される処理も行われない。

header("Access-Control-Allow-Origin
解決方法は、http://sub.exemple.com にAccess-Control-Allow-Origin レスポンスヘッダを追加する。

ワイルドカードですべてのドメインからの接続を許可
-------------------------------------------------
header("Access-Control-Allow-Origin: *");
-------------------------------------------------

特定のドメインからの接続のみを許可する場合
-------------------------------------------------
header("Access-Control-Allow-Origin: http://exemple.com");
-------------------------------------------------

.htaccessに書き込むなら
-------------------------------------------------
Header append Access-Control-Allow-Origin: *
-------------------------------------------------