http://kamuycikap.hatenablog.com/entry/2015/02/25/184420
http://make.bcde.jp/raspberry-pi/データベースを使うmysql/
を参考にした。終わり。
2016年8月20日土曜日
Raspi Apache PHP Install -> File Upload Memo
ラズパイでApache使ってwebサーバを立ち上げる。
Apache使ってWebサーバ構築したよ!的なのはいっぱい見る。
インストールして起動したよ!てところまで書いてる。
でも、その後どうやればいいのか誰も書いてない。
自分はホームページとか作ったことないし。。。
どうしよう。。。
忘れそうやし、わけわからんかったけど、実際にやったことをメモ(覚えてる範囲で)。
▪️OS
OS :Raspbian Jessie。
これに関してはもう忘れたので、パス。
▪️SSH
これに関しても忘れたので、パス。
http://qiita.com/morizotter/items/48ad0b17207b0dd66cac
http://usicolog.nomaki.jp/engineering/raspberryPi/raspberryPi_SSH.html
さんとか、いろいろ参考にした記憶はあるけど。。。
巡ったサイトが多すぎてリストにする気が起きない。(他の操作に関しても)
有線LANだとサクッといくっぽい?
無線LAN環境しかないから、RaspiにUSB無線LAN子機つないで、なんかいろいろ設定した。
ここでかなり時間食った気がする。confファイルをいじってなんかいろいろしたような・・・忘れた。
▪️Apache
http://usicolog.nomaki.jp/engineering/raspberryPi/raspberryPi_Apache2.html
https://www.raspberrypi.org/documentation/remote-access/web-server/apache.md
一番シンプルで初心者な自分的にはわかりやすかった。
とりあえず、
sudo apt-get install apache2
ってすれば、Apache入るし、勝手に動作開始する。
Raspiのブラウザ起動して、URLの欄に
http://localhost/
って打つと、
It Works!
ってでる。そしたらOK。起動できてる。
もしくは、ifconfigかなんかでRaspiに割り当てられてるIPアドレス見て、
http://xxx.xxx.xxx.xxx
(例えば、http://192.168.0.3)とかやると、Raspiにつながって、
It Works!
って同じようにでる。
みんなRaspiに外部からアクセスするためには、ルータをいじって、ポート80を解放しましょうとか書いてたけど、自分はローカルで使いたかったので、無視した。
▪️PHP
とりあえず、なんかみんなしてるし入れといた。
sudo apt-get install php5 libapache2-mod-php5 -y
これを叩けば終わり。勝手にインストールしてくれる。
で、こっからが問題。
まず、Raspiにアクセスした時、どこのファイルが表示されているのか?という問題。
絶対パスで、/var/www/html/index.html のファイルがそれにあたる。
つまり、これを書き換えれば、自分好みのHPを表示できる。
ただし、/var/www/以下?のフォルダ、ファイルはすべてroot権限でないと編集できないようになってる。
だから、編集する時は、sudo nano index.html みたいな感じで、管理者権限で毎回実行した。
ちなみに、オリジナルのindex.htmlを変更して、戻らなくなるのが怖かったので、
sudo cp index.html index_original.html
ってして、コピー作ってから編集した。
なんか、Apacheは、index.htmlとか、index.phpとか、indexっていう名前のファイルを探して、表示してるらしい。
で、index.htmlを編集した。でも、自分はチキンなので、全部をまるっと変えるのではなく、<body> </body>の中身だけ変更。
すると、こうなる。http://localhost を叩いた時、Hello Worldって出てれば成功。
あとは、HTMLの文法にのっとって好きに書いたら動くはず。(これはまだ
やってない)
とりあえず、index.htmlはできたので、今度は、ファイルを送信・受信したいと思った次第で。
/var/www/html/ の下に、send_text.phpと、receive_text.phpを作成する。
phpは、htmlの中に組み込める言語らしく、phpで書いた部分があれば、htmlではなく、拡張子をphpとする必要がある。ただ、phpで書いた部分がなくても、別にphpとしていて問題なく動くので、とりあえずphpとした。
cdで/var/www/html/に移動して、
sudo nano send_text.php
とすると、send_text.htmlが作成され、編集画面に遷移する。
nanoは、ただのテキストエディタ。vim使ってる多いけど、自分には難しかったよ。。。
send_text.htmlは、次の感じ。これ、どっかからコピペした気がする。
URL:http://www.php-labo.net/tutorial/php/upload.html
かな?
HTMLのフォームってやつは、ボタンを勝手に作ってくれるらしい。
actionが、ボタン押したらどのファイル実行する?ってやつ。
だから、これから作るreceive_text.phpを実行してくださいってことで、これを指定。
http://XXX.XXX.XXX.XXXは、今までRaspiにアクセスしてきたIPアドレス入れる。
だから、実際には、例として、http://192.168.0.3/receive_text.php ってなる。
methodは、POST、GETとかがあるらしいが、テキストファイルとかのファイルを送る時はPOSTらしい。GETは文字列データとかかな。
次、receive_text.php作る。
sudo nano receive_text.php
send_text.phpで作ったように、receive_text.phpも作成する。
例のごとく、これもコピペなわけで・・・
URL:http://www.php-labo.net/tutorial/php/upload.html
http://www.php-ref.com/web/03_move_uploaded_file.html
send_text.phpとおなじ。
ここで重要なのが、
send_text.phpの
<input type="file" name="file">
receive_text.phpの
$_FILES["file"]["name"]
の赤字部分がおなじであること。(多分)
receive_text.phpの似たような箇所($_FILES["file"])は、全部同様に一致してないといけない。
これで終わり。
receive_text.phpは、/var/www/html/img/ に送られてきたファイルを保存するだけ。
(テキストファイルなのにimgフォルダとは・・・)
なので、
htmlフォルダ内にcdで移動して、
sudo mkdir img
として、imgフォルダを作成しておく必要がある。
あとは、Raspiのブラウザ(他のPCからでもいい)で、
http://XXX.XXX.XXX.XXX/send_text.php
とすれば、さっき作ったsend_text.phpの画面が開く。
/var/www/html/以下のファイルは、こんな感じで参照できるっぽい。
ファイルを指定して、Submitボタンを押せば、自動的にreceive_text.phpの画面に遷移する。
成功したら"○○○○○をアップロードしました。"ってでるし、
失敗したら、"ファイルをアップロードできません。"ってでる。
ファイル選択せずにSubmitボタン押せば、"ファイルが選択されていません。"ってでる。
一応、/var/www/html/img/の中に、ファイルがアップロードされているかどうかを確認したらいいと思う。
cdで移動して、lsでみる。
忘れてた。
/var/www/以下の権限をrootからwww-dataに変更した。
関係あるかはわからんけど。
Apacheはwww-dataというユーザーとグループで動かされているらしい。
もしかしたら、phpからのファイルコピーとかは、これをしていないといけないのかもしれない。
あと、piユーザーで動かす時には、piユーザーをwww-dataのグループに所属させてやらないといけない。とかも書いてあったから、それもした。
http://netlog.jpn.org/r271-635/2013/01/raspberry_pi_webserver.html
http://takuya-1st.hatenablog.jp/entry/20130102/1357112844
とかを参考にした。
なんか躓きまくって、いろんなところ参照したし、いろいろ遠回りしたから、やったのはこれだけではないけど、もう書くのめんどいし終わり。
Apache使ってWebサーバ構築したよ!的なのはいっぱい見る。
インストールして起動したよ!てところまで書いてる。
でも、その後どうやればいいのか誰も書いてない。
自分はホームページとか作ったことないし。。。
どうしよう。。。
忘れそうやし、わけわからんかったけど、実際にやったことをメモ(覚えてる範囲で)。
▪️OS
OS :Raspbian Jessie。
これに関してはもう忘れたので、パス。
▪️SSH
これに関しても忘れたので、パス。
http://qiita.com/morizotter/items/48ad0b17207b0dd66cac
http://usicolog.nomaki.jp/engineering/raspberryPi/raspberryPi_SSH.html
さんとか、いろいろ参考にした記憶はあるけど。。。
巡ったサイトが多すぎてリストにする気が起きない。(他の操作に関しても)
有線LANだとサクッといくっぽい?
無線LAN環境しかないから、RaspiにUSB無線LAN子機つないで、なんかいろいろ設定した。
ここでかなり時間食った気がする。confファイルをいじってなんかいろいろしたような・・・忘れた。
▪️Apache
http://usicolog.nomaki.jp/engineering/raspberryPi/raspberryPi_Apache2.html
https://www.raspberrypi.org/documentation/remote-access/web-server/apache.md
一番シンプルで初心者な自分的にはわかりやすかった。
とりあえず、
sudo apt-get install apache2
ってすれば、Apache入るし、勝手に動作開始する。
Raspiのブラウザ起動して、URLの欄に
http://localhost/
って打つと、
It Works!
ってでる。そしたらOK。起動できてる。
もしくは、ifconfigかなんかでRaspiに割り当てられてるIPアドレス見て、
http://xxx.xxx.xxx.xxx
(例えば、http://192.168.0.3)とかやると、Raspiにつながって、
It Works!
って同じようにでる。
みんなRaspiに外部からアクセスするためには、ルータをいじって、ポート80を解放しましょうとか書いてたけど、自分はローカルで使いたかったので、無視した。
▪️PHP
とりあえず、なんかみんなしてるし入れといた。
sudo apt-get install php5 libapache2-mod-php5 -y
これを叩けば終わり。勝手にインストールしてくれる。
で、こっからが問題。
まず、Raspiにアクセスした時、どこのファイルが表示されているのか?という問題。
絶対パスで、/var/www/html/index.html のファイルがそれにあたる。
つまり、これを書き換えれば、自分好みのHPを表示できる。
ただし、/var/www/以下?のフォルダ、ファイルはすべてroot権限でないと編集できないようになってる。
だから、編集する時は、sudo nano index.html みたいな感じで、管理者権限で毎回実行した。
ちなみに、オリジナルのindex.htmlを変更して、戻らなくなるのが怖かったので、
sudo cp index.html index_original.html
ってして、コピー作ってから編集した。
なんか、Apacheは、index.htmlとか、index.phpとか、indexっていう名前のファイルを探して、表示してるらしい。
で、index.htmlを編集した。でも、自分はチキンなので、全部をまるっと変えるのではなく、<body> </body>の中身だけ変更。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Hello World</title>
<style type="text/css" media="screen">
* {
margin: 0px 0px 0px 0px;
padding: 0px 0px 0px 0px;
}
body, html {
padding: 3px 3px 3px 3px;
background-color: #D8DBE2;
font-family: Verdana, sans-serif;
font-size: 11pt;
text-align: center;
}
div.main_page {
position: relative;
display: table;
width: 800px;
margin-bottom: 3px;
margin-left: auto;
margin-right: auto;
padding: 0px 0px 0px 0px;
border-width: 2px;
border-color: #212738;
border-style: solid;
background-color: #FFFFFF;
text-align: center;
}
div.page_header {
height: 99px;
width: 100%;
background-color: #F5F6F7;
}
div.page_header span {
margin: 15px 0px 0px 50px;
font-size: 180%;
font-weight: bold;
}
div.page_header img {
margin: 3px 0px 0px 40px;
border: 0px 0px 0px;
}
div.table_of_contents {
clear: left;
min-width: 200px;
margin: 3px 3px 3px 3px;
background-color: #FFFFFF;
text-align: left;
}
div.table_of_contents_item {
clear: left;
width: 100%;
margin: 4px 0px 0px 0px;
background-color: #FFFFFF;
color: #000000;
text-align: left;
}
div.table_of_contents_item a {
margin: 6px 0px 0px 6px;
}
div.content_section {
margin: 3px 3px 3px 3px;
background-color: #FFFFFF;
text-align: left;
}
div.content_section_text {
padding: 4px 8px 4px 8px;
color: #000000;
font-size: 100%;
}
div.content_section_text pre {
margin: 8px 0px 8px 0px;
padding: 8px 8px 8px 8px;
border-width: 1px;
border-style: dotted;
border-color: #000000;
background-color: #F5F6F7;
font-style: italic;
}
div.content_section_text p {
margin-bottom: 6px;
}
div.content_section_text ul, div.content_section_text li {
padding: 4px 8px 4px 16px;
}
div.section_header {
padding: 3px 6px 3px 6px;
background-color: #8E9CB2;
color: #FFFFFF;
font-weight: bold;
font-size: 112%;
text-align: center;
}
div.section_header_red {
background-color: #CD214F;
}
div.section_header_grey {
background-color: #9F9386;
}
.floating_element {
position: relative;
float: left;
}
div.table_of_contents_item a,
div.content_section_text a {
text-decoration: none;
font-weight: bold;
}
div.table_of_contents_item a:link,
div.table_of_contents_item a:visited,
div.table_of_contents_item a:active {
color: #000000;
}
div.table_of_contents_item a:hover {
background-color: #000000;
color: #FFFFFF;
}
div.content_section_text a:link,
div.content_section_text a:visited,
div.content_section_text a:active {
background-color: #DCDFE6;
color: #000000;
}
div.content_section_text a:hover {
background-color: #000000;
color: #DCDFE6;
}
div.validator {
}
</style>
</head>
<body>
<?php
echo "Hello World!";
?>
<?php
echo date('Y-m-d H:i:s');
?>
</body>
</html>
すると、こうなる。http://localhost を叩いた時、Hello Worldって出てれば成功。
あとは、HTMLの文法にのっとって好きに書いたら動くはず。(これはまだ
やってない)
とりあえず、index.htmlはできたので、今度は、ファイルを送信・受信したいと思った次第で。
/var/www/html/ の下に、send_text.phpと、receive_text.phpを作成する。
phpは、htmlの中に組み込める言語らしく、phpで書いた部分があれば、htmlではなく、拡張子をphpとする必要がある。ただ、phpで書いた部分がなくても、別にphpとしていて問題なく動くので、とりあえずphpとした。
cdで/var/www/html/に移動して、
sudo nano send_text.php
とすると、send_text.htmlが作成され、編集画面に遷移する。
nanoは、ただのテキストエディタ。vim使ってる多いけど、自分には難しかったよ。。。
send_text.htmlは、次の感じ。これ、どっかからコピペした気がする。
URL:http://www.php-labo.net/tutorial/php/upload.html
かな?
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>FileUploadTest</title>
</head>
<body>
<form action="http://XXX.XXX.XXX.XXX/receive_text.php" method="POST" enctype="multipart/form-data">
<input type="file" name="file">
<input type="submit" value="ファイルをアップロードする">
</form>
</body>
HTMLのフォームってやつを使って、ファイルをアップロードする。というか、送信する。
<form action="http://XXX.XXX.XXX.XXX/receive_text.php" method="POST" enctype="multipart/form-data">
<input type="file" name="file">
<input type="submit" value="ファイルをアップロードする">
</form>
っていうところが、肝。HTMLのフォームってやつは、ボタンを勝手に作ってくれるらしい。
actionが、ボタン押したらどのファイル実行する?ってやつ。
だから、これから作るreceive_text.phpを実行してくださいってことで、これを指定。
http://XXX.XXX.XXX.XXXは、今までRaspiにアクセスしてきたIPアドレス入れる。
だから、実際には、例として、http://192.168.0.3/receive_text.php ってなる。
methodは、POST、GETとかがあるらしいが、テキストファイルとかのファイルを送る時はPOSTらしい。GETは文字列データとかかな。
次、receive_text.php作る。
sudo nano receive_text.php
send_text.phpで作ったように、receive_text.phpも作成する。
例のごとく、これもコピペなわけで・・・
URL:http://www.php-labo.net/tutorial/php/upload.html
http://www.php-ref.com/web/03_move_uploaded_file.html
send_text.phpとおなじ。
<html>
<head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>sample</title>
</head>
<body>
<p>
<?php
echo "Upload File Name : " , $_FILES["file"]["name"] , "<BR>";
echo "MIME Type : " , $_FILES["file"]["type"] , "<BR>";
echo "File Size : " , $_FILES["file"]["size"] , "<BR>";
echo "Temp File Name : " , $_FILES["file"]["tmp_name"] , "<BR>";
echo "Err Code : " , $_FILES["file"]["error"] , "<BR>";
if (is_uploaded_file($_FILES["file"]["tmp_name"])) {
if (move_uploaded_file($_FILES["file"]["tmp_name"], "/var/www/html/img/" . $_FILES["file"]["name"]))
{
chmod("/var/www/html/img/" . $_FILES["file"]["name"], 644);
echo $_FILES["file"]["name"] . "をアップロードしました。";
} else {
echo "ファイルをアップロードできません。";
}
} else {
echo "ファイルが選択されていません。";
}
?>
</p>
</body>
</html>
多分、ちゃんとファイルが送られてきてるのかを見るために、ファイルの情報を表示するようにちょっと追加したのか?わからんけど。。。ほぼ丸こぴですね。ここで重要なのが、
send_text.phpの
<input type="file" name="file">
receive_text.phpの
$_FILES["file"]["name"]
の赤字部分がおなじであること。(多分)
receive_text.phpの似たような箇所($_FILES["file"])は、全部同様に一致してないといけない。
これで終わり。
receive_text.phpは、/var/www/html/img/ に送られてきたファイルを保存するだけ。
(テキストファイルなのにimgフォルダとは・・・)
なので、
htmlフォルダ内にcdで移動して、
sudo mkdir img
として、imgフォルダを作成しておく必要がある。
あとは、Raspiのブラウザ(他のPCからでもいい)で、
http://XXX.XXX.XXX.XXX/send_text.php
とすれば、さっき作ったsend_text.phpの画面が開く。
/var/www/html/以下のファイルは、こんな感じで参照できるっぽい。
ファイルを指定して、Submitボタンを押せば、自動的にreceive_text.phpの画面に遷移する。
成功したら"○○○○○をアップロードしました。"ってでるし、
失敗したら、"ファイルをアップロードできません。"ってでる。
ファイル選択せずにSubmitボタン押せば、"ファイルが選択されていません。"ってでる。
一応、/var/www/html/img/の中に、ファイルがアップロードされているかどうかを確認したらいいと思う。
cdで移動して、lsでみる。
忘れてた。
/var/www/以下の権限をrootからwww-dataに変更した。
関係あるかはわからんけど。
Apacheはwww-dataというユーザーとグループで動かされているらしい。
もしかしたら、phpからのファイルコピーとかは、これをしていないといけないのかもしれない。
あと、piユーザーで動かす時には、piユーザーをwww-dataのグループに所属させてやらないといけない。とかも書いてあったから、それもした。
http://netlog.jpn.org/r271-635/2013/01/raspberry_pi_webserver.html
http://takuya-1st.hatenablog.jp/entry/20130102/1357112844
とかを参考にした。
なんか躓きまくって、いろんなところ参照したし、いろいろ遠回りしたから、やったのはこれだけではないけど、もう書くのめんどいし終わり。
登録:
投稿 (Atom)