サーバー設定


Let'sEncryptの更新設定

let's encrypt の導入はこちら

Let'sEncrypt の有効期限は 90日。有効期限が切れる前に自動更新するように設定する必要がある。

certbot-auto の場所を確認
--------------------------------------
find -name certbot-auto
--------------------------------------

場所はここだった
--------------------------------------
./certbot-auto
--------------------------------------

更新コマンド
--------------------------------------
sudo ./certbot-auto renew --post-hook "sudo service httpd restart"
--------------------------------------

更新期間まえだと次のように出る。有効期限も確認できる
--------------------------------------
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Processing /etc/letsencrypt/renewal/example.com.conf
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Cert not yet due for renewal

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

The following certs are not due for renewal yet:
/etc/letsencrypt/live/example.com/fullchain.pem expires on 2018-10-23 (skipped)
No renewals were attempted.
No hooks were run.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
--------------------------------------

強制的に更新するなら次のコマンド
--------------------------------------
sudo ./certbot-auto renew --force-renew --post-hook "sudo service httpd restart"
--------------------------------------

cronへの登録

certbot-auto の場所を調べる
--------------------------------------
find -name certbot-auto
--------------------------------------

シェルスクリプトを用意
--------------------------------------
#!/bin/sh

# #!で始まる一行目の記述はインタプリタの指定
# シェルスクリプトの最初に書くおまじない

# Let's Encrypt 証明書の更新
sudo /root/certbot-auto renew --post-hook "sudo service httpd restart"
--------------------------------------

毎週月曜日に実行
--------------------------------------
2 3 * * * /var/myshellscript/backupmysql.sh
--------------------------------------

有効期間の残りが30日未満の証明書のみ更新される。

サイトのssl化の手順

サイトのssl化の手順 覚書

let's encrypt の更新はこちら

さくらのレンタルサーバー かつ wordpress 利用の場合

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

1.さくらのサーバーコントロールから無料SSL証明書を発行

2.Really Simple SSL をインストールして実行

さくらインターネット提供のプラグインも存在するが php のバージョンが違ったので Really Simple SSL をインストールした

参考サイト

https://zenlogic.jp/aossl/operation/wp-plugin/

3.google の Search Console と analytics の設定を変更する

https://candy.fun-net.biz/https-google-search-console-analytics/

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

さくらのレンタルサーバー かつ wordpress でないの場合

-----------------------------------------------------------------------------------------
1さくらのレンタルサーバー wordpress でない場合

1.さくらのサーバーコントロールから無料SSL証明書を発行

2.CSS や 画像ファイル の URL を http → https に変更

SSL証明書を発行後に https のアドレスでページにアクセスすると表示はされるもののレイアウトが崩れる。このとき chrome のアドレスバーには鍵マークでなく「!」になっていた。原因は http CSS や画像ファイルを http で読み込んでいるのが原因なので https に書き換える。

3.htaccess で http → https の301リダイレクトを設定

htaccess に記述
---------------------------------------------------
RewriteEngine on
RewriteCond %{HTTPS} off //RewriteRuleが実行される条件。直後の RewriteRule のみが対象
RewriteRule ^(.*)$ https://example.com/$1 [R=301,L]
---------------------------------------------------

4.google の Search Console と analytics の設定を変更する

https://candy.fun-net.biz/https-google-search-console-analytics/

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

さくらのvpsの場合

基本的にここ↓を参考にする

https://knowledge.sakura.ad.jp/10534/

しかしリンク先の解説は CentOS7 を対象としているが、自分が利用しているのは CentOS6.9なのでちょいちょい違うので注意。

ファイアウォールのコマンドは CentOS6.9を利用しているので firewall-cmd ではなく iptables を使う。

iptables の起動状態を確認
-------------------------------------
/etc/init.d/iptables status
-------------------------------------

ssl で利用する 443 ポートが開いていることを確認
-------------------------------------
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:443
-------------------------------------

Let's Encrypt を利用するには Certbot を利用する必要があるのでインストール

コマンド
-------------------------------------
wget https://dl.eff.org/certbot-auto
chmod a+x certbot-auto
./certbot-auto
-------------------------------------

その後指示に従う。

途中で、http でのアクセスを https にリダイレクトするか聞かれるが、手動(htaccess)でリダイレクトしたいので「1」を選択

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

Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.
-------------------------------------------------------------------------------
1: No redirect - Make no further changes to the webserver configuration.
2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for
new sites, or if you're confident your site works on HTTPS. You can undo this
change by editing your web server's configuration.
-------------------------------------------------------------------------------
-------------------------------------

インストールが完了したら httpd を再起動

-------------------------------------
service httpd start
-------------------------------------

https でアクセスできるか確認する

二つ契約しているさくらのVPSの片一方がうまく SSL化できなかった。

適用するドメインを選択するこの場面で現在利用してないドメインも選択したのが原因だと思われる。

Which names would you like to activate HTTPS for?
-------------------------------------------------------------------------------
1: one,example.com
1: two,example.com
1: three,example.com
1: four,example.com
1: five,example.com
1: six,example.com
1: seven,example.com
1: eight,example.com
-------------------------------------------------------------------------------

エラーが出てきちんと完了しない場合は、関連ファイルを全部消して再度実行するといい。
削除したファイル1
----------------------------------------------------
rm -rf /opt/eff.org/certbot
rm -rf /etc/letsencrypt
----------------------------------------------------

削除したファイル2
certbot-auto というファイルがいくつかのディレクトリ内にできているのですべて削除
探す場所
----------------------------------------------------
cd /opt/eff.org/
cd /etc/
cd /etc/httpd/conf.d/
----------------------------------------------------

不要ファイルをすべて削除したら再度実行。

コマンド
-------------------------------------
wget https://dl.eff.org/certbot-auto
chmod a+x certbot-auto
./certbot-auto
-------------------------------------

自宅サーバーのインターネットがつながらなかった

自宅サーバーのインターネットがつながらなかった。

デフォルトゲートウェイに ping を打つと Destination Host Unreachable と返ってくる。

ルーターの電源を入れた直したらつながった。

自宅作業環境の覚書

現在の構成

作業PCのほか、固定IPを持った自宅サーバー

自宅サーバー

プロバイダー インターリンク(固定IP)
使用ルーター(192.168.11.1)IOデータ

その他作業PC

プロバイダー ニフティ
使用ルーター(192.168.11.1) BUFFALO

multis_1

画像元

【さくらVPS】php.ini の設定変更の覚書

さくらVPSでphpをインストールした際、別のサーバーでは出なかったエラーが出るようになった。
エラーを表示にした時の設定の覚書

初期設定でphpのエラー出力が非表示になっていたので表示するに変える
-------------------------------------------------
display_errors = Off
-------------------------------------------------
↓↓↓
-------------------------------------------------
display_errors = On
-------------------------------------------------

初期設定が↓のようになっていて「Notice: Undefined index」エラーが出るので変更
-------------------------------------------------
error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT
-------------------------------------------------

-------------------------------------------------
error_reporting = E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED
-------------------------------------------------

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

やりたいこと

現在、さくらレンタルサーバー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 はいまいちよく分からない。