この記事ではVMware上に設置したwebサーバに対して、FTPを使ってファイルをアップロードする方法について記載します。
FTPサーバの簡単な構築と、HTMLファイルの更新手順について解説します。
解説する環境について
windowsPCにインストールしたVMware上に、ubuntu22.04が起動
同ubuntuでは、webサーバ(apache2)がインストールされている状態
ubuntuに割り振られたIPアドレスは、「192.168.19.128」とします(確認方法は過去のブログを参照)
〇必要となるソフトウェア
windows ffftp ※定番のFTPアプリです
https://forest.watch.impress.co.jp/library/software/ffftp/
事前説明
VMwareは、パソコンの中にもう一台の仮想のパソコンを起動するソフトウェア(ミドルウェアとも呼ばれる)です。
windowsPCとubuntuPCがLANケーブルでつながっているというイメージです。
お互いのPC上でファイルを行き来させる場合には、LANを使ってファイル転送用プロトコル「FTP」で送受信させるのが一般的です。
FTPプロトコルを使用してファイルの送受信を行う定番ソフトウェアが「ffftp」です。
ubuntuPCにFTPサーバを構築する
まずは、VMware上のubuntuPCにFTPサーバを構築します。
ubuntuのコンソール上に次のコマンドを入力し、ubuntu上にFTPサーバをインストールします。
ちなみに、よく出てくる「sudo」というコマンドは、管理者として実行しなさい!という命令です。
ですから、次のコマンドは、
管理者として vsftpdというアプリをインストールしなさい!
という命令になります。管理者として実行するので当然管理者パスワードを求められます。
「su」はスーパーユーザの略で、windowsだと「administrator」にあたります。
「su(スーパーユーザ)」が「do(実行)」するからsudoらしいです。
Linux系OSでは管理者に成り代わる「su」というコマンドもありますが、セキュリティの関係からubuntuでは使えなくなっています。
$ > sudo apt install vsftpd
インストール直後のFTPは、セキュリティ上ファイルの更新ができない等の設定になっていますので、FTPサーバを起動する前に設定を変更します。
FTPの設定ファイルを更新する為に、ubuntuPCのコンソール画面から次のコマンドを入力し、テキストエディタの「nano」を使って設定ファイル(vsftpd.conf)を開きます。
$ > sudo nano /etc/vsftpd.conf
テキストエディター「nano」を開いた様子
よく使うコマンドは以下です。
Ctrl + X 保存しないで終了
Ctrl + S 保存して終了
とりあえずこれだけ覚えておけば大丈夫です。
設定ファイルの中を確認し、設定ファイル内にある設定を修正してください。
1 ローカルユーザのログインを許可する
local_enable=YES YESならこのままでOK
2 ファイルの上書きを許可する
#write_ebable=YES → write_enable=YES
3 アスキーモードでのアップロード、ダウンロードを許可する
#ascii_upload_enable=YES → ascii_upload_enable=YES
#ascii_download_enable=YES → ascii_download_enable=YES
4 ホームより上の階層へのアクセスを許可する
#chroot_local_user=YES → chroot_local_user=NO
#がついている行はコメントアウトされている状態なので、#を外すだけです。
修正したら、Ctrl + S ボタンを押して編集を保存してからnanoを終了させます。
今回は最低限の設定を行っているだけですので、外部に公開するFTPサーバを立てる場合には、ログを残したり、FTP用のユーザを準備したりするようにしてください。
FTPサーバを起動するためには、次のコマンドを入力します。
$ > sudo systemctl enable vsftpd
すでにFTPサーバを起動している場合は、次のコマンドで再起動することもできます。
$ sudo systemctl restart vsftpd
FTPサーバを終了させたい場合は、次のコマンドを使って停止することもできます。
$ > sudo systemctl stop vsftpd
ffftpの設定について
続いてwindowsPC側でffftpの設定を行います。
windowsPCでffftpを起動したら、左上にある「接続」タブの中にある「接続」を選択します。
ffftpを起動した状態
「接続」を選ぶと「ホスト一覧ウィンドウ」が開きますので、右上の「新規ホスト」ボタンを押してください。
「新規ホスト」を選ぶと、そのホストの設定画面が開くので、
ホストの設定名:サーバの名前(識別用)
ホスト名:サーバのIPアドレス
ユーザ名:ubuntuのログインID
パスワード:ubuntuのログインパスワード
を設定してください。
一度設定すると、次からはホスト一覧に表示されるようになります。
接続が成功すると、次のような画面になります。
左のウィンドウが、windowsPC
右のウィンドウが、ubuntuPC
になります。
エクスプローラのようにドラックでファイルを移動、複写したり、削除することができます。
ファイルのアップロードは、左のウィンドウから右のウィンドウにファイルをドラックするだけです。
ダウンロードは右のウィンドウから左のウィンドウにドラックしてください。
ubuntuは何も設定しないと、ホームフォルダが表示される設定になっています。
ホストの設定画面で初期表示フォルダも変えることができるので、自分が使いやすいフォルダに設定してください。
デフォルトホームページを更新する
それでは、ubuntuのwebサーバに表示されているデフォルトのホームページを更新してみます。
アップロードするホームページは、テキストファイルで次のHTMLファイルを作成します。
ファイル名 index.html
<html>
<body><h1>HELLO HTML!</h></body>
</html>
次は、ubuntuPCの公開フォルダのパーミッションを変更します。
apacheの公開フォルダは、初期設定だと
/var/www/html
になっています。
初期設定のままだと、htmlフォルダの所有者が「root(スーパーユーザ)」になっているのでログインユーザで更新ができません。
htmlフォルダの所有者を「ログインユーザ」に変更する為に、ubuntuPCのコンソールから、次のコマンドを入力します。
この作業を忘れると、ffftpでファイルをアップロードした際に、「553 could not create file」というエラーが出て焦ります。(焦りましたw)
$ > sudo chown ログインユーザ名 /var/www/html
$ > chmod 755 /var/www/html
chownという命令は、フォルダの所有者を変更する命令です。
htmlフォルダの所有者を「root」からログインユーザに変更しました。
chmodという命令は、フォルダのパーミッションを変更するための命令です。
Linux系OSでは、フォルダやファイルごとに書き込み権限、実行権限、読み込み権限が決められており、この権限のことをパーミッションと呼びます。
そして、パーミッションを変更するのがchmodという命令です。
三桁の数字は、一番左の桁から、所有者、同じグループ、その他のユーザのパーミッションと決まっています。
数字は7だと、書込・実行・読込全部許可
5だと、書込・読込許可
1だと、読込許可
という決まりになっています。(2進数で計算できます)
ホームページを公開するフォルダ(今回だと/var/www/html)は、
所有者は、書込、実行、読込許可
同じグループは、書込、読込許可
他のユーザは、書込、読込許可
にしたいので、パーミッション755を設定しました。
次はWindowsPCに戻って、作成したHTMLファイルをアップロードします。
ffftpを使ってubuntuPCの
/var/www/html
フォルダにアップロードして、今まで入っていた「index.html」ファイルを上書きしてください。
アップロードしたindex.htmlについては、パーミッションを
744
に変更しましょう。
ffftpを使うと、ファイルのパーミッションを変更することもできます。
ubuntuPCにアップロードしたファイルを右クリックして「属性変更」からパーミッションの確認と修正ができます。
index.htmlのパーミッションが744になっていれば大丈夫です。
更新したホームページを確認する
windowsPCのブラウザソフトを起動して、アドレスバーに
http://192.168.19.128/index.html
と入力すると、今までubuntuのデフォルトページだった場所に
HELLO HTML!
と表示されるようになります。
これで、作成したHTMLが公開されていることを確認できました。