EC2(Amazon Linux)での必要環境構築コマンド忘備録 /w MobaXterm,Github,CodeIgniter3,PHP


# 環境・条件など
*  __EC2インスタンス生成済み__
*  __MobaXtermを利用して、インスタンスにSSH接続ができていること__
*  EC2インスタンスタイプ↓![ec2-type-of-instance.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2539853/8afab935-8417-2748-9070-b67e2fa786eb.jpeg)
*  EC2インスタンス設定でセキュリティグループに、HTTPとHTTPSのポート追加済み
*  Windows
*  Githubのプライベートリポジトリに作成物（動的プロジェクト）をプッシュ済み
*  作成物で利用(CodeIgniter3で作成したプロジェクト)


## 実行したい作成物がPHPなので、PHP7.4を入れる

```bash
sudo amazon-linux-extras install -y php7.4
php -v #インストールできたか確認
```
## MariaDBインストール

```bash
sudo yum install -y mariadb-server 
sudo systemctl start mariadb 
sudo systemctl enable mariadb
sudo systemctl is-enabled mariadb #enabled であればOK！
sudo mysql_secure_installation #実行後、すべてYでOK
mysql -u root -p #ログインできればOK。exitと打つことででbyeできる
``` 

## Apacheインストール

```bash
sudo yum install -y httpd 
sudo systemctl start httpd
sudo systemctl enable httpd
sudo systemctl is-enabled httpd #enabled であればOK！
#apacheのグループに<SSH接続しているユーザ名>を追加
sudo usermod -aG apache <SSH接続しているユーザ名> 


#もしルートログインしている状態であれば、
exit #これでログアウトできる

#<SSH接続しているユーザ名>でログインしている状態で
groups #apacheが追加されていたからOK！

#もしグループに追加されていなければ、
sudo systemctl restart httpd #このコマンド実行後に再度グループを確認してみる

#対象のディレクトとコンテンツをapache所有にする
sudo chown -R apache:apache /var/www

#グループの書き込み権限変更
sudo chmod 2775 /var/www 
find /var/www -type d -exec sudo chmod 2775 {} \;

#/var/www およびそのサブディレクトリのファイル許可を繰り返し変更してグループの書き込み許可を追加します。
find /var/www -type f -exec sudo chmod 0664 {} \;

#ここまでできたらパブリックIPアドレスをブラウザに入れ、
#Apacheのテスト画面が表示されるか確認する！表示されたらOK！
```
## phpMyAdminインストール
```bash
sudo yum install php-mbstring php-xml -y 
sudo systemctl restart httpd 
sudo systemctl restart php-fpm 
cd /var/www/html #ディレクトリを移動
sudo wget https://www.phpmyadmin.net/downloads/phpMyAdmin-latest-all-languages.tar.gz 
sudo mkdir phpMyAdmin #ディレクトリ内にファイル作成

#作ったファイル内にパッケージを展開
sudo tar -xvzf phpMyAdmin-latest-all-languages.tar.gz -C phpMyAdmin --strip-components 1 

#インストしたパッケージを削除
sudo rm phpMyAdmin-latest-all-languages.tar.gz 
```

- 「パブリックIPアドレス/phpMyAdmin」　にブラウザでアクセスして画面表示を確認！
- phpMyAdminのログインはid:root,パスワード:設定したパスワード
- ログイン完了したらphpMyAdmin内でユーザを作成しておくこと！

## Gitインストール
```bash
sudo yum install git
git version #インストールできたか確認
```
## httpd.confを編集して、ファイルのアクセス権限を変更
この設定をすることで、apacheがプロジェクト直下以外のファイルへアクセスができるようになります

```bash
sudo vim /etc/httpd/conf/httpd.conf #設定ファイルを編集する
```
ファイル内で、
「#Further relax access to the document default root ～」と記載のある、「Allowoverride」をnone→Allにする

「i」を押下で、INSERTモード切替→INSERTモードでファイルに書き込みできる
「esc」を押下で、INSERTモードなどの解除ができる

非INSERTモードにて↓
- 「:wq!」 + 「Enter」→編集内容保存
- 「/ 検索したい文言」 + 「Enter」　→ファイル内で該当箇所を検索。「N」を押下で次の検索結果

## Githubからプロジェクトをクローンする
__条件__
- PersonalAccessToken取得済み

```bash
cd /var/www/html #ディレクトリ移動
git clone https://（GithubアカウントID）:（PersonalAccessToken）@(リモートリポジトリHTTPSのCode)
```

__クローン後のpullについて__
※gitpull時にpermission deniedエラーが発生した際、権限を持っているユーザでpullを行うこと

## 特定のユーザのSSH接続を禁止する
「ec2-userでSSH接続していたが、禁止したい！」ってときに使えます

```bash
sudo echo "DenyUsers ec2-user" >> /etc/ssh/sshd_config
sudo systemctl restart sshd
```
ec2-userで再度SSH接続をしてみる
できなければ設定完了！

## Apacheのホーム画面（初期表示）を非表示にするための設定
```bash
cd /etc/httpd/conf.d/
mv welcome.conf welcome.conf.org
```
apache再起動して、画面表示確認

## 403エラーページを表示したいページにする方法
対象ディレクトリに「.htaccess」ファイルを作成。
その中で下記例のように記載する

例（対象ディレクトリが/var/www/html/projectであるとき）
ErrorDocument 403 /project/<表示したいファイル名>

と記載すると403エラーページが、<表示したいファイル名>ページに変わる

## phpMyAdminへ特定のIPアドレスからのみアクセスを許可する
__phpMyAdminが誰でもアクセスできたら大変です__
/etc/httpd/conf.d/phpMyAdmin.confがあるときは↓

https://qiita.com/ekzemplaro/items/f7e0b68568fbbd452b57

設定ファイルがないときは、/var/www/html/phpMyAdminディレクトリにて、.htaccessファイルを作成し下記入力

```bash
 vi .htaccess  #ファイル作成or編集コマンド
```

```
<IfModule mod_authz_core.c>
 # Apache 2.4
 <RequireAny>
   Require ip 127.0.0.1
   Require ip ここに指定したいIPアドレス入力
   Require ip ::1
 </RequireAny>
</IfModule>
```
保存して設定完了。
指定したIPアドレスと、指定していないIPアドレスからアクセス可否確認

# エラーが発生した時に行ったことなど
__ファイルのアップロードがEC2環境でうまくできない__
php.iniでuploadのサイズ制限を変更しまししょう
参考URL↓

https://aws.amazon.com/jp/premiumsupport/knowledge-center/wordpress-themes-2mb/