家の中での温度計測や非公開Webサーバなどを動かしていたScientificLinuxがyum updateしたらkernel panicで起動しなくなりました。一つ古いカーネルに戻せば動きますが、いい機会なので入れなおしてみようかと。
CentOS 7のインストールと設定
さよならCentOSこんにちわScientific Linux 6徒労日記 | 徒労日記でCentOSを見限ったはずが、情勢が変わりました。というわけでCentOS7に戻ります。
インストール
- CPU:1コア
- Memory:1GB
- Disk:20GB SCSI
- USB2.0:すべてのデバイスを表示する(TEMPerを使う為)
- ネットワーク:ブリッジ(物理ネットワークに直接接続する)
でVMを作成しました。
ISOをブートするとここまで来ます。なんてフレンドリーな画面。
パッケージベースは「ベーシックWebサーバ」を選択し、個別に
- PHPサポート
- パフォーマンスツール
- Perl-Web実行
のみチェックつけました。今考えれば最小限インストールで良かったか・・・ コピー進行中にrootのパスワード設定、一般ユーザーの作成ができます。無駄が減っていいですね。
設定は最低限で良くなった
ネットワークの問題も無く、設定しなければならない部分はかなり減りました。ここでは追加した一般ユーザーをsudoersに追記。あとはntpdの追加と全体アップデートをしておきます。SSHはそのままでも繋がるので、秘密鍵の部分は割愛。
# vi /etc/sudoers username ALL=(ALL)ALL # yum install ntp # vi /etc/ntp.conf server -4 ntp.nict.jp server ntp.jst.mfeed.ad.jp server ntp.asahi-net.or.jp # yum update # reboot
未だにntpdでいいの?と思ったけどこの記事を読んで「まぁ、いいか」と思った。ntpdateをcronで回しても個人用途には必要十分かもしれない。
ウィルス対策ClamAV
以前に使ったAviraは提供終了、という事でこの記事を参考にしました。
今のメジャーらしいClamAVに決定。一生懸命に公式サイトから手動で
wget http://pkgs.repoforge.org/clamav/clamav-0.98.4-1.el7.rf.x86_64.rpm wget http://pkgs.repoforge.org/clamav/clamav-db-0.98.4-1.el7.rf.x86_64.rpm rpm -ivh clamav-db-0.98.4-1.el7.rf.x86_64.rpm rpm -ivh clamav-0.98.4-1.el7.rf.x86_64.rpm
などやっておりましたが、下記サイトでスパッと最適解を書かれていたので最初からこれ見ておけば良かった(‘A`)
このやり方なら次回のyum updateにclamavも含まれるので手間いらず。サンプルのスクリプトは「発見時にrootへメール」なので後で「TwitterでMentionを飛ばす」に変更しておこうと思います。(参考:Twitterで電源をON/OFF。フィジカルコンピューティングを身近にするRaspberry Pi用ドーターカード徒労日記 | 徒労日記)
パターンファイルを手動でアップデートをしてみます。root必須。
# freshclam -v Current working dir is /var/clamav Max retries == 3 ClamAV update process started at Sat Sep 27 23:56:55 2014 Using IPv6 aware code Querying current.cvd.clamav.net TTL: 1166 Software version from DNS: 0.98.4 main.cvd version from DNS: 55 main.cld is up to date (version: 55, sigs: 2424225, f-level: 60, builder: neo) daily.cvd version from DNS: 19444 daily.cvd is up to date (version: 19444, sigs: 1163475, f-level: 63, builder: neo) bytecode.cvd version from DNS: 242 bytecode.cvd is up to date (version: 242, sigs: 46, f-level: 63, builder: dgoddard)
終わったら起動と自動起動登録。7.x系からchkconfigに変わり、sytemctlコマンドでデーモンの実行を管理するそうな。
# systemctl start clamd # systemctl enable clamd
WordPressサーバの必要モジュールを入れる
先にnginxインストール
LPICの資格勉強をした際にnginxがやたら出てきて苦しめられたので、実際使ってみる事にします。
参考にしたのは下記サイト。
書いてあるままレポジトリを追加してからnginxをインストールしました。
iptablesじゃなくてfirewalld
httpとBackWpUp用のftpポートを許可する必要があります。
これまでのiptablesも動作はしますが、そのフロントエンドとなるfirewalldというデーモンが7.x系から実装されました。変更や操作は今後このfirewalldに対して行います。以下サイトを参考にやってみます。
# systemctl start firewalld # systemctl enable firewalld # firewall-cmd --state running # # firewall-cmd --list-all-zones 中略 public (default, active) interfaces: eno16777736 sources: services: dhcpv6-client ssh ports: masquerade: no forward-ports: icmp-blocks: rich rules: 中略 # # firewall-cmd --add-service=ftp success # firewall-cmd --add-service=ftp --permanent success # # firewall-cmd --add-service=http success # firewall-cmd --add-service=http --permanent success # # firewall-cmd --list-services dhcpv6-client ftp http ssh # # firewall-cmd --list-all --zone=public public (default, active) interfaces: eno16777736 sources: services: dhcpv6-client ftp http ssh ports: masquerade: no forward-ports: icmp-blocks: rich rules:
キマシ!
これだけだとnginxは自動起動登録されてません。忘れず登録しましょう。
# systemctl start nginx # systemctl enable nginx # systemctl status nginx nginx.service - nginx - high performance web server Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled) Active: active (running) since 木 2014-10-02 20:00:13 JST; 4s ago Docs: http://nginx.org/en/docs/ Process: 3658 ExecStart=/usr/sbin/nginx -c /etc/nginx/nginx.conf (code=exited, status=0/SUCCESS) Process: 3656 ExecStartPre=/usr/sbin/nginx -t -c /etc/nginx/nginx.conf (code=exited, status=0/SUCCESS) Main PID: 3660 (nginx) CGroup: /system.slice/nginx.service tq3660 nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf mq3661 nginx: worker process
PHP-FPM
nginxでPHPを扱うためのモジュールを追加します。そのPHP-FPMは入れる前に一度remiリポジトリを適用してから最新にしたほうが良い、との事でその通りに実行。
# wget http://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-2.noarch.rpm # wget http://rpms.famillecollet.com/enterprise/remi-release-7.rpm # rpm -ivh epel-release-7-2.noarch.rpm # rpm -ivh remi-release-7.rpm # yum update # yum --enablerepo=remi install php php-fpm
設定ファイル/etc/php-fpm.d/www.confのうち、
pm.max_children = 15 pm.start_servers = 5 pm.min_spare_servers = 5 pm.max_spare_servers = 10
の部分だけ数字を変更しました。user:groupはそのままapache:apacheです。
あとは起動と次回の起動登録をして動作を確かめます。
# systemctl start php-fpm # systemctl enable php-fpm ln -s '/usr/lib/systemd/system/php-fpm.service' '/etc/systemd/system/multi-user.target.wants/php-fpm.service' # systemctl status php-fpm php-fpm.service - The PHP FastCGI Process Manager Loaded: loaded (/usr/lib/systemd/system/php-fpm.service; enabled) Active: active (running) since 日 2014-09-28 13:20:36 JST; 1min 54s ago Main PID: 3938 (php-fpm) Status: "Processes active: 0, idle: 5, Requests: 0, slow: 0, Traffic: 0req/sec" CGroup: /system.slice/php-fpm.service tq3938 php-fpm: master process (/etc/php-fpm.conf) tq3939 php-fpm: pool www tq3940 php-fpm: pool www tq3941 php-fpm: pool www tq3942 php-fpm: pool www mq3943 php-fpm: pool www 9月 28 13:20:36 localhost.localdomain systemd[1]: Starting The PHP FastCGI Process M.... 9月 28 13:20:36 localhost.localdomain systemd[1]: Started The PHP FastCGI Process Ma.... Hint: Some lines were ellipsized, use -l to show in full. #
MariaDB
yum install mysqlとやったら”じゃあmariadbでいいスか?”みたいに言われて焦る。ここでも時代が変わっていたか。名前が代わってる意外は普通にインストール、起動設定をかけます。
# yum -y install mariadb mariadb-server # systemctl start mariadb # systemctl enable mariadb # systemctl status mariadb mariadb.service - MariaDB database server Loaded: loaded (/usr/lib/systemd/system/mariadb.service; enabled) Active: active (running) since 日 2014-09-28 13:30:05 JST; 27s ago Main PID: 5387 (mysqld_safe) CGroup: /system.slice/mariadb.service tq5387 /bin/sh /usr/bin/mysqld_safe --basedir=/usr mq5545 /usr/libexec/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-... 9月 28 13:30:03 localhost.localdomain mariadb-prepare-db-dir[5309]: You can find addi... 9月 28 13:30:03 localhost.localdomain mariadb-prepare-db-dir[5309]: http://dev.mysql.com 9月 28 13:30:03 localhost.localdomain mariadb-prepare-db-dir[5309]: Support MariaDB d... 9月 28 13:30:03 localhost.localdomain mariadb-prepare-db-dir[5309]: SkySQL Ab. You ca... 9月 28 13:30:03 localhost.localdomain mariadb-prepare-db-dir[5309]: Alternatively con... 9月 28 13:30:03 localhost.localdomain mariadb-prepare-db-dir[5309]: http://mariadb.co... 9月 28 13:30:03 localhost.localdomain mysqld_safe[5387]: 140928 13:30:03 mysqld_safe.... 9月 28 13:30:03 localhost.localdomain mysqld_safe[5387]: 140928 13:30:03 mysqld_safe...l 9月 28 13:30:05 localhost.localdomain systemd[1]: Started MariaDB database server. 9月 28 13:30:22 localhost.localdomain systemd[1]: Started MariaDB database server. Hint: Some lines were ellipsized, use -l to show in full.
初期セットアップはウィザード形式でセットアップできる”mysql_secure_installation”コマンドを使う模様。あとは/etc/my.cnf.d/server.cnfへ文字コードの追記をしてから、バックアップのdumpファイルを復元します。
# vi /etc/my.cnf.d/server.cnf [mysqld] character-set-server = utf8 # systemctl restart mariadb # mysql -u root -p < xxxxxx.sql
enginxをWordpress用に編集
/etc/nginx/conf.d/default.confを
を参考にを丸ごと書き換えます。
root /var/www/wordpress; index index.php; server { listen 80 default_server; try_files $uri $uri/ /index.php; location ~ \.php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } }
記事中では”fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;”として勧めていますが、当方の環境では
# tail -f /var/log/nginx/error.log 2014/09/28 21:10:17 [crit] 13383#0: *23 connect() to unix:/var/run/php-fpm/php-fpm.pid failed (13: Permission denied) while connecting to upstream, client: 192.168.1.xx, server: , request: "GET / HTTP/1.1", upstream: "fastcgi://unix:/var/run/php-fpm/php-fpm.pid:", host: "192.168.1.yy"
とエラーを吐いてページが表示がされませんでした。ファイルのアクセス権をnginxの実行ユーザーにしてもダメ。このPIDを読んだ先で何か権限が不足しているような動き。
という訳でfastcgi_passは127.0.0.1:9000です。
最後にお馴染みのトラブル
やっと画面が出た!と思ったらまたもや
お使いのサーバーの PHP では MySQL 拡張を利用できないようです。
が出ました。今回はphp.iniではなく、モジュールが足りなかった様です。
yum install php-mysql php-devel systemctl restart php-fpm
したら直りました。
どっちが必要だったんだろうか・・・。
なんとか終わった
という訳でなんとかWordpressが無事表示される所まで戻ってこれました。やっぱりそんなにスパッとはいかなかったか。7.xになって刷新された新モジュールに気づかず、後になってやり直すというパターンに時間を取られました。iptablesしかりntpqしかりMariaDBしかり。
それでも新方式を勉強するいい機会にはなりました。あとはこの徒労日記もタイミングが来たら”nginx+WP Super Cache”とかに移行できたらな、というのが展望です。その前にpermalink直さなきゃいけないのが面倒で・・・。
あ、TEMPerやってない<(;´Д`)>
2014/10/02 追記
疲れてやってなかった部分も設定しました。
CentOS7でTEMPer
忘れてたのでインストール。
SL6の時のバイナリがそのままでは動かず、結局makeしなおしです。
# yum install git gcc libusb-devel # sudo git clone git://github.com/bitplane/temper.git # cd temper # make # ./temper 02-Oct-2014 08:03,23.581625
相変わらずusb.hが入っているlibusb-develが必要ですが、SL6の時と名前が変わっていて最初見つけられませんでした。libusb-develと指定したら”libusb-devel.x86_64 1:0.1.4-3.el7″が無事導入されて動き出しました。
vsftpdでFTPサーバ
あまり使いたくはないんですが、CentOS7でも使える様にしました。WordpressをBackWpUpでバックアップする際の無料保存先が今のところFTPサーバしか無いので。Dropboxの認証バグ?が早く直ってくれないかなと。
メモとして/etc/vsftpd/vsftpd.conf
anonymous_enable=NO local_enable=YES write_enable=YES local_umask=022 dirmessage_enable=YES xferlog_enable=YES connect_from_port_20=YES xferlog_file=/var/log/vsftpd.log xferlog_std_format=YES chroot_local_user=YES chroot_list_enable=YES chroot_list_file=/etc/vsftpd/chroot_list listen=YES pam_service_name=vsftpd userlist_enable=YES userlist_deny=NO tcp_wrappers=YES local_root=FTPRoot use_localtime=YES pasv_addr_resolve=YES pasv_address=xxxxxxxxx.xxxxx.com pasv_min_port=60000 pasv_max_port=60030 log_ftp_protocol=YES dual_log_enable=YES
ftpusersはデフォルト、chroot_list及びuser_listにはBackWpUpに設定するFTP用ユーザー名だけを記載してあります。chroot_listは動作上空でいいとは思うのですが、そうすると500 OOPSなるエラーでログインできなくなります。
あとは/etc/hosts.allowへ許可接続元アドレスを追記、/etc/hosts.denyへ全不許可を入れます。
# vi /etc/hosts.allow vsftpd:xxx.xxx.xxx.xxx # vi /etc/hosts.deny vsftpd:ALL
まだ終わりませんでした。SELINUXが残っていたため、ファイルのアップロードができずエラー。こちらのサイトで解決しました。
ぱそくま パソコンなんでも辞典 | linux > vsftpd > vsftpdサーバーに接続できない場合の対処
# setsebool allow_ftpd_full_access on # getsebool -a | grep ftp ftp_home_dir --> off ftpd_anon_write --> off ftpd_connect_all_unreserved --> off ftpd_connect_db --> off ftpd_full_access --> on ftpd_use_cifs --> off ftpd_use_fusefs --> off ftpd_use_nfs --> off ftpd_use_passive_mode --> off httpd_can_connect_ftp --> off httpd_enable_ftp_server --> off sftpd_anon_write --> off sftpd_enable_homedirs --> off sftpd_full_access --> off sftpd_write_ssh_home --> off tftp_anon_write --> off tftp_home_dir --> off
FTPRoot自体は許可しなくても大丈夫でした。
cifsアクセス
Windowsの共有フォルダをマウントするにはcifsのモジュールが必要。
yum install cifs-utils
mountで接続する際は-oでusername,passwordの記載が必要になります。