GTB、LAMP開発基礎の自習内容

# 目的

- PHPの勉強を自分で進められるようにする
- 自分のサーバーを構築してPHPを使い公開できるようにする

# 流れ

- ConoHaにアクセスして自分のサーバーを準備する
 - サーバーの構築と起動
- ローカル環境のWindows、Macに開発環境とサーバーへアクセスできる準備をする
 - エディターの準備
 - SFTPの準備
 - SSH接続の準備
 - DocumentRootはどこ？
- PHPを書いてみよう
 - Hello,World!
 - 自習サイト


開発手法としてはローカルでPHPを書いてサーバーにアップロードして実行するというレガシーな方法を使用します。
またデフォルトのrootユーザーを利用することになります。
長期間に渡って立ち上げる必要がある場合は、本講座を受講したのちにセキュリティを向上させるための設定を実施してください。
以下のドキュメントがわかりやすくまとまっています。
[ConohaにVPSを設置して、SSHログイン、ポート番号変更、rootログイン禁止までを30分で！](http://qiita.com/ongaeshi/items/bb17ebfbd4d22057c8fd)


# ConoHaにアクセスして自分のサーバーを準備する

ConoHaのログイン画面から事前に準備していたログインアカウントでログインをしてください。
[ログイン ConoHa](https://www.conoha.jp/login)

## ログイン
![ログイン - 【ConoHa】スマート&パワフルなクラウドの新提案。ひと月900円から。 - Google Chrome 2016-03-04 16.55.56.png](https://qiita-image-store.s3.amazonaws.com/0/111110/72ec0507-72c8-2929-647b-8653fcbc6c46.png)

## サーバーを追加

![ConoHaサーバーの追加詳細.png](https://qiita-image-store.s3.amazonaws.com/0/111110/76a3d319-9678-0255-0eaa-f12d73bf8796.png)


## ConoHaのサーバーが起動完了したことを確認
![ConoHaサーバー起動完了.png](https://qiita-image-store.s3.amazonaws.com/0/111110/35022797-6dd1-b014-6e91-0845e9c38316.png)

## IPアドレスの確認

![ConoHaサーバーのIPアドレス.png](https://qiita-image-store.s3.amazonaws.com/0/111110/e3420bf2-d9ff-eb91-faf0-e9bae3052c85.png)


## ブラウザーからサーバーにアクセスして正常にアクセスできるか確認をする

以下のようなメッセージが表示されていれば正常です。
特に`LAMP`というキーワードが含まれているかを確認してください。

```
This is the default welcome page of ConoHa LAMP image.
```
![ブラウザーからアクセス.png](https://qiita-image-store.s3.amazonaws.com/0/111110/703b99a3-c64d-8afd-1ee9-10e8f7fac6a3.png)

ここに自分で書いたPHPのプログラムが表示されるようにしていきたいと思います。

# ローカル環境のWindows、Macに開発環境とサーバーへアクセスできる準備をする

## エディターを準備

本講義では大規模な開発を行うことはなく軽快なテキスト編集が可能な環境で進めたいと思います。
OS標準のエディターだと不都合が多いので何かしらのエディターの準備をしてください。
Vimが使える方はそちらでもいいです。

### Windows
- [秀丸 シェアウェア](http://hide.maruo.co.jp/software/hidemaru.html)
- [サクラエディタ](http://sakura-editor.sourceforge.net/)
- [Mery](http://www.haijin-boys.com/wiki/%E3%83%A1%E3%82%A4%E3%83%B3%E3%83%9A%E3%83%BC%E3%82%B8)
- [TeraPad](http://www5f.biglobe.ne.jp/~t-susumu/)
- [Notepad++](https://notepad-plus-plus.org/)
- [Sublime Text](http://www.sublimetext.com/)

### Mac
ごめん、あまり知らない。
- [Sublime Text](http://www.sublimetext.com/)
- [ATOM](https://atom.io/)

# SFTPの準備

IPアドレス、ユーザー名、パスワードをもとにsftpによる接続を行います。
sftpはファイルをサーバーに送信(アップロード)したり受信(ダウンロード)したりするための通信規約(プロトコル)になります。
WindowsのエクスプローラーやMacのFinderのように直感的に操作できるツールが存在しています。

ちなみsftpじゃなくてftpという通信規約もありますが非常に危険なので使わないようにしましょう。

- [FileZillaのインストール](https://filezilla-project.org/download.php?type=client)

- インストール後FileZillaを起動
- サイトマネージャーを開き以下の設定を行う
![filezilla_サイトマネージャーの起動.png](https://qiita-image-store.s3.amazonaws.com/0/111110/5b8cc699-1a19-bd6f-54d7-2596df8bb1cd.png)

![filezilla_サイトマネージャー.png](https://qiita-image-store.s3.amazonaws.com/0/111110/41816fca-3f02-6e70-ae20-899d1fd072d2.png)

- 不明なホスト鍵
ほぼ間違いなくご自身のサーバーなのでチェックを入れてOK。

![filezilla_不明なホスト鍵.png](https://qiita-image-store.s3.amazonaws.com/0/111110/1ff36271-4ce9-dabd-840a-2ab59bbb3447.png)

- 以下のようにサーバーのディレクトリー構造とファイルの一覧が確認できれば無事に接続完了です。

ファイルをリモートサイト側のエリアにドラッグするとファイルがアップロードされます。

![filezilla_リモートサイト.png](https://qiita-image-store.s3.amazonaws.com/0/111110/80816ade-1e03-85f8-233e-a8235866144f.png)

しかしこのままではどこにファイルをアップロードしたらいいのわかりません。
正解は`/var/www/html/`になるのですが設定されている元ファイルをみてみて理解を深めてみたいと思います。

その見るための準備を次に行います。

# SSH接続の準備

地味な画面に向かって黙々と作業をすることになりますがこれを使えるようになっていると仕事がちゃんとできるようになります。

## Mac

[Macでターミナルを起動する方法](https://syncer.jp/mac-terminal)

以下の内容を打ち込んでみるといろいろ出てきます。
133.xxx...はサーバーのIPアドレスを入れます。

```
ssh root@133.xxx.xx.xxx
```

結果は以下のようになります。

```tcsh
$ ssh root@133.xxx.xx.xxx
root@133.xxx.xx.xxx's password:

================================================
Welcome LAMP application!

DocumentRoot: /var/www/html
URL:          http://133.xxx.xx.xxx/
phpinfo:      http://133.xxx.xx.xxx/phpinfo.php
MySQL root password: xxxxxx

Enjoy!

To delete this message: rm -f /etc/motd
================================================
[root@133-xxx-xx-xxx ~]#
```

## Windows

- [Tera Termのインストール - Tera Termの使い方](http://webkaru.net/linux/tera-term-install/)
- [パスワード認証によるSSH接続 - Tera Termの使い方](http://webkaru.net/linux/tera-term-ssh-login/)

これらの説明の通りにすすめるとMac同様いろんなテキストが表示されるかと思います。
とりあえずこれでつながりました。

## DocumentRootはどこ？

httpを通して公開されているサーバー内のディレクトリーを`DocumentRoot`と呼びます。
そのDocumentRootは設定でいろんな場所に変更ができるのですが基本的に定義されているファイルは、
`httpd.conf`というファイルになります。
まずはこのファイルを探してみましょう。

```
# find / -name httpd.conf
```

みつかったらこのファイルの中身を見てみましょう。

```
# cat ここにhttpd.confのファイル名を含めたフルパスを記述する
```

他に必要なLinuxのコマンドで特に基礎的なものも試してみましょう。

[Linux チートシート基礎編](http://qiita.com/onigirimantarou/items/7eadb243560acbca842e)
[Linux初心者の基礎知識](http://www.linux-beginner.com/linux_command.html)

次はいよいよPHPを書いてみましょう。

# PHPを書いてみよう

## Hello,World!

超単純なプログラム。テキストを出力します。
以下の内容をテキストエディタに書いて`hello.php`という名前で保存しましょう。
そしてサーバーの`DocumentRoot`にアップロードしましょう。

```php:hello.php
<?php
echo "Hello, World!";
```

ブラウザから対象のファイルにアクセスして出力されているか確認しましょう。

![hello_world.png](https://qiita-image-store.s3.amazonaws.com/0/111110/f6715403-0e2c-77d9-2e76-95cfb20d4deb.png)

ここまでできて自習ができる準備が整いました！

## 自習サイト

以下のサイトが非常によくまとまっています。
動画なのですがじっくり時間をかけて実施してもらえればと思います。

[PHP入門 (全30回) - プログラミングならドットインストール](http://dotinstall.com/lessons/basic_php_v2)

この実習の`#04 変数とデータ型について理解しよう`から読み進めてください。

[#04 変数とデータ型について理解しよう | PHP入門 - プログラミングならドットインストール](http://dotinstall.com/lessons/basic_php_v2/34104)

この実習を通して以下の内容を理解できるようにしておいてください。

    - 変数
    - 代入
    - 演算子(四則演算)
    - 条件分岐(if, else)
    - 配列
    - ループ(while, for)
    - 関数

PHPに飽きてきたらデータベース、今回はMySQLに触れてみましょう。

[GTB、LAMP開発基礎の自習内容 MySQL編](http://qiita.com/youhei_nakagawa/private/91fd071817400ec34f14)