アラサー転職組の新米エンジニア日記

2017年に未経験からエンジニアになったアラサーです。

LAMP環境の構築 初歩中の初歩

LAMP環境の構築
L⇒LINUX
A⇒APACHE
M⇒MYSQL
P⇒PHP

【流れ】
LINUXのスペック
APACHEのインストール
PHPのインストール
MYSQL(Mariadb)のインストール

☆☆LINUX☆☆
まあこれはOSなに使ってるかって話です。
僕はCentOS7系を使ってます。
# cat /etc/redhat-release
CentOS Linux release 7.4.1708 (Core)


☆☆APACHE☆☆

1インストール
# yum install httpd

*バージョン確認
# rpm -qa |grep httpd
httpd-2.4.6-67.el7.centos.6.x86_64
httpd-tools-2.4.6-67.el7.centos.6.x86_64

 

 

2 設定ファイル
基本的には/etc/httpd/conf/httpd.conf
細かい設定は上記のconfファイルのIncludeから別ディレクトリのファイルを見に行って
それを反映させるという構造なので、そっちにファイルを作成してDirectoryやLocationでのアクセス制限を記入するのもあり。

アクセス→http://(localhost or IP)/


# /etc/httpd/conf/httpd.conf
Include conf.modules.d/*.conf ←このディレクト

 

◆基本設定 httpd.conf

DocumentRoot
⇒webブラウザにアクセスしたときに表示させるファイルのディレクトリを指定。
 要するにコンテンツを設置する場所。httpd.confに下記が記載されている場合は、特定のコンテンツファイル、htmlファイルをhtmlディレクト以下に置くことでwebブラウザ上で表示される。

 

# vi /etc/httpd/conf/httpd.conf
 DocumentRoot "/var/www/html" 

*とりあえず詳しい設定は割愛

 

 

3 起動と自動起動設定

# systemctl start httpd
# systemctl enable httpd

 

 


☆☆PHP☆☆

1 インストール
# yum install PHP

*バージョン確認
#rpm -qa |grep php
php-cli-5.4.16-43.el7_4.x86_64
php-common-5.4.16-43.el7_4.x86_64
php-5.4.16-43.el7_4.x86_64

 

 

2 動作確認

アクセス→http://(localhost or IP)/test.php
これは簡単、先ほどapacheで設定したDocumentRootのディレクトリ以下(/var/www/html)にtest.phpを作成してブラウザからアクセス。ファイルの内容は下記の通り。

# vi /var/www/html/test.php

--------------------------------------------
<?php
phpinfo();
?>
--------------------------------------------
※先頭末尾の<?php ?>はphpを扱う最初の宣言のようなもの
 そのなかにphpのコードを書いていく。

アクセス後、PHPのバージョンスペック画像が表示されればOK

PHPの初期設定ファイルはphp.ini
ディレクトリは/etc/php.ini
設定はまたそのうちやっていこうと思うので割愛

 

 

 

☆☆MYSQLMariaDB)☆☆

1 インストール
# yum install mariadb-server
※バージョンによってはmariadbmysql

*バージョン確認
#rpm -qa | grep mariadb
mariadb-5.5.56-2.el7.x86_64
mariadb-server-5.5.56-2.el7.x86_64
mariadb-libs-5.5.56-2.el7.x86_64

mariadb-serverをインストールすると依存性の関係から必要なものとってくれるので
mariadbのみでインストールしないように。

 

 

2 起動と自動起動設定

#systemctl start mariadb
#systemctl enable mariadb

 

 

3 MYSQLへログイン
通常のシェルの動作とは異なり、MYSQLにログインしてその中でDatabaseを
構築していく。

とりあえず試験的にログイン
#mysql
下記の表示でログイン成功
------------------------------------------------------------------------------
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 2
Server version: 5.5.56-MariaDB MariaDB Server

Copyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
------------------------------------------------------------------------------

ユーザー表示、ディレクトリの部分が下記になる
MariaDB [(none)]>

ついでに終了は\qでできる
MariaDB [(none)]>\q

*基本的なログインコマンドは
# mysql -u <username> -p
を入力してパスワードを入力していくスタイル。

インフラ周りだとzabbixだったりとりあえずユーザー作って権限与えてみたいなやり取りがあるんだけどまあとりあえずここはおいおいうやっていくということで割愛。

 

 

 


上記でとりあえずインストールは完了、これをベースにいろいろ作っていきます。

PHPのHTML_QUICKFORMでしょっぱなから見事にはまった話 (エラー表示含む)

タイトル通りです。

PHP学び始めですがいろいろ知見を得たので記録として

 

1、エラーをブラウザに表示させる。

これ恥ずかしながらやってなくて、

phpスクリプトファイルに下記のコードを書く(自分は<?PHPのすぐ下に入れた)

 

ini_set('display_errors', 1);

 

※1の部分が0だと表示なしみたい。

 

そうするとエラーの原因が判明。

何と設定ファイルのinclude_pathにrequire_once('HTML/QuickForm.php")を見に行く設定をしてなかった。

そりゃ無理だよね。

 

 

2、php.iniファイルを開いて下記を追記する

include_path = "/usr/share/pear/"

 

これでこの先のファイルHTML/QuickFormを拾いに行ってくれる。

無事に解決しました。

イヤーはまった。

 

無事にできてよかったです。

 

Apacheのアクセス制限について

職場でBasic認証の設定を扱うのでその備忘録に。

とりあえずはIP制限などから

 



*ファイルの位置についてはfindコマンドでディレクトリを確認
find / -name httpd.conf

◎◎◎特定のIPアドレスのみを許可する

1、httpd.confファイル[AllowOverride設定]
下記の設定で有効にする

$ AllowOverride All

ApachePHPの設定をディレクトリ毎に変更するために必要な.htaccessを有効・無効に設定できる。
設定がAllの場合は有効、Noneにすると無効になる。



2、httpd.confファイル[DocumentRootの確認]
DocumentRoot→公開コンテンツを設置するディレクトリ名をさす。
ここにおいたhtmlファイルやphpファイルをブラウザに表示できる。

$ DocumentRoot "/var/www/html"

3、.htaccessを作成
ファイルはドキュメントルート直下に.htaccessファイルを作成、編集

$ vi .htaccess---------------------

 Order Deny,Allow
 Deny from All
 Allow from [許可したいIPアドレス]
 
 ----------------------------------

※Orderディレクティブの後はDenyとAllowが評価される順番をさす。
上記の場合DenyディレクティブがAllowディレクティブより先に評価される。
→基本的にすべて拒否。その中でIPアドレスのみ許可する。
上記のOrderの後をAllow,Denyにすると、評価の順番が入れ替わり、最後に評価されるDeny from allに
よりすべてのアクセスが拒否される。

☆特定のIPアドレスだけを制限する

vi .htaccess--------------------

Order Allow,Deny
Allow from all
Deny from IP-1
Deny from IP-2
Deny from IP-3

--------------------------------


OederディレクティブでAllowを先に評価させ、Allow from allですべてを許可してから
Deny で特定のIPを拒否する。
なおfromの後にはIPアドレス以外にもドメイン名(example.comのような形式)も設定可能


◎◎◎Basic認証

ApacheBasic認証機能を使うとIDとPassを知っているユーザーのみがページを閲覧できるようにできる。
特定ページにブラウザからアクセスしたときIDとPassを入力するまで待機状態になる。

1、.htaccessファイルの設定
.htaccessファイルをドキュメントルートに準備下記を入力。

$ vi .htaccess--------------------

AuthType Basic
AuthName "Member Only"
AuthUserFile 絶対パス/.htpasswd
Require valid-user

----------------------------------
AuthType→ユーザ承認をBasic認証に設定
AuthName→ログイン画面で表示される文字列を設定。(半角スペースがある場合引用符で囲む)
AuthUserFile→IDとPassの一覧が記録されているファイルのパスを設定。
Require valid-user→認証されたユーザすべてにディレクトリへのアクセスを許可する。

2、パスワードファイルの作成(htpasswdコマンド)
コマンド→/var/www/html/.htpasswd sample

$ htpasswd -c .htpasswd [ユーザID]
$ New password:********
$ Re-type new password:********
$ Adding password for user [ユーザID]

パスワードファイルの新規作成
$ htpasswd -c [パスワードファイル名] [ユーザID]

ユーザ追加
$ htpasswd [パスワードファイル名] [ユーザID]

ユーザ削除
$ htpasswd -D [パスワードファイル名] [ユーザID]

3、ブラウザに表示確認
ドキュメントルートにサンプルファイルを置いてみる(sample.php)
同じディレクトリに.htaccessと.htpasswdがあるのを確認
http://localhost/sample.phpを閲覧するとログイン画面が表示されるので、
IDとPassを入力して送信。