2023年11月24日金曜日

EC2でDirectoryIndexを廃止する

 ディレクトリインデックス(DirectoryIndex)とは、ウェブサイト内のディレクトリやファイルの一覧として収録されているインデックスページのことです。単にインデックスとして示されている物の事で、ディレクトリの中を探索して、個々のファイルを見つけるための一番簡単な手段となります。

例えば今、
http://ec**-**-**-**.compute-1.amazonaws.com/~linux/security/
にアクセスしてみるとlinuxユーザの公開フォルダ内のsecurityフォルダの中身が見えています。

このようにフォルダの中身が見えていると、見せるはずではなかったものもユーザに見られてしまいます。なので、 ディレクトリインデックス(DirectoryIndex)を廃止し、フォルダの中身一覧が見られないようにしていきます。


前提
・ec2-userの状態であること
 もしもlinuxユーザの場合は、exitでec2-userになっておいてください



ユーザディレクトリの設定ファイルを変更
$ sudo  vi /etc/httpd/conf.d/userdir.conf 

33行目にあるIndexesを削除する
before
after

webサーバを再起動
$ sudo systemctl restart httpd.service 

もう一度アクセスして下記のような画面が出ていればOK



EC2でbasic認証をつける

2023年11月14日火曜日

EC2でjupter-notebookをインストールする

 EC2でjupter-notebookのインストールをする方法を説明します

【サーバの環境について】
jupter-notebookをインストールし起動するにあたり、下記のサーバ環境にしてください

◾️サーバ容量
EC2でインスタンスを立ち上げる際には、サーバ容量をあげておいた方が良いです。
デフォルトでは8Gですが、今回は30Gに上げておきます。
<インスタンス起動時>
ストレージを設定で8から30に変更する


◾️インバウンドルールの追加
jupter-notebookで利用するポートを開放しておきます。
デフォルト8888で通信するので、8888を開放しておきます。
<インスタンス起動時>
ネットワーク設定の右上の編集から
セキュリティグループルールの追加
ポート範囲:8888
ソース:0.0.0.0/0

1.pipインストール
デフォルトでEC2にはpythonは入っていますが、pipはインストールされていません
そこで、pipをインストールします
$ sudo yum install python3-pip

2.jupyer-notebookのインストール
公式ドキュメントを参考に、インストールしていきます
注意:jupter-notebookを利用したいユーザに移動してから実行してください
   このブログではec2-userで実施しています
    前回のブログの続きでlinuxユーザにいる場合は、exitを入力することでlinuxユーザから抜けてec2-userに戻ることができます。

$ pip install notebook

3.ログイン方法をパスワード認証に変更
デフォルトではjupter-notebookを立ち上げた時に表示されるtokenを入力することでログインできますが、パスワード認証に変更します
今回、パスワードはLinuxOS99@にしておきます
$ jupyter notebook password

4.jupter-notebookの起動
$ jupyter notebook --ip='0.0.0.0' &
 chatGPT:--ip オプションは、Jupyter Notebook サーバーがどのIPアドレスで待機するかを設定するためのものです。--ip='0.0.0.0' という設定は、Jupyter Notebook サーバーをすべてのネットワークインターフェースに対して公開することを意味します。具体的には、0.0.0.0 はすべてのIPアドレスを表す特別な値であり、サーバーはどのネットワークインターフェースからの接続も受け入れることができます。
      Linuxコマンドで、コマンドをバックグラウンドで実行するためには、&(アンパサンド)を使用します。これにより、コマンドがバックグラウンドで実行され、プロンプトが即座に戻ってきます。これは、コマンドを実行して待機せずに他の作業を行いたい場合に便利です。

起動できると、どのアドレスでアクセスできるか記載があります。
今回の場合、下記のようになっています。
 注意:ここでhttp://********:8888/treeであることを確認してください
    初めの設定で8888のみ開けているため、それ以外のportでのアクセスで起動しても接続することができません。

ここでhttp://********:8888/treeの********の部分をサーバのパブリックDNSに読み替えて接続してください
 例:http://ec2-34-229-13-4.compute-1.amazonaws.com:8888/tree
パスワードを求められるので、設定したパスワードを入力してください。
このようなjupterの画面が表示されればOKです


もしも起動がうまくいかなくて、jupter-notebookを止めたい場合は・・・
※公式の方法ではありませんが、今回の環境では下記の方法で行ってください
①jupter-notebookのプロセス番号を確認
$ lsof -i
ここでCOMMANDがjupter-…で始まるものを探してください。
chatGPT:lsof -i コマンドは、LinuxやUnix系のオペレーティングシステムで、ネットワーク接続情報を表示するための便利なユーティリティです。lsof は "List Open Files" の略で、ファイルやネットワーク接続などのオープンされているリソースをリストアップするために使用されます。
②プロセスを停止
$ kill -9 <プロセス番号>
ここでプロセス番号はPIDのことで、上記の場合は31849となります。
chatGPT:オペレーティングシステムでプロセスを強制的に終了するためのコマンドです。このコマンドは、特にプロセスが正常に終了しない場合や、緊急の終了が必要な場合に使用されます。 -9 はシグナル番号で、SIGKILL シグナルを表します。SIGKILL シグナルは、プロセスに対して無条件で強制終了を実行します。

以上

2023年11月10日金曜日

EC2でユーザディレクトリを開放する

 前回のブログの続きです。


1.一般ユーザを作成する
※windowsでは、PCにローカルアカウントを追加するイメージ
$ sudo useradd linux
 linuxという名前のユーザを作成します



2.ユーザのパスワードを設定する
$ sudo passwd linux
 linuxという名前のユーザのパスワードを変更します
今回はLinuxOS99@をパスワードにします。BAD PASSWORDと表示されますが、そのまま進めます。
パスワードは入力しても表示されませんので、注意してください。

3.ユーザが作成できていることを確認する
$ cat /etc/passwd
 一番下にlinuxが表示されていれば、linuxユーザが作成できています

4.ユーザディレクトリを開放
chatGPT:ユーザディレクトリとは、ある特定のユーザが自分だけが利用できるディレクトリのことです。開放とは、そのディレクトリへ許可を与えることを意味します。つまり、開放するということは、他の人も該当のディレクトリにアクセスできるように設定することを意味します
4-1.Appach(webサーバ)の設定ファイルを変更
$ sudo vi /etc/httpd/conf.d/userdir.conf 
①設定ファイルに、デフォルトとしてユーザディレクトリを開放しないと記載されています(UserDir disabled)。その部分を探して、コメントアウトすることで、ユーザディレクトリを開放します。
UserDir disabledを(17行目)
#UserDir disabledに変更

②ユーザの公開フォルダ名がデフォルトでpublic_htmlになっていますが、wwwに変更します。
#UserDir public_htmlを(24行目)
UserDir wwwに変更
<Directory "/home/*/public_html">を(31行目)
<Directory "/home/*/www">に変更
①②の変更を行い、保存する


5.webサーバを再起動して、Appach(webサーバ)の設定ファイルの変更を反映
$ sudo systemctl restart httpd.service 


6.ユーザディレクトリに移動して、公開フォルダを作成
①ユーザディレクトリに移動
$ su - linux
 パスワードの入力が求められますので、設定したパスワードを入力してください。
 無事に移動できていると、コマンドプロンプトの入力場所が
  [linux@ip-XXX-XX-XX-XXX ~]$
 に変わります。 

  豆知識
   1)su - linuxの-は、ユーザのホームディレクトリに移動するという意味になります。
   -がなくても実行ができますが、ホームディレクトリに移動しないため、この次以降の作業がしづらいです。
   2)もしlinuxユーザにいる状態で、元のユーザec2-userに戻りたい場合は、exitを実行してください

②ユーザディレクトリのパーミッションを変更
$ cd ../
 ユーザごとのディレクトリの場所に移動(/home)
 chatGPT:サーバの/homeディレクトリは、ユーザーのホームディレクトリ(ユーザーアカウントのFX以下のディレクトリ)を格納するディレクトリです。通常、ユーザーごとのプログラム、スクリプト、ドキュメントなどの個々のユーザーに関連する内容を格納します。
$ chmod 755 linux/
 chatGPT:755は、「読み取り、実行、書き込み権限を持つ所有者とグループ、および読み取り、実行権限を持つその他ユーザー」に権限を変更することを意味します。

③ユーザディレクトリに公開フォルダを作成
$ cd
 ユーザディレクトリに移動(/home/linux)
$ mkdir www
 公開フォルダwwwを作成
$ cd www/
 公開フォルダに移動

④index.phpを作成し、ユーザの公開ディレクトリが機能しているか確認
index.phpの中には<?php phpinfo();?>を記載します。
$ vi index.php


アクセスして確認
http://****ホスト名****/~linux/
 ※index.phpは省略してアクセス可能(省略前:http://****ホスト名****/~linux/index.php)

以上

2023年11月3日金曜日

EC2でMySQL のインストール

 前回のブログの続きです。

LAMPの環境 (L:Linux, A: Apache, M: MySQLP: PHP)

MySQLは、関係データベース管理システムであり、Webサーバー上にデータベースを構築するために使用されるソフトウェアです。phpMyAdminはそのMySQLの管理用のWebインターフェースであり、MySQLデータベースを動的に管理・操作することができるツールです。MySQLを用いたデータベースを運用するには、phpMyAdminを使用することが必須といえるでしょう。

1.MySQLのリポジトリ設定ファイルをインストール
$ sudo dnf -y localinstall https://dev.mysql.com/get/mysql80-community-release-el9-1.noarch.rpm
 sudo を使用して、管理者権限で dnf コマンドを実行します。
 dnf -y localinstall で、ダウンロードしたRPMファイルをローカルからインストールします。-y オプションは、途中での確認プロンプトをスキップして、すべての質問に「yes」を回答することを意味します。


2. MySQLサーバー、MySQLのクライアントツールをインストール
$ sudo dnf -y install mysql mysql-community-client

3.MySQLのサーバー、開発用ライブラリ、および関連するツールをインストール
sudo yum install mysql mysql-devel mysql-server

4.MySQL の起動と⾃動起動
$ sudo systemctl start mysqld
sudo systemctl enable mysqld

5.MySQLの初期パスワードの確認
sudo cat /var/log/mysqld.log | grep root
上記なような表示がされた場合、初期パスワードはFQjw<6ohnzZAです

6.MySQL のログイン(初期パスワードを使ってログイン)
一回初期パスワードでログインした後に、パスワード変更を行います。
mysql -u root -p
 パスワードは入力しても表示されませんので、注意!

7.パスワード変更
今回、パスワードをLinuxOS99@に変えます。
$ set password for root@localhost = 'LinuxOS99@';

8.MySQL を終了
$ exit
 次回からは、先ほど変更したパスワードでログインできます


ついでに、phpMyAdmin のインストールします

1.ドキュメントルートに移動
$ cd /var/www/html


2.phpMyAdminの最新バージョンを公式サイトからダウンロード
$ sudo wget https://www.phpmyadmin.net/downloads/phpMyAdmin-latest-all-languages.tar.gz

3.解凍し、ディレクトリに配置
sudo mkdir phpMyAdmin && sudo tar -xvzf phpMyAdmin-latest-all-languages.tar.gz -C phpMyAdmin --strip-components 1

4.解凍したもとファイルを削除
sudo rm phpMyAdmin-latest-all-languages.tar.gz


5.phpMyAdminにアクセス
ホスト名/phpMyAdminにアクセスし、rootと先ほど設定したパスワードでログイン



以上