communityfield’s diary

サイト開発のメモです。メモなので結構適当です

放置していたサーバーに手を入れる

最近はサーバーウィほぼ放置して、サイトが落ちているのに気が付いた時のみhttpd再起動をかけて復旧させていた

めんどくさいのでタスクスケジュールして定期的に自動で再起動かける様にしたい

時間余裕あればもっといじりたいのだが最近WOWSにハマっており忙しいのでいじる気にならない

 

sslをサイトに導入しているとhttpd再起動にパスフレーズを求められる

なのでスケジュール化できないので以下のサイトを参考にパスフレーズ自動化大作戦

https://qiita.com/yoshizaki_kkgk/items/26b01edb577861fbcfe6

-------

パスワード自動応答スクリプトを作成
パスワードを出力するシェルスクリプトを作成しておき、それを読み出すだけで出来ます。

シェルスクリプトの作成
$ sudo vim /etc/ssl/certs/pass_ssl.sh
/etc/ssl/certs/pass_ssl.sh
#!/bin/sh
echo 'tVKJDtQf4euzCPss'
rootのみ読み書きできるようにしておきます。

権限の変更
$ sudo chmod 500 /etc/ssl/certs/pass_ssl.sh

-------

試しにsystemctl restart httpdで再起動してみると

おお、パスフレーズを要求されない

お次は自動でhttpd再起動させる

http://boota.mydns.jp/blog/?p=4928

-------

ちなみに定期的に実行させるのはhttpdのリスタートですから、おそらくcronによる処理の実行もroot権限で行われなければならないと思うので、rootで作業を行います。
まずはrootでログインし、crontabコマンドを叩きます。

$ su –
# crontab -e

-eオプションはcronを対話的に記述できます。ってゆーか、エディタ(vi)が立ち上がるので、それに記入していくことになります。viを閉じれば自動的にcronとして保存されます。

viのモードになったら、ここにcrontabの中身を書き込みますが、記述にはルールがあり、

分 時 日 月 曜日 <コマンド>

で記述します。各要素の間は空白で区切ります。詳細はこちらに詳しいのでそちらを見ていただくとして、紹介されている事例で手っ取り早く確認するとこんな感じ。

00 14 * * * /usr/bin/cmd // 毎日14:00に実行
* * * * * /usr/bin/cmd // 毎分実行
15,30 06 * * 2 /usr/bin/cmd // 毎週火曜日の6:15と6:30に実行
05 23 * 3-5 4 /usr/bin/cmd // 3~5月の毎週木曜日23:05に実行

00 14だから14:00の意味になり、*(アスタリスク)は「すべて」を意味するので、一番上の例ならすべての日にち・月・曜日の14:00に実行、となるため、毎日14:00に実行すると解釈される訳ですね。

スパンの指定方法などは細かく色々あるみたいですが、さしあたってこれがわかればOKでしょう。

例えば僕の例ならば、毎日午前0:00にhttpdをリスタートさせようと思っているとして、その書き方はこうなるわけです。

0 0 * * * /etc/init.d/httpd restart

これを記述したらviモードを保存して終了すればcronに登録されます。登録された内容は/var/spool/cron/root(僕はこれをrootで実行させなければならないから)に保存されます。
ちなみに/var/spool/cron/rootはディレクトリではなく「ファイル」です。

ファイルですから、lessして中身を確認すれば、先ほどviモードで記述したそれがそのまま出てきます。つまりviで編集して/var/spool/cronの中にユーザ名で保存している感覚ですね。

-------

ということなので月曜の3時にリスタートする様にしてみる

0 3 * * 1 /etc/init.d/httpd restart

 

これで様子見します

最後によく参考にするサーバー初心者説明記事のめも

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

phpenvのインストール

phpenvでphpバージョン管理ができるというのを見つけ、導入を試みた

 

CentOS7にphpenvをインストールしてみる | logw-ログウ個人的な記録用-

CentOS7でPHPのバージョンを管理する - 魔法使いの卵

上記サイトを参考にしたがPHPを入れるところで詰まった

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

|  BUILD ERROR  |

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

 

Here are the last 10 lines from the log:

 

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

configure: error: Unable to detect ICU prefix or no failed. Please verify ICU install prefix and make sure icu-config works.

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

 調べてもすぐにはわからなかったので一旦保留中

下記サイトから該当する箇所を参考にした

SE'S BOOK: PHP configure時によくあるエラー

yum install libicu-devel

 なんとか完了することができた

DNSサーバのレコード更新時のメモ

VPSサーバのOSクリーンインストールのため、一時的にメンテナンス画面を別のサーバIPで表示するためDNS設定を行なった

戻した時などになかなか反映されないので現状はどうなっているかを下記サイトのやり方で確認することができたのでメモ

 

algorhythnn.jp

 

 

CentOS7でApache2.4+PHP7+MariaDB環境に

サーバーの方をCentOS7+Apache2.4+PHP7+MariaDBに整えることにした

SFTPの設定とかで詰まったのでメモする

 

以下の内容を順を追って構築することにした

knowledge.sakura.ad.jp

 

SSHのポートをセキュリティ上変更した場合、firewalld設定をいじる必要がある

vi /usr/lib/firewalld/services/ssh.xml

にてport22となっている部分を指定した番号へ書き換える

firewall-cmd --reload

で設定反映を行う

 

参考

5分で終わらせるCentOS7のfirewalld設定 - Qiita

 

またviなどで開いたときに日本語が文字化けして気持ち悪いので

下記の記事を参考に日本語をインストール 

CentOS7のCUI環境を日本語に変更 | Scribble

 

SSL対応の続き

途中で止まっていたSSL対応を進めた

 

今回行ったのはサーバー側のSSL設定ファイルの編集

バーチャルホストを使っているので以下の「7.SSL設定ファイルの編集」を参考に

さくらVPSにSSLを登録する 後編 - あぷすた

また、サーバ証明書のファイル名とか保存先は違うので前回参考にした記事をみて思い出した

さくらVPSでApache+SSL環境の構築(CentOS6.5+Apache+RapidSSL) - Qiita

 

httpsでのアクセスはうまくいったもののページの一部が安全でない状態であり、そこを一つづクリアにしていかなければならない

ほとんどのサイトは、コンテンツ内で、外部の安全でないサイトからの画像や、スクリプトを読み込んでいたりして、鍵が表示されていない状態

WordpressをhttpからhttpsにSSL化した全手順まとめ(エックスサーバー環境)

あとはhttpでのアクセスをリダイレクト処理すること

SSL化は急務でないのでこの二点はまた後日対応する予定

wordpres ショートコードの関数追加でechoは使わない

ログインしていない場合、新規登録やログインボタンを表示するファンクションとショートコードをfunction.phpに追加したのだが、ショートコードを張ったページの最上部に表示されてしまうという罠にハマりました。

echoではなくreturnを使うことで解決

以下はダメな例

/* ログインしていなければ〇〇、ログインしていれば××を返す */
function ファンクション名() {
if (is_user_logged_in()) {
 echo'ログインしている表示内容';
}
else{
echo 'ログインしていない表示内容';
}
}
/* ショートコードを追加する */
add_shortcode('ショートコード名', 'ファンクション');

 

× echo'ログインしている表示内容';

○ return'ログインしている表示内容';

 

なんとなくechoを使ってしまっていたのですが、以下のページに書いてあるように

wp_contentのフィルターを通る際に、出力したいコードに置き換わる仕組みらしいので

echoを使ってしまうと、その場で表示されてしまうようです

wordpres ショートコードの関数にechoは使ってはダメ! « 生きる辞書

SSL導入

自分の持っているサイトへのSSLの導入を開始しました

さくらVPSを使っているので、さくらのSSLからラピッドSSLを利用しました

主に以下の記事を参考

qiita.com

基本作業は完了したのですがバーチャルドメイン環境なのでその対応やhttpsへのリダイレクト、wordpress側やgoogleアナリティクスなどの部分も設定しなければならない

 

作業中にサイトにアクセスできなくなったため、一旦中止して後日作業を行います

バーチャルドメイン環境は以下のサイトを参考にする予定

d.hatena.ne.jp