放置していたサーバーに手を入れる
最近はサーバーウィほぼ放置して、サイトが落ちているのに気が付いた時のみ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
これで様子見します
最後によく参考にするサーバー初心者説明記事のめも
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設定を行なった
戻した時などになかなか反映されないので現状はどうなっているかを下記サイトのやり方で確認することができたのでメモ
CentOS7でApache2.4+PHP7+MariaDB環境に
サーバーの方をCentOS7+Apache2.4+PHP7+MariaDBに整えることにした
SFTPの設定とかで詰まったのでメモする
以下の内容を順を追って構築することにした
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で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を使ってしまうと、その場で表示されてしまうようです