カテゴリー
WordPress

初めての VPS-#4 (CentOS7 上に WordPress のインストール)。

The same article in English

 さくらの VPS のお試し期間は, 12/2 までだったのだが,まだやりたいことを残しているので,続けて使っている。月払いで,しばらく続けてみるつもりである。

 今回は,「WordPress のインストール」について書く。試される場合は,当然ながら,前もって,初めての VPS #1初めての VPS #2初めての VPS #3 は完了していないといけないです。まずは Wheel Group User (うちの場合は centos )として―言い換えると root 権限のユーザということ―インストールする。

注)||SELinux と WordPress||httpd_selinux(8) 参照)

  1. ダッシュボードからプラグインをインストールしようとしたら,「FTP サーバー VPS_DomainName への接続に失敗しました」が出た。 Http デーモンがネットワークにアクセスできないせいらしい。解決策は, “httpd_can_network_connect –> on”。
    $ sudo setsebool -P httpd_can_network_connect on
  2. ダッシュボードからメディアファイルをアップロードしようとしたら,「ディレクトリ wp-content/uploads/year/date を作成できませんでした。この親ディレクトリのアクセス権はサーバーによる書き込みを許可していますか?」が出た。親ディレクトリのパーミッションは 707 だったんだけとさ。 Httpd デーモンが context のせいで,ディレクトリの読み書きができないらしい。 context を ‘httpd_user_content_t’ から ‘httpd_sys_rw_content_t’ に変えたら,できるようになった。しかし,別の問題が発生。 FTP クライアントから見えない。メディアファイルに関しても FTP クライアント経由でバックアップすることが多い私には,これは問題である。
     
    解決策を探してみた。
    context を ‘httpd_sys_rw_content_t’ ではなく, ‘public_content_rw_t’ にする。メディアをアップロードするためには, ‘httpd_anon_write –> on’ も必要だった。
    $ sudo setsebool -P httpd_anon_write on
    $ sudo semanage fcontext -a -t public_content_rw_t
    "/path/to/wp-content/uploads(/.*)?"

    $ sudo /sbin/restorecon -RF /path/to/wp-content/uploads
     
    参考 URL: 5.7.2. 永続的な変更: semanage fcontext
    上記には ‘restorecon -R’ で変更可能にと書いてあるのだが,なんでだか ‘restorecon -RF’ と F(force)を付けないとうまくいかなかった。

||Wheel Group User として WordPress をインストール||

  1. phpMyAdmin に root としてログイン。
  2. WordPress 用の database (wordpressdb とか) を照合順序 ‘utf8_general_ci’ で作成する。
  3. WordPress 用の user (wordpressuser とか) を localhost かつ passphrase ありで作成する。
    GRANT USAGE ON *.* TO wordpressuser@localhost IDENTIFIED BY PASSWORD ‘passphrase’;
     
    特権を編集する。データベース ‘wordpressdb’ について GRANT 以外のすべての特権を与える。グローバル特権は一切付与しないことに注意!!
    GRANT ALL PRIVILEGES ON wordpressdb.* TO wordpressuser@localhost;
  4. ログアウト

——————–

  1. VPS に SSH 経由で centos としてログオン。直後は, /home/centos にいるはず。
  2. $ mkdir tmp
    $ chmod 707 tmp

    tmp はダウンロードファイル用である。

  3. $ cd tmp
     
    ‘wget’ が入っていない場合は,下記でインストール。
    $ sudo yum install wget
     
    WordPress をダウンロードし,解凍後当該個所にコピーする。
    $ wget https://ja.wordpress.org/wordpress-4.0-ja.tar.gz
    $ tar xzvf wordpress-4.0-ja.tar.gz
    $ rsync -avP ~/tmp/wordpress/ ~/www/html/wp/
  4. uploads フォルダを作成。
    $ mkdir ~/www/html/wp/wp-content/uploads
    $ chmod 707 uploads
     
    context type を変更する。
    $ sudo semanage fcontext -a -t public_content_rw_t
    "/home/centos/www/html/wp/wp-content/uploads(/.*)?"

    $ sudo /sbin/restorecon -RF /home/centos/www/html/wp/wp-content/uploads

——————–

  1. ブラウザから, http://VPS_DomainName/wp/ にアクセスする。
  2. ブラウザからのインストール時, wp-config.php が自動生成されないので,表示される情報をもとに,テキストエディタで作成し, FTP クライアントでアップロードして,パーミッションを 404 にする。
    それ以外は,順当に進む。
     
    注)WordPress が FTP account 情報を自動取得できないようで,アップテートやプラグインインストール時に,一々入れてやらないといけないので, wp-config.php の /* 編集が必要なのはここまでです ! WordPress でブログをお楽しみください。 */ より前に下記の 3 行を追加した。
    参考 URL: WordPress Upgrade Constants
     
    define('FTP_USER', 'username');
    define('FTP_PASS', 'password');
    define('FTP_HOST', 'VPS_DomainName');

 
 この時点で, PHP は DSO (Apache 2.0 Handler) で動いている。で,上の手順後,大部分の WordPress のファイルのオーナー/グループは ‘centos:centos’ になっているが,ダッシュボードからアップロードしたメディアファイルだけは, ‘apache:apache’ である。このせいで, FTP クライアントから,メディアファイルの編集ができない。バックアップはできるんだが。まあ, ‘centos‘ としてなら, SSH 経由で ‘chown’ が使えるけどね。
 
 このことは,一般ユーザの場合に,より問題となると思う。続いて,一般ユーザとして,インストールする話を書く。
 
||一般ユーザとして WordPress をインストール||
 当然ながら,サーバサイドの作業は,一般ユーザではできない。 centos として行う。

    [サーバサイド]——

  1. centos として, SSH 経由で VPS にログインし,一般ユーザを作成。
    $ sudo adduser normuser1
    $ sudo passwd normuser1
    Changing password for user normuser1.
    New password:
    Retype new password:
    $ sudo chmod 701 /home/normuser1
  2. /etc/httpd/conf.d/userdir.conf を編集する。
    $ sudo vi /etc/httpd/conf.d/userdir.conf 参考 URL: UserDir ディレクティブ

    • UserDir disabled の次行に UserDir enabled normuser1 を追加。
    • #UserDir public_html の次行に UserDir www/html を追加。
    • <Directory "/home/*/public_html">
      —>> <Directory "/home/*/www/html">
    • Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
      —>> Options MultiViews SymLinksIfOwnerMatch IncludesNoExec
  3. $ su - normuser1
    $ mkdir www
    $ cd www
    $ mkdir html
     
    normuser1 id の属性をチェック。
    $ id -a normuser1
    uid=1001(normuser1) gid=1001(normuser1) groups=1001(normuser1)
    $ exit
    $ sudo systemctl restart httpd.service
  4. $ sudo gpasswd -a sennari apache
    normuser1 id の属性をチェック。
    $ id -a normuser1
    uid=1001(normuser1) gid=1001(normuser1) groups=1001(normuser1),48(apache)
  5. ブラウザから root として phpMyAdmin にログイン。
     
    WordPress 用の database (normuser1db とか) を照合順序 ‘utf8_general_ci’ で作成する。
    WordPress 用の user (normuser1wp とか) を localhost かつ passphrase ありで作成する。
    GRANT USAGE ON *.* TO normuser1wp@localhost IDENTIFIED BY PASSWORD ‘passphrase’;
     
    特権を編集する。データベース ‘normuser1db’ について GRANT 以外のすべての特権を与える。グローバル特権は一切付与しないことに注意!!
    GRANT ALL PRIVILEGES ON normuser1db.* TO normuser1wp@localhost;
     
    ログアウト。
    [クライアントサイド]——

  1. FTP クライアントで, normuser1 の DocumentRoot にアクセスする。
    テストとして, index.html をアップロードしてみる。ブラウザから http://VPS_DomainName/~normuser1/ にアクセスして確認。
     
    余談だが,この index.html に base64 encoded in-line image scheme を使ってみた (^^)。
  2. FTP クライアントで, DocumentRoot に wp フォルダを作成。
    解凍した WordPress のファイルを wp に FTP 経由でアップロード。
  3. ブラウザで, http://VPS_DomainName/~normuser1/wp/ にアクセスし, WordPress のインストールを続ける。
     
    ブラウザからのインストール時, wp-config.php が自動生成されないので,表示される情報をもとに,テキストエディタで作成し, FTP クライアントでアップロードして,パーミッションを 404 にする。それ以外は,順当に進んだ。
     
    注)WordPress が FTP account 情報を自動取得できないようで,アップデートやプラグインインストール時に,一々入れてやらないといけないので, wp-config.php の /* 編集が必要なのはここまでです ! WordPress でブログをお楽しみください。 */ より前に下記の 3 行を追加した。
    参考 URL: WordPress Upgrade Constants
     
    define('FTP_USER', 'username');
    define('FTP_PASS', 'password');
    define('FTP_HOST', 'VPS_DomainName');

 上記終了後, WordPress 4.0 を 4.1 にアップグレードした。問題なし。ところが, uploads フォルダは作成済みでパーミッションを 707 にしてあったにも関わらず,メディアのアップロードができなかった。そんなわけで,下記のような手直しをした。

  1. FTP クライアントで, uploads フォルダのパーミッションを 775 に変更。どうやら, Http デーモンがここにフルアクセスできないといけないようなので。
  2. 以下の 3 つは centos として SSH 経由でやった。これらは,一般ユーザの権限ではやれない。そんなわけで,複数ユーザのサイトを運営する場合,この件はとても不便ではないかと思った。何しろ, ‘fcontext -a -t’ 以外は uploads フォルダ作成後でないとできなかったから。
    • $ sudo chown -R normuser1:apache
      /home/normuser1/www/html/wp/wp-content/uploads
    • $ sudo semanage fcontext -a -t public_content_rw_t
      "/home/normuser1/www/html/wp/wp-content/uploads(/.*)?"
    • $ sudo restorecon -RF /home/sennari/www/html/wp/wp-content/uploads

 さて,いまひとつの疑問がある。どうして WordPress は upgrades と メディアアップロードで違う方法をとっているのだろうか。メディアについても upgrades と同じ方法でやってくれれば,こんなことは起こらないと思うのに。 PHP に詳しくないのでよくわからないが,おんなじ方法を使うとなんかまずいことがあるんかいな?
 
 そんなこんなで, suEXEC サポートに取り組んでみようかという気になっている。

カテゴリー
everyday life

覚え書-#22。

The same article in English

群雀
群雀
 昨日,珍しくスズメの群れを見た。子供のころには田んぼにいやというほどいたスズメ,近頃では本当に珍しい。昨日のような群れとなるとめったとお目にかかれない。寂しいことだ。雀のお宿(舌切り雀ですな)などという話も,本当のスズメをあまり見たことのない子供たちに,話して聞かせる日が来てしまうのだろうか。
シロハラかな?
シロハラかな?
 
 でもって,今日は左図の鳥を見た。シロハラに似ている気がするが,どうだろうか。ちょっと,細身の気もするが,あってますかね?
 
 話は変わって,アップデートメモ。昨日,下記のソフトをアップデートした。サーバの OS は Win7 HP SP1 x86 である。
 

カテゴリー
everyday life

本家のお世話-#111。(phpMyAdmin 4.3.1へアップデート)

The same article in English

 12/5 に phpMyAdmin 4.3.0 が 12/8 に 4.3.1 が出た。で,昨日, 4.2.13.1 から 4.3.1 にアップデートした。 ChangeLog はこんな感じ。 4.3.0 はいろいろと改良されているみたいだが, 4.3.1 は単なる bugfix バージョン。

 いつも通り, phpMyAdmin-4.3.1-english.zip をダウンロードして解凍。古い config.inc.php を新しくできた phpmyadmin フォルダにコピーし,すべてをサーバにアップロードする。(「Windows7上にWamp系WebServerを建てる-#3。」参照。)

 古い config.sample.inc.php (=Ver.4.2.x) と新しいのを比べたら, 1 行減って, 1 行増えていた。

/* Storage database and tables */ のところ
 減った行
     // $cfg[‘Servers’][$i][‘designer_coords’] = ‘pma__designer_coords’;

 増えた行
     // $cfg[‘Servers’][$i][‘central_columns’] = ‘pma__central_columns’;

4.3.1 の警告
4.3.1 の警告
 しょっぱなにログインすると,「The phpMyAdmin configuration storage is not completely configured, some extended features have been deactivated. Find out why. Or alternately go to ‘Operations’ tab of any database to set up it there」が出た。前半は,いつもの環境保管領域に関しての注意書きだが,後半が増えている。要するに,手作業でセットアップをやってもいいよってことダネ。

 「Find out why」をクリックすると,右図のように問題点が表示される。また,対処法も書いてある。表題の日本語のみ,ちょっと,変だね。

     高度な機能の設定する簡単な方法:

     Create the needed tables with the ./examples/create_tables.sql.
     作ったテーブルにアクセスできる pma ユーザを作成します。
     設定ファイル (config.inc.php) で高度な機能を有効にします。 config.sample.inc.php に
     ある設定例をコピーするといいでしょう。
     更新した設定ファイルを読み込むために phpMyAdmin にログインし直します。

 下記のことをやった。

  1. 古い config.inc.php のままで,新バージョンに root として,ログオンする。
  2. phpmyadmin データベース上での, controluser(Default : pma) の特権に ALTER を追加する。
  3. 新しい, create_tables.sql をインポートする。データベース名 (Default : phpmyadmin) や controluser 名 (Default : pma) をいじっている場合は,インポート前に, create_tables.sql を編集しておく。(「phpMyAdmin 環境保管領域」参照。)
  4. ログアウト。
  5. 前の config.inc.php を編集する。
    • 削除する行
           $cfg[‘Servers’][$i][‘designer_coords’] = ‘pma__designer_coords’;
    • 追加する行
           $cfg[‘Servers’][$i][‘central_columns’] = ‘pma__central_columns’;
  6. 再度, root としてログオン。
  7. テーブル pma__designer_coords を削除する。

 以上。

 ところで, central columns についての説明が central_columns にあるが,読んでも使い方がよくわからない。どうやったら,記録できるのか???

カテゴリー
everyday life

はやぶさ 2 くん,無事,旅立ち。

The same article in English

 はやぶさ 2 くんの打ち上げ,無事,終わりましたね。昨日は,ずっと, YouTube にかじりついていました。皆さんは,どうなさってましたか。

 昨日の録画は, JAXA のチャンネルで視聴できます。「小惑星探査機「はやぶさ2」打ち上げ中継

 帰還は, 2020 年の予定です。はるかなる旅路です。今回は,あまりニュースにならないといいですね。エッと,思われるでしょうが,帰還まであまりニュースにならないということは,探査が滞りなく進むということですから。

 何事もなく探査を進め,元気に,オーストラリアの予定地に帰ってきてほしいものです。

カテゴリー
Linux

初めての VPS-#3 (CentOS7 上に LAMP を構築)。

The same article in English

 はやぶさ 2 の打ち上げ,再延期になっちゃいましたねぇ。 12 月 3 日 (水) 13 時 22 分 04 秒の予定だそうです。三度目の正直で,今度こそ晴れてほしいなぁ。

 さて, SELinux を有効にしたままで, CentOS7 上に LAMP を構築しようと思う。
 LAMP 構築に先立って,以下の 3 4 つをやった。

  1. $ sudo vi /etc/pam.d/su
    下記の行をアンコメントする。
    #auth required pam_wheel.so use_uid –>> auth required pam_wheel.so use_uid
    これで, Wheel Group 外のユーザは ‘su’ コマンドを使っても, root にはなれなくなった。
  2. $ sudo vi /etc/aliases
    ファイルの最下行をアンコメントし,ユーザ名を変更する。
    #root: marc –>> root: centos
    $ sudo newaliases
    これで,ユーザ centos が root 宛てのメールを受け取れるようになった。
  3. タイムゾーンをチェックする。
    $ sudo timedatectl status
    特に,問題なし。
    $ sudo systemctl status chronyd.service
    結果に, “System clock wrong by 1.088336 seconds, adjustment started” というのがあったので, /etc/chrony.conf を編集した。
    $ sudo vi /etc/chrony.conf
    中に “# Use public servers from the pool.ntp.org project.” と書いてあったので, pool.ntp.org に行ってみたら,使い方があった。その指示に従って, ‘+’ の 4 行を追加し, ‘-’ の 4 行を削除した。
    +server 0.pool.ntp.org iburst
    +server 1.pool.ntp.org iburst
    +server 2.pool.ntp.org iburst
    +server 3.pool.ntp.org iburst
    server 0.centos.pool.ntp.org iburst
    server 1.centos.pool.ntp.org iburst
    server 2.centos.pool.ntp.org iburst
    server 3.centos.pool.ntp.org iburst
    サービスを再起動して,確認。
    $ sudo systemctl restart chronyd.service
    $ sudo systemctl status chronyd.service
    よくなった。
  4. パッチ自動更新用。
    $ sudo yum install yum-cron
    $ sudo vi /etc/yum/yum-cron.conf
     行番号 20: apply_updates = no –>> apply_updates = yes
    $ sudo systemctl start yum-cron.service
    $ sudo systemctl enable yum-cron.service

1 Apache Httpd のインストール   2 MariaDB のインストール   3 PHP のインストール
4 phpMyAdmin のインストール   5 vsftpd のインストール

 
||Apache Httpd のインストール||

  1. $ sudo yum install httpd
    インストールされたバージョンは, httpd.x86_64 2.4.6-18.el7.centos だった。
  2. /etc/httpd/conf/httpd.conf を編集する。
    $ sudo vi /etc/httpd/conf/httpd.conf
     
    :set nu’ で行番号を表示する。

    • 行番号 42: Listen 80 –>> Listen Server_global_IP:80
    • 行番号 86: ServerAdmin root@localhost –>> ServerAdmin My_email_address
    • 行番号 95: #ServerName www.example.com:80 –>> ServerName VPS_DomainName:80
    • 行番号 119: DocumentRoot "/var/www/html" –>> DocumentRoot "/home/centos/www/html"
    • 行番号 124: <Directory "/var/www"> –>> <Directory "/home/centos/www">
    • 行番号 131: <Directory "/var/www/html"> –>> <Directory "/home/centos/www/html">
    • 行番号 144: Options Indexes FollowSymLinks –>> Options FollowSymLinks
    • 行番号 151: AllowOverride None –>> AllowOverride FileInfo Indexes Limit
      うちの場合,この行の変更は, WordPress のためである。
    • 行番号 164: DirectoryIndex index.html –>> DirectoryIndex index.php index.html
  3. 注) exstra.conf の場所: /etc/httpd/conf.d
    デフォルトの exstra conf : autoindex.conf, userdir.conf, welcome.conf
  4. 注 2) module.conf の場所: /etc/httpd/conf.modules.d/
  5. 注 3) log ファイルのローテートの設定をしていないのだが, Apache Httpd が自動でやってくれているようだ。(サーバを 1 日以上稼働したのち, /var/log/httpd/ を見たら,日ごとの log になっていた)。いつからこうなったんだろう?それとも, CentOS7 固有の機能なのか?
  6. 通常,ユーザのホームディレクトリのパーミッションは 700 であるが, httpd のアクセスを許可するために, 701 にしておかなくてはいけない。このことは, userdir.conf に書いてあった。
    $ chmod 701 centos
  7. DocumentRoot をユーザホームディレクトリに割り当てたので, httpd がアクセスできるように, SELinux の設定を変更する。これについての情報は, httpd_selinux(8) にあった。しかし, CentOS7 で見ようとしたら httpd_selinux(8) が空だったんだが,どうしてだろう。
    この際,オンラインの httpd_selinux(8) をご覧あれ。
    $ sudo setsebool -P httpd_enable_homedirs on
    $ sudo systemctl start httpd.service
    サービスを起動したら,エラーメッセージ “Job for httpd.service failed. See ‘systemctl status httpd.service’ and ‘journalctl -xn’ for details.” が出ちゃった。ユーザディレクトリに ‘www’ と ‘html’ を作るのを忘れてた。ユーザ centos として,以下の作業をやった。
    [centos@localhost ~]$ mkdir www
    [centos@localhost ~]$ cd www
    [centos@localhost www]$ mkdir html
    ここで,両ディレクトリの context を確認しておく。
    $ ls -Z
    drwxrwxr-x. test test unconfined_u:object_r:httpd_user_content_t:s0 www
    $ ls -Z
    drwxrwxr-x. test test unconfined_u:object_r:httpd_user_content_t:s0 html
  8. 再度, $ sudo systemctl start httpd.service
  9. $ sudo firewall-cmd --permanent --zone=public --add-service=http
    Httpd テストページ
    Httpd テストページ
    $ sudo firewall-cmd --reload
    $ sudo systemctl enable httpd.service
    注 4) 各 Well-Known-Port の設定は,前もって済んでいるみたいだ。そんなわけでポート 80 についての firewall-cmd はいらない模様。
  10. http://VPS_DomainName/ にアクセスすると,右の図のようなページが見えるはずである。

||MariaDB のインストール||

  1. $ sudo yum install mariadb-server mariadb
    インストールされたバージョンは, mariadb.x86_64 1:5.5.40-1.el7_0 と mariadb-server.x86_64 1:5.5.40-1.el7_0 だった。
  2. $ sudo systemctl start mariadb
  3. $ sudo mysql_secure_installation
    Enter current password for root (enter for none): <<-- [Enter] キーを打つ。 Set root password? [Y/n] <<-- [Enter] キーを打つ。 New password: <<-- root のパスワードを設定。 Re-enter new password: <<-- パスワードの確認 = もう一度打つ。 以下の項目については, [Enter] キーを打つ⇩。 Remove anonymous users? [Y/n]
    Disallow root login remotely? [Y/n]
    Remove test database and access to it? [Y/n]
    Reload privilege tables now? [Y/n]
  4. $ sudo systemctl enable mariadb.service

||PHP のインストール||

  1. $ sudo yum install php php-mysql php-mbstring
    インストールされたバージョンは, php.x86_64 5.4.16-23.el7_0.3 , php-mbstring.x86_64 5.4.16-23.el7_0.3 , php-mysql.x86_64 5.4.16-23.el7_0.3 だった。
    php.conf はインストール時に,自動的に /etc/httpd/conf.d に作られる。
  2. /etc/php.ini を編集する。
    $ sudo vi /etc/php.ini
     
    :set nu’ で行番号を表示する。

    • 行番号 243: output_buffering = 4096 –>> output_buffering = Off
    • 行番号 314: disable_functions = –>> disable_functions ="shell_exec, suexec, passthru"
    • 行番号 375: expose_php = On –>> expose_php = Off
    • 行番号 811: allow_url_fopen = On –>> allow_url_fopen = Off
    • 行番号 878: ;date.timezone = –>> date.timezone ="Asia/Tokyo"

    注 5) additional.ini の場所: /etc/php.d
    デフォルトの additional ini: curl.ini, fileinfo.ini, json.ini, mbstring.ini, mysql.ini, mysqli.ini, pdo.ini, pdo_mysql.ini, pdo_sqlite.ini, phar.ini, sqlite3.ini, zip.ini

  3. $ sudo systemctl restart httpd.service

||phpMyAdmin のインストール||

  1. phpMyAdmin がほしいんだが, base, extras, updates リポジトリにはなかったので, ‘epel’ を追加することにした。
    $ sudo yum install epel-release
  2. $ sudo yum install phpmyadmin
    インストールされたバージョンは, phpMyAdmin.noarch 4.2.11-1.el7 だった。
    phpMyAdmin.conf はインストール時に,自動的に /etc/httpd/conf.d に作られる。
  3. /etc/httpd/conf.d/phpMyAdmin.conf を編集する。
    $ sudo vi /etc/httpd/conf.d/phpMyAdmin.conf

    うちの phpMyAdmin.conf は下記のような感じ。
    # phpMyAdmin - Web based MySQL browser written in php
    #
    # Allows only localhost by default
    #
    # But allowing phpMyAdmin to anyone other than localhost should be considered
    # dangerous unless properly secured by SSL

    Alias /phpMyAdmin /usr/share/phpMyAdmin
    Alias /phpmyadmin /usr/share/phpMyAdmin

    <Directory /usr/share/phpMyAdmin/>
       AddDefaultCharset UTF-8

       <IfModule mod_authz_core.c>
         # Apache 2.4
         <RequireAny>
           Require ip my_global_IP
           Require host my_mobile_host
         </RequireAny>
       </IfModule>
    </Directory>

    <Directory /usr/share/phpMyAdmin/setup/>
       <IfModule mod_authz_core.c>
         # Apache 2.4
         <RequireAny>
           Require ip my_global_IP
           Require host my_mobile_host
         </RequireAny>
       </IfModule>
    </Directory>

  4. $ sudo systemctl restart httpd.service

||vsftpd のインストール||

  1. $ sudo yum install vsftpd
    インストールされたバージョンは, vsftpd.x86_64 3.0.2-9.el7 だった。
  2. Edit /etc/vsftpd/vsftpd.conf.
    $ sudo vi /etc/vsftpd/vsftpd.conf
     
    :set nu’ で行番号を表示する。

    • 行番号 12: anonymous_enable=YES –>> anonymous_enable=NO
    • 行番号 82: #ascii_upload_enable=YES –>> ascii_upload_enable=YES
    • 行番号 83: #ascii_download_enable=YES –>> ascii_download_enable=YES
    • 行番号 100: #chroot_local_user=YES –>> chroot_local_user=YES
    • 行番号 101: #chroot_list_enable=YES –>> chroot_list_enable=YES
    • 行番号 103: #chroot_list_file=/etc/vsftpd/chroot_list –>> chroot_list_file=/etc/vsftpd/chroot_list
    • 行番号 128: –>> local_root=www/html
  3. $ sudo setsebool -P ftp_home_dir on
    local_enable=YES をアンコメントしている場合は, on にするようにと, vsftpd.conf に書いてあった。
  4. $ sudo vi /etc/vsftpd/chroot_list
    chroot_list に ‘admin’ を追加した。
  5. “chroot_~” をアンコメントして,一般ユーザとして, FTP 経由でアクセスしたら, 500 OOPS: vsftpd: refusing to run with writable root inside chroot() が出た。
    で, allow_writeable_chroot=YES を vsftpd.conf に追加。この情報は, 500 OOPS: vsftpd: refusing to run with writable root inside chroot() Login failed on debian (魚拓です)からもらった。
    行番号 104: –>> allow_writeable_chroot=YES
  6. $ sudo systemctl start vsftpd.service
    $ sudo systemctl enable vsftpd.service
    $ sudo firewall-cmd --permanent --zone=public --add-service=ftp
    $ sudo firewall-cmd --reload
カテゴリー
Linux

初めての VPS-#2 (SSH 接続)。

The same article in English

 昨日の朝, WordPress 4.0.1 になっていた。セキュリティ・アップデートということだが,主として, XSS 関連のようだ。自動でアップデートされると思うが,されない場合は,手動での早急なアップテートをお奨めする。 “An extremely unlikely hash collision could allow a user’s account to be compromised, that also required that they haven’t logged in since 2008 (I wish I were kidding).” というのを読んで,思わず笑っちゃったが,笑いごとじゃないよなあ(溜息)。

 CentOS7 は標準で SSH が使えるようだ。 OS 変更後, TeraTerm で接続してみた。もちろん,他の SSH クライアントでも構わない, PuTTY とか WinSCP とか。 SSH サーバの現時点のバージョンは 6.4p1-8 だった。

 標準の設定だと, root かつ パスワードでアクセス可能なので,ちょっと,不安。細かい設定は後回しとしても,最小限,これだけは変えておこう。

 設定いじりの前に, TeraTerm で 認証鍵ペアを作った。秘密鍵には, passphrase も設定した。サーバ上でも鍵は作れるが,それだと,秘密鍵のほうをネット経由でやり取りすることになる。これが嫌いなのだ。多人数相手だと,メールででもやり取りしないと仕方ないだろうが。

||その 1 Sudoers ファイルの編集||

  1. VPS コントロールパネルにログインし,「リモートコンソール」をクリック,続いて「VNCコンソールを開く」をクリック。
  2. 1 分以内に,「HTML5モードで開く」をクリックすると, QEMU が別窓で開く。
  3. # usermod -G wheel centos  <--- 「centos」というのは, sudo を使わせたいユーザ。 # visudo
    ファイルが開く。
  4. ‘/wheel’ をやって,「wheel」のある行を探す。
    「%wheel ALL=(ALL) ALL」の行頭に「#」があったら,外して,アンコメントする。しかし,今回は,「#」はなかった。ということで,そのまま, visudo を閉じる。
    注)visudo の使い方は,基本的には, vi エディタのと同じである。
  5. # su - centos
  6. $ sudo shutdown -h now
  7. ‘sudo’ 使用の初回には,下記のメッセージが出る。

    We trust you have received the usual lecture from the local System Administrator. It usually boils down to these three things:

    #1) Respect the privacy of others.
    #2) Think before you type.
    #3) With great power comes great responsibility.

    パスワードを要求される。
    [sudo] password for centos:

  8. “VPS ホーム” で,サーバが停止しているのを確認できる。サーバを再起動しておこう。

||その 2 policycoreutils-python のインストール||

  1. QEMU に再度ログイン。後で SSH のポートを標準から変更するときに, ‘semanage’ コマンドを使うので, policycoreutils-python をインストールしておく。
    # yum install policycoreutils-python

||その 3 SSH の設定を変更||

  1. TeraTerm (ttermpro.exe) を起動。 VPS に「centos」として,パスワード認証でログイン。
  2. 公開鍵 (id_rsa.pub) を TeraTerm の窓にドラッグ&ドロップ。 TeraTerm は SCP(Secure Copy Protocol) に対応しているので,「SCP」ボタンをクリック。
  3. $ mkdir .ssh
    $ chmod 700 .ssh
    $ cat id_rsa.pub > .ssh/authorized_keys
    $ chmod 600 .ssh/authorized_keys
    $ rm -f id_rsa.pub
  4. $ su -
    Password:  <--- root のパスワードを入力。
  5. # vi /etc/ssh/sshd_config
    sshd_config が開く。
  6. #Port22  —>  Port****
    #PermitRootLogin yes  —>  PermitRootLogin no
    PasswordAuthentication yes  —>  PasswordAuthentication no
     
    変更した sshd_config を上書き保存。

    # systemctl restart sshd.service

    注)**** には well-known ports 以外の数値を使う。ただし,数値は 0 ~ 65535。

  7. # firewall-cmd --permanent --zone=public --add-port=****/tcp
    # firewall-cmd --reload
    # semanage port -a -t ssh_port_t -p tcp ****
  8. # exit
    $ exit
    TeraTerm が終了する。
  9. 再度, TeraTerm (ttermpro.exe) を起動。今度は,鍵認証方式で「centos」として,ログイン。新しい SSH ポート(****)を使う。今回は秘密鍵の passphrase も必要である。
  10. SSH 接続で ‘sudo’ を使ってみる。

    $ sudo firewall-cmd --list-all
    public (default, active)
      interfaces: eth0
      sources:
      services: dhcpv6-client ssh
      ports: ****/tcp
      masquerade: no
      forward-ports:
      icmp-blocks:
      rich rules:

 SSH の設定変更,おしまい!!

 ところで, 15 日に PHP5.6.3 にアップデートした。 ChangLog はこんな感じ。

カテゴリー
Linux

初めての VPS-#1 (CentOS7 のインストール)。

The same article in English

 くりくりさんのコメントに触発されて,さくらのVPSCentOS7 を使ってみようと思い, 18 日に 2 週間お試しに登録した。

 日本語のサービスしかなくて,日本に住んでないと使えないようだが,英語ブログでも紹介した。

図 1 お申し込み
図 1 お申し込み
||さくらのVPS に仮登録||

  1. さくらのVPS にアクセスして,「お申し込み (図 1)」をクリック。
  2. 「さくら VPS のお申し込み」ページに進む。「利用規約の確認へ (図 2)」をクリック。
  3. 「以下の約款及び個人情報の取扱いについてよくご確認ください。」ページに進む。「基本約款」と「個人情報の取扱いについて」を印刷し,じっくり読む。「同意する」をチェックし,「つぎへ –>」をクリック (図 3)。
  4. 「お客様の情報をご入力ください」のページに進む。
    図 2 利用規約の確認へ
    図 2 利用規約の確認へ

    以下の項目を記入。 (*) は必須項目。

    • メールアドレス(*):
    • ご契約者の種別(*):
    • ご契約者名(*):
    • ご契約者名カナ(*):
    • 図 3 「約款」&「個人情報の取扱いについて」
      図 3 「約款」&「個人情報の取扱いについて」
      生年月日(*)
    • 性別(*):
    • 郵便番号(*):
    • ご住所(*):
    • 街区名・番地等(*):
    • 建物名等:
    • 電話番号(*):(※携帯可)
    • FAX番号:

    「つぎへ –>」をクリック。

  5. 「会員メニューへログインするためのパスワードを指定してください」ページに進む。
    • パスワード:
    • 「ひみつ」の質問 :
    • 「ひみつ」の答え:

    「つぎへ –>」をクリック。

  6. 「サービスプラン」のページに進む。
    • 「さくらのVPS 1G」を選択。
    • レジデンスを「石狩/東京/大阪」から選択。

    「つぎへ –>」をクリック。

  7. 「支払方法」のページに進む。
    • 「毎月払い/年払い」から選択。
    • 2 週間お試しの場合は,「クレジットカード」しか使えない。
    • 注意書きがいろいろあるが,特に朱書きのものは,大事。
      ・お申込から2週間後に自動で本登録になります。キャンセルの場合は、お客様にて行っていただく必要がございます。
      ・会員メニューから「本登録」をするとキャンセルが行えなくなります。

    「つぎへ –>」をクリック。

  8. 図 4 以下の通りお申込を受付いたしました
    図 4 以下の通りお申込を受付いたしました
  9. 「最終のご確認」のページに進む。
    必要に応じて,印刷しておこう。
  10. 「以下の通りお申込を受付いたしました」のページに進む。
    • 会員ID
    • プラン名
    • サービスコード
    • メールアドレス

    「会員メニューへお進みください」をクリックする (図 4)。

 「会員メニュートップ」に進む。ログアウト。これで,仮登録は,終わり。

||VPS コントロールパネルにログイン||

  1. VPSコントロールパネル からログイン。
    IPアドレスとパスワードは「[さくらのVPS] 仮登録完了のお知らせ」メールに記載されている。
  2. まずは, VPS コントロールパネルのパスワードを変更。

||CentOS7 をインストール||

  1. 標準の OS は CentOS6 なので, CentOS7 をインストールするために,「OS再インストール」をやる。
  2. 「OS再インストール」に進み,「カスタムOSインストールへ」をクリック。
  3. 「CentOS 7 x86_64」を選択し,「確認」をクリック。
  4. 「実行」をクリック。
  5. 1 分以内に,「HTML5モードで開く」をクリック。「QEMU」が別窓で開く。
  6. インストールについては, CentOS 7 を参照。
    インストール中に, root のパスワードの設定と一般ユーザの作成を行う。
  7. インストールは,かなり時間を食う。終わったら,「Server disconnected…」というメッセージが出るので,「VPSホーム」に戻って,サーバを起動する。「ステータス」が「停止」から「稼働中」に代わる。
  8. これで, VPS の OS が CentOS7 になった。

 インストール中に困ったのは, QEMU で最下部が全く見えなかったこと。おかげで,「Reclaim space」や「Begin Installation」を,勘 + キー操作でやる羽目になった。ヤレヤレ。

カテゴリー
everyday life WordPress

覚え書-#21。

The same article in English
ROLIS 降下中の画像
ROLIS 降下中の画像
 みなさん,もう聞きましたか?
 
 12 日 15:35 UTC (つまり 13 日 00:35 JST) に,フィラエが,彗星に着いたってさ。すごいよなぁ。
 
 チュリュモフ・ゲラシメンコ彗星だよ。ワォ!!
 
 ところで,我がハヤブサ 2 も 11/30 打ち上げ予定だよねー。待ち遠しいな,天気がいいといいなぁ。
    メモ 1

  • 見出しNotes の見出しに Kranky を使うために,メインサイトの style.css を変更した。頭に “+” がある行を追加した。
    @import url("../sugar-and-spice/style.css");
    +@import url(https://fonts.googleapis.com/css?family=Kranky);
     
    /* Typography */
    h1, h2, h3, h4, h5, h6 {
    color: #000;
    }
    +h2 {
    + font-family: 'Kranky', cursive, Arial, sans-serif;
    + font-size: 2em;
    + margin: 0 0;
    +}
     
    変更前の CSS はこれ
     
    注)<h2> タグの関係をいじったが,うちの場合,このタグはメインサイトのほかの部分では使っていない。で,他に影響はないのだ。
  • メモ 2

  • Google Analytics by Yoast の使用をやめた。 Google アナリティクス‎ は使っているので, ID を手動で設定しなおした。
    1. ‘analyticstracking.php’ を Google アナリティクス‎のトラッキング ID ページの指示通りに作り, child theme のディレクトリにコピーする。
    2. サイトテーマの header.php を child theme のディレクトリにコピーする。
    3. 新しい headr.php を編集する。
      <body> タグの直下に, <? php include_once ("analyticstracking.php")?> を追加。
    4. 以上。
      注)データに変更が反映されるのには,しばらく時間がかかるようだ。
カテゴリー
everyday life

これ,買っちゃいました!! (^^;)

The same article in English
USBゲームパッド スーパーファミコン風
USBゲームパッド スーパーファミコン風

これ,買っちゃいました。これって何かというと,右の広告写真をご覧ください \(^o^)/。

先週,古ーーいのが壊れちゃいまして,しかし,近隣のお店にはそういうのがなかったもんで,通販通販と探しました。で,見つけちゃったんですよ,右のヤツ。 Buffalo 製なんですけどね,そっくりでしょ!? 昔懐かしい任天堂のやつに。スーパーファミコン華やかなりしころを思い出させますねぇ。

土曜の夜 9 時ごろ注文したら,日曜の昼の 3 時に着きました。 Amazon.co.jp ,仕事早いですね。配達は,クロネコさんでした。

ちゃんと動いてまっせ。満足ですワ,ヘヘッ。

カテゴリー
Vulnerability

(緊急)登録情報の不正書き換えによるドメイン名ハイジャックとその対策について

投稿アップデート情報  追記(11/7)

 昨日,「(緊急)登録情報の不正書き換えによるドメイン名ハイジャックとその対策について」というのが出ていたので,慌てて, NetowleNom を見に行った。見たのは, Netowl のレジストラロックがしっかりかかっているかと,両方の登録データが変わっていないかだけだが。パスワードは,もともとかなり複雑にして使っているので,変えても仕方ないだろうし。変えるタイミングもあるし。レジストラロックというのは,レジストラが提供しているわけで, Netowl のレジストラロックは Netowl が提供しているわけだ。 com ドメインの場合, Netowl はリセラーでレジストラとしては行動しないようだが,その場合でも,ロックは効くんだと思う。判断理由は, Value-Domain のときも Value-Domain はリセラーでレジストラは Key-Systems だったんだが,そのときも同じシステムだったからだ。それに eNom の設定では, Netowl がリセラーとして管理している私のドメインについては,そういう項目はなかったし。もっとも,確認はとっていないから,私が勝手に推測しているだけだ(汗)。
 ところで,「(緊急)登録情報の不正書き換えによるドメイン名ハイジャックとその対策について」で記述のあるロックは,レジストリロックだ。これがよくわからない。記事を書いた時点(11/6)では,脳ミソが勝手に「リ」を「ラ」と読んでいた(滝汗)。レジストリロックというと,レジストリ側でロックをかけるという意味だろう。 com のレジストリというと, InterNIC ですかね。 jp だと, jprs だよな。 jp はともかく com って膨大な数だよ。実際の管理がレジストリ自体で可能なのかね。実は,レジストラやリセラーに管理委託しているとかなるんじゃないのか。
 レジストラロックていうのは,多分, clientTransferProhibited の状態のことだと思うんだけど,レジストラロックとレジストリロックってどう違うんですかね。アチコチ読んでもすっきりと納得がいかない。
 どなたか,ご指導よろしくお願いいたします m(_”_)m。

 この件に関しては,ユーザにできることは限られているから,レジストラや権威 DNS サーバの運営者や CDN サービスなどにしっかりしてもらわないとどうしようもない。今年, eNom に移管するとき,過去の事件が頭をよぎったりしたのだが, jp 国内のドメインでもこういうことの起こる時代になったんだな。狙われるようになったら,国内には危ないところが,いっぱーーいあるんだろうと,戦々恐々である。

 「速さにたじろぐ」のときにも書いたが,我が国は結構蚊帳の外だったからねぇ。ありがたくないけど,このあたりもグローバル化の時代を迎えたわけだ。

 こんなことなくても,白物家電がゾンビ PC 化したり, USB の設計そのものが悪用されたりと,なんか無力感が甚だしいのになあ。

 しかし,関連で名前挙がっている企業がおっきいとこだねえ。大きいとこはピンポイントで狙われるだろうから,その企業が特に弱いということではなく,強度については,どこも変わらんのだろうなあ。

追記(11/7):
 上の追記で,レジストリロックとレジストラロックについて,
> どなたか,ご指導よろしくお願いいたします m(_”_)m。
と書いたのだが,くりくりさんが,「登録情報の誤りによるドメインの停止措置について」というページを教えて下さった。なるほど,これがレジストリロックなんですね。よくわかる。

 レジストラロックは,あくまで, Transfer Prohibited ,つまりドメイン移管禁止だもんね。当然ながらユーザが ON/OFF できる(リセラーに頼んで変えてもらうということも含めて)。レジストリロックは,ドメインの期限切れではないのに registrar hold にされることなんだ。ということは,移管どころか,ドメインの使用自体ができなくなってしまうわけだ。対応が遅れるとドメインが削除される可能性もあると。なるほど。

 くりくりさん,ありがとうございました m(_”_)m。