18. ftpサーバーの導入。ftp で wordpress のファイルをサーバーにアップロードする

15. phpMyAdmin のログイン制限 の続き。

今回はFTPでのアップロードを行うが、CurlWgetでダウンロードしてきた方が早い↓

『WordPress を FTP を使わず Curl でダウンロード、解凍して使う』

 

vsftpd のインストール

[root@localhost ~]# yum install vsftpd
読み込んだプラグイン:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
epel/x86_64/metalink                                             | 6.3 kB  00:00:00     
 * base: ftp.jaist.ac.jp
 * epel: ftp.jaist.ac.jp
 ~(中略)~
インストール  1 パッケージ

総ダウンロード容量: 169 k
インストール容量: 348 k
Is this ok [y/d/N]: y
Downloading packages:
vsftpd-3.0.2-22.el7.x86_64.rpm                                   | 169 kB  00:00:00     
 ~(中略)~
完了しました!
[root@localhost ~]# 

vsftpd の起動,自動起動設定。

[root@localhost ~]# systemctl start vsftpd
[root@localhost ~]# systemctl enable vsftpd
Created symlink from /etc/systemd/system/multi-user.target.wants/vsftpd.service to /usr/lib/systemd/system/vsftpd.service.
[root@localhost ~]# systemctl status vsftpd
 vsftpd.service - Vsftpd ftp daemon
   Loaded: loaded (/usr/lib/systemd/system/vsftpd.service; enabled; vendor preset: disabled)
   Active: active (running) since 土 2018-08-04 14:05:52 JST; 10s ago
 ~(中略)~
 8月 04 14:05:52 localhost.localdomain systemd[1]: Started Vsftpd ftp daemon.
[root@localhost ~]#

CentOS に接続するための IPアドレスの確認。

[root@localhost ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 08:00:27:b9:45:bc brd ff:ff:ff:ff:ff:ff
    inet 10.0.2.15/24 brd 10.0.2.255 scope global noprefixroute dynamic enp0s3(こちらが CentOS ⇒ インターネットへの接続口)
       valid_lft 85631sec preferred_lft 85631sec
    inet6 fe80::b2bd:45fe:7c03:39c9/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
3: enp0s8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 08:00:27:48:bb:0c brd ff:ff:ff:ff:ff:ff
 (ホスト ⇔ ゲスト(CentOS)間の接続口は、まだ繋がっていない)
[root@localhost ~]# 

現状 CentOS ⇒ インターネットへの接続口(NAT)は繋がっているが、ホストOS(Windows)⇔ ゲストOS(Linux)間の接続口(ホストオンリーアダプター)は繋がっていないので繋げる。
なんのこっちゃという方は VirtualBox の初期設定を思い出してください ↓
3. VirtualBOX に CentOS7を登録する(仮想マシンの初期設定) - 授業のメモ
はてな
CentOS 右下の「ネットワークインターフェース」アイコンをクリック ⇒ 接続の管理。

f:id:hirose-test:20180804143426j:plain

「enp0s8」を選択し「編集」をクリック。

f:id:hirose-test:20180804143434j:plain

「接続名」に分かりやすい名前を入れ「自動的に接続する」にチェックを付け「OK」で閉じる。(もしこのとき「KDE ウォレットがうんぬん」と出たら⇒(後で))

f:id:hirose-test:20180805020055j:plain

未接続の方のネットワークインターフェース ⇒ host-guest をクリック。

f:id:hirose-test:20180804150049j:plain

「host-guest に接続済み」となればOK

f:id:hirose-test:20180804150109j:plain

再度 ip a

[root@localhost ~]# ip a
 ~(前略)~
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 08:00:27:b9:45:bc brd ff:ff:ff:ff:ff:ff
    inet 10.0.2.15/24 brd 10.0.2.255 scope global noprefixroute dynamic enp0s3
       valid_lft 82496sec preferred_lft 82496sec
    inet6 fe80::b2bd:45fe:7c03:39c9/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
3: enp0s8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 08:00:27:48:bb:0c brd ff:ff:ff:ff:ff:ff
    inet 192.168.56.101/24 brd 192.168.56.255 scope global noprefixroute dynamic enp0s8
    ( ↑ホストからゲストへ接続するための ip アドレス)
       valid_lft 1147sec preferred_lft 1147sec
    inet6 fe80::dcce:fc28:cc87:19cb/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
[root@localhost ~]# 

FileZilla を開いて各種入力 → 「接続」
プロトコルFTPでは繋がらず、SFTP でないといけない。vsftpd は Very Secure な FTPデーモンの略だそうで、セキュアじゃない普通のFTPなんかでは繋げてあげないということだと思う。

f:id:hirose-test:20180804151555j:plain

パスワードを入力して「OK」。

f:id:hirose-test:20180804152522j:plain

「不明なホスト鍵」の注意書きが出るが、そのまま「OK」(毎度確認するのが面倒なら「常にこのホストを信用し、この鍵をキャッシュに追加」にチェックを付ける)

接続完了。

f:id:hirose-test:20180804155144j:plain

この後、WordPressのファイルを CentOS/var/www/html/wordpress/ ディレクトリにアップロードする。

一旦 Linux のコンソールに戻り、/var/www/html/wordpress ディレクトリを作る。(Filezilla からもできるが、Linux の練習として)

[root@localhost ~]# cd /var/www/html/ htmlディレクトリまで移動
[root@localhost html]# ls ディレクトリ内のファイル,フォルダの確認
index.html  phpinfo.php
[root@localhost html]# mkdir wordpress ディレクトリを新規作成
[root@localhost html]# ls
index.html  phpinfo.php  wordpress wordpressディレクトリができた
[root@localhost html]#

下記からWordPressWindowsにダウンロード。解凍。

日本語 « ダウンロード — WordPress

FileZilla に戻り、一般ユーザーでの接続を切り root ユーザーで入り直します。一般ユーザーのままアップロードをするとディレクトリの作成権限がないためアップロードは失敗します。

f:id:hirose-test:20180804233002j:plain

f:id:hirose-test:20180804233011j:plain

Windows 側は先ほどダウンロード・解凍した wordpress フォルダを開く。Linux 側は / (ルートディレクトリ) から /var/www/html/wordpress と順にクリックし、wordpressディレクトリを開く。

f:id:hirose-test:20180804233427j:plain

Windowswordpressフォルダの「中身」を全選択し、アップロードする。

f:id:hirose-test:20180804233824j:plain

パスワードの入力欄が出たら「FileZilla が終了するまでパスワードを記憶」にチェックを付けておいてください。

f:id:hirose-test:20180804234155j:plain

アップロード完了。

f:id:hirose-test:20180804234205j:plain

誤って wordpressフォルダそのものをアップロードしてしまうと、Linux 側にもすでに wordpressディレクトリがあるのでダブってしまう。間違ってアップロードしてしまったら、Linux 側のダブりディレクトリを右クリックして一度削除し、再度 Windows wordpress フォルダの中身だけで上げなおす。

f:id:hirose-test:20180804225515j:plain

f:id:hirose-test:20180804225519j:plain

また、何かしら間違って大量アップロードをしてしまった場合に途中停止させるには Ctrl + . (ピリオド)。それでも止まらない時は諦めて終わるまで待つか無理やり終了させる。
中途半端に転送を止めてしまうと、キューに未送信のファイルが大量に残るので、Ctrl + A で全選択して右クリックから削除しておきましょう。

f:id:hirose-test:20180804235005j:plain

Linux 側でも確認。アップロードされてます。

[hrs@localhost html]$ cd wordpress/
[hrs@localhost wordpress]$ ll ←(エルエル。ls -la の短縮表記)
合計 192
-rw-r--r--.  1 root root   418  8月  4 23:39 index.php
-rw-r--r--.  1 root root 19935  8月  4 23:39 license.txt
-rw-r--r--.  1 root root 10303  8月  4 23:39 readme.html
-rw-r--r--.  1 root root  5458  8月  4 23:39 wp-activate.php
drwxr-xr-x.  9 root root  4096  8月  4 23:39 wp-admin
 ~(中略)~
-rw-r--r--.  1 root root  3065  8月  4 23:39 xmlrpc.php

[hrs@localhost wordpress]$ cd ~ ← cd 半角スペース チルダ記号(キーボード右上)で各自のホームディレクトリに戻れる
[hrs@localhost ~]$ pwd ← 今いるディレクトリの確認
/home/hrs
[hrs@localhost ~]$ 

ブラウザで localhost/wordpress/wp-admin/ にアクセス。OK

f:id:hirose-test:20180804235708j:plain

「さあ、始めましょう!」をクリックして各種入力し
14. phpMyAdmin データベースとユーザーの新規作成で設定した内容)
「送信」をクリック。

f:id:hirose-test:20180805234907j:plain

しかし、おそらく下記のように「ファイル wp-config.php に書き込めませんでした。」と表示されうまくいかないはずです。

f:id:hirose-test:20180805235058j:plain

アップロードしたWordPress関連のファイルに書き込み権限がないからです。
そこで権限を一時的に付与します。

[root@localhost ~]# cd /var/www/html/ wordpressのあるディレクトリへ移動
[root@localhost html]# ll パーミッションの確認
合計 12
-rw-r--r--. 1 root root  141  7月 31 23:27 index.html
-rw-r--r--. 1 root root   24  8月  1 00:18 phpinfo.php
drwxr-xr-x. 5 root root 4096  8月  4 23:39 wordpress 755 です
[root@localhost html]# ll wordpress/ 内部ファイルは概ね 644 ディレクトリは 755
合計 192
-rw-r--r--.  1 root root   418  8月  4 23:39 index.php
-rw-r--r--.  1 root root 19935  8月  4 23:39 license.txt
-rw-r--r--.  1 root root 10303  8月  4 23:39 readme.html
-rw-r--r--.  1 root root  5458  8月  4 23:39 wp-activate.php
drwxr-xr-x.  9 root root  4096  8月  4 23:39 wp-admin
-rw-r--r--.  1 root root   364  8月  4 23:39 wp-blog-header.php
-rw-r--r--.  1 root root  1889  8月  4 23:39 wp-comments-post.php
-rw-r--r--.  1 root root  3886  8月  4 23:39 wp-config-sample.php (白字:通常ファイル)
drwxr-xr-x.  5 root root    69  8月  4 23:39 wp-content (青字:ディレクトリ)
 ~(後略)~
[root@localhost html]# 

これらを全て一時的に 777 に変えます。
ファイルパーミッションの変更 - WordPress Codex 日本語版
に記載のあるようにパーミッション 777 は危険です。しかし必要ぽいディレクトリのみに権限を与えたり、766, 755 あたりでなんとかならないかいろいろ試してみたのですが chmod -R 777 ./wordpress/ で無防備にしないと書き込み成功しませんでした。と、いうわけで

[root@localhost html]# chmod -R 777 ./wordpress/
[root@localhost html]# ll
合計 12
-rw-r--r--. 1 root root  141  7月 31 23:27 index.html
-rw-r--r--. 1 root root   24  8月  1 00:18 phpinfo.php
drwxrwxrwx. 5 root root 4096  8月  4 23:39 wordpress
[root@localhost html]# ll ./wordpress/
合計 192
-rwxrwxrwx.  1 root root   418  8月  4 23:39 index.php
-rwxrwxrwx.  1 root root 19935  8月  4 23:39 license.txt
-rwxrwxrwx.  1 root root 10303  8月  4 23:39 readme.html
-rwxrwxrwx.  1 root root  5458  8月  4 23:39 wp-activate.php
drwxrwxrwx.  9 root root  4096  8月  4 23:39 wp-admin
-rwxrwxrwx.  1 root root   364  8月  4 23:39 wp-blog-header.php
-rwxrwxrwx.  1 root root  1889  8月  4 23:39 wp-comments-post.php
-rwxrwxrwx.  1 root root  3886  8月  4 23:39 wp-config-sample.php (緑字:実行可能な通常ファイル)
drwxrwxrwx.  5 root root    69  8月  4 23:39 wp-content (緑背景・青文字:Other のWriteアクセス可能なディレクトリ)
 ~(後略)~  (ファイル種別に基づく色付き表示 - lsっぽいコマンドを作る - 碧色工房

一旦 WordPressのエラーページからブラウザの「戻る」ボタンで戻り、あらためてパスワードを入力して、再度チャレンジ。が、ダメ。

f:id:hirose-test:20180806010815j:plain

しかし、よく見ると今回は何やら通知が出ている。
めっちゃ見辛いが開いてみると…SELinux が原因で WordPress ディレクトリへの書き込みが拒否されているということはわかる。

f:id:hirose-test:20180806010425j:plain
f:id:hirose-test:20180806010434j:plain
f:id:hirose-test:20180806010446j:plain
f:id:hirose-test:20180806010454j:plain

SELinux を止める。(疲れたので後日)

/* -----codeの行番号----- */