WordPress 4.8.2 インストールメモ
WordPress 4.8.2をインストールしたときのメモ。
webサーバのインストール
teratermなどからAWS上のEC2インスタンスにログイン。
今回の環境でyumでhttpdのみを指定するとApache2.2がインストールされる。
php7系のインストールでうまくいかなかったので、Apache2.4のバージョンを指定。
sudo yum install httpd24
webサーバの起動と自動起動設定
sudo service httpd start sudo chkconfig httpd on
phpのインストール
どのパッケージにどんな役割があるかどうかはよくわかりませんが、以下のパッケージをインストール。
sudo yum install php71 php71-mbstring.x86_64 php71-devel.x86_64 php71-pdo.x86_64 php71-gd.x86_64 php71-mysqlnd.x86_64
mysqlの設定
mysqladmin -u root password 'xxxxx' #dbのrootパスワード設定 mysql -u root -p mysql> create database wp; #wpという名前のdbを作成 Query OK, 1 row affected (0.00 sec) mysql> grant all privileges on wp.* to wp@localhost identified by 'xxxxx'; #管理権限付与 Query OK, 0 rows affected, 1 warning (0.00 sec)
WordPressダウンロード、解凍
WordPressのパッケージをダウンロードして解凍。
wget https://ja.wordpress.org/wordpress-4.8.2-ja.tar.gz . tar zxvf wordpress-4.8.2-ja.tar.gz
webサーバの公開場所に保存
sudo cp -r wordpress /var/www/
webサーバのDocumentRootの変更
sudo vi /etc/httpd/conf/httpd.conf DocumentRoot "/var/www/wordpress" #120行目付近 <Directory "/var/www/wordpress"> AllowOverride All # Allow open access: Require all granted </Directory>
httpd.confの編集が完了したらサービス再起動
sudo service httpd restart
WordPress設定ファイルの編集
sudo cp /var/www/wordpress/wp-config-sample.php /var/www/wordpress/wp-config.php sudo vim /var/www/wordpress/wp-config.php 28 /** WordPress のためのデータベース名 */ 29 define('DB_NAME', 'xxxxx'); 30 31 /** MySQL データベースのユーザー名 */ 32 define('DB_USER', 'xxxx'); 33 34 /** MySQL データベースのパスワード */ 35 define('DB_PASSWORD', 'xxxxxxxx'); #先ほどmysqlで設定した内容を記載
vps上にメールサーバ構築
webサービスのアカウント登録などに使うための捨てアドレスが欲しかったので自前でメールサーバ構築。
以下の環境で構築開始。
サーバ | Serversman@vps |
OS | CentOS7.0 |
サーバの設定
本題に入る前にvpsの設定をいじる。
userアカウント作成
sshでrootログイン禁止
SELINUX Disabled
ホスト名変更
iptables設定変更
INPUT DROP
sshのポート穴あけ
Postfixを設定
設定自体はwebに沢山あるので調べながら進める。
今回参考にさせてもらったのは以下のサイト。
centossrv.com
vi /etc/postfix/main.cf ※左の数字は行番号 75 #myhostname = host.domain.tld 76 #myhostname = virtual.domain.tld 77 myhostname = duck-dz.kazika.net ※追記 85 #mydomain = domain.tld 86 mydomain = kazika.net ※追記 101 #myorigin = $myhostname 102 #myorigin = $mydomain 103 myorigin = $mydomain ※追記 117 #inet_interfaces = all 118 #inet_interfaces = $myhostname 119 #inet_interfaces = $myhostname, localhost 120 inet_interfaces = localhost ↓ に変更 117 inet_interfaces = all 118 #inet_interfaces = $myhostname 119 #inet_interfaces = $myhostname, localhost 120 #inet_interfaces = localhost 168 mydestination = $myhostname, localhost.$mydomain, localhost 169 #mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain 170 #mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain, 171 # mail.$mydomain, www.$mydomain, ftp.$mydomain ↓ に変更 168 #mydestination = $myhostname, localhost.$mydomain, localhost 169 mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain 170 #mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain, 171 # mail.$mydomain, www.$mydomain, ftp.$mydomain 422 #home_mailbox = Mailbox 423 #home_mailbox = Maildir/ 424 home_mailbox = Maildir/ ※追記 577 #smtpd_banner = $myhostname ESMTP $mail_name 578 #smtpd_banner = $myhostname ESMTP $mail_name ($mail_version) 579 smtpd_banner = $myhostname ESMTP unknown ※追記
master.cfを編集 #smtp inet n - n - - smtpd ※コメントアウト submission inet n - n - - smtpd ※コメントアウト解除 # -o syslog_name=postfix/submission # -o smtpd_tls_security_level=encrypt -o smtpd_sasl_auth_enable=yes ※コメントアウト解除
各種サービス起動 sasl起動 systemctl start saslauthd systemctl enable saslauthd.service Postfix起動 systemctl restart postfix.service systemctl enable postfix.service ln -s '/usr/lib/systemd/system/postfix.service' '/etc/systemd/system/multi-user.target.wants/postfix.service'
とりあえず以上でサーバからメール送信することはできる。
はまった箇所
サーバから自分のgmailにメール送信したときに遅れない問題
→解決:alternatives --config mta コマンドでデフォルトmailコマンドを変更
- dnsで名前解決ができていなかった
→iptablesでINPUTに53ポートが許可されていなかった
これが原因でyumやcurlが出来なかった
sshでログインする際も遅かった。これはアクセス元のIPアドレスを逆引きしようとしていて、
名前解決できずにタイムアウトしてから次の処理に進むためだった。
ログインしたときに、"Last login: Mon Jul 17 21:24:44 2017 from xxxxx.jp"
これを表示するときのやつ。
- logにipv6関連のメッセージが記載してあった。
→IPv6に対応していないサーバ環境で出るメッセージだった模様。
postfixのmain.cfの"inet_protocols = all"を"inet_protocols = ipv4"に変更
Raspberry Pi2に無線設定
Raspberry Pi2 typeBにUSB無線ドングルを買ってきて設定。DHCPで。
あんまり安いと発熱がすごいらしいのでこちらを購入。少し使用した状態だと発熱は大丈夫そう。
I-O DATA Wi-Fi 無線LAN 子機 11n/g/b 150Mbps USBアダプター型 ブラック WN-G150UMK
- 出版社/メーカー: アイ・オー・データ
- 発売日: 2012/03/28
- メディア: Personal Computers
- 購入: 2人 クリック: 4回
- この商品を含むブログ (4件) を見る
sudo iwlist wlan0 scan |grep ESSID ESSID:"xxxxxxxxxx" ESSID:"oooooooooo" ESSID:"aaaaaaaa" wpa_passphrase <ESSID> ←検索したSSIDを指定 # reading passphrase from stdin ここにパスワード打ち込む 以下のようにネットワークの設定が生成されるので、コピー network={ ssid="xxxxxxxxxx" #psk="hogehoge" psk=4923805fdgnoas0gtwn4fgntl2l410anebtpabe0 } sudo vim /etc/wpa_supplicant/wpa_supplicant.conf country=GB ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev update_config=1 #先ほどコピーしたネットワークの設定をここに貼り付け
再起動して、ifconfigでIPが振られていることを確認。
linuxコマンドライン上からメール送信
linux上からメール送信したときのメモ。
[user@hostname ~]$ mail -s “件名” -r 送信元アドレス 宛先アドレス #Enterを押したあとに本文入力。 #ヒアドキュメント的に入力できる。 お疲れ様です。 明日の飲み会行けたら行きます。 以上、よろしくお願いいたします。
入力終わったら、ctrl+Dで抜ける
grepコマンドで特定の文字列を抜きだす
linuxのgrepコマンドを使っていて、特定の文字だけ抜き出したい時に調べたメモ。
以下のようなテキストファイルをベースに色々試す。「-w」「-x」などのオプションでの挙動の違いなど。
$ cat test.txt duck duckduck hogehogeduck duck 12345 #オプション無し $ grep duck test.txt duck duckduck hogehogeduck duck 12345 #「-w」オプション $ grep -w duck test.txt duck duck 12345 #「-x」オプション $ grep -x duck test.txt duck
「-w」は検索語にマッチする「行」を出力。
「-x」は行全体が検索語にマッチするかを判定。
manにも書いてある。
pythonで時間の計算をやってみた
やりたいこと
ある時刻「aa:aa」と「bb:bb」の差分の時間を計算させたい
なんとなくpythonで試してみる。
ちょっと調べるとweb上に沢山載っているので、ありがたく参考にした。
>>> import time >>> from datetime import datetime >>> t1 = '10:00' >>> t2 = '08:35' >>> t1 - t2 Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: unsupported operand type(s) for -: 'str' and 'str'
変数に時間を入れてみて、引き算してみる。文字列とみなされるので引き算は当然エラー。
>>> time1=time.strptime(t1, '%H:%M') >>> print (time1) time.struct_time(tm_year=1900, tm_mon=1, tm_mday=1, tm_hour=10, tm_min=0, tm_sec=0, tm_wday=0, tm_yday=1, tm_isdst=-1) >>> time2=time.strptime(t2, '%H:%M') >>> time1-time2 Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: unsupported operand type(s) for -: 'time.struct_time' and 'time.struct_time'
time.strptime()という関数が文字列を時刻の形にデータを直してくれるみたい。
年月日は指定していないので、今回は無視する。これもダメ。
#tm_wday
#tm_yday
#tm_isdst
#については調べる
もう少し調べてみると、datetime.strptime()というのもあるみたい。試してみる。
>>> time3=datetime.strptime(t1, '%H:%M') - datetime.strptime(t2,'%H:%M') >>> time3 datetime.timedelta(0, 5100) >>> print(time3) 1:25:00 >>> print((time3)*2) 2:50:00 >>>
これは内部では秒に変換してくれているみたい。この状態で引き算してみると、行けた。