Amazon Linux2でLAMP環境を構築

Amazon Linux2でLAMP環境を構築:


CentOSと同じ感覚でLAMP環境を構築すると確実につまずくので、

ちょっと手順をまとめてみた。



Apache2.4のインストール

$ sudo yum install httpd 
~~ 
~ すんなりインストールできるはず 
~~ 
 
# httpdを起動 
$ sudo systemctl start httpd 
 
# 動いているか確認 ( active (running) )とか表示されるはず 
$ sudo systemctl status httpd 
 
# システム起動時に毎回起動するように設定 
$ sudo systemctl enable httpd 
 
# 確認(enabled)と表示されていば成功 
$ sudo systemctl is-enabled httpd 
※httpd.confの設定は割愛。


PHP7.2のインストール

php7.2をダウンロードしてきたりって考えてもうまくいきません。

まずここで躓くので、この記事はこのために書いているようなものデス。

amzn2-coreリポジトリのPHPバージョンを確認してみると・・・

$ sudo yum list | grep php 
 
graphviz-php.x86_64                     2.30.1-21.amzn2.0.1           amzn2-core 
php.x86_64                              5.4.16-45.amzn2.0.6           amzn2-core 
php-bcmath.x86_64                       5.4.16-45.amzn2.0.6           amzn2-core 
php-cli.x86_64                          5.4.16-45.amzn2.0.6           amzn2-core 
php-common.x86_64                       5.4.16-45.amzn2.0.6           amzn2-core 
php-dba.x86_64                          5.4.16-45.amzn2.0.6           amzn2-core 
php-devel.x86_64                        5.4.16-45.amzn2.0.6           amzn2-core 
php-embedded.x86_64                     5.4.16-45.amzn2.0.6           amzn2-core 
php-enchant.x86_64                      5.4.16-45.amzn2.0.6           amzn2-core 
php-fpm.x86_64                          5.4.16-45.amzn2.0.6           amzn2-core 
php-gd.x86_64                           5.4.16-45.amzn2.0.6           amzn2-core 
php-intl.x86_64                         5.4.16-45.amzn2.0.6           amzn2-core 
php-ldap.x86_64                         5.4.16-45.amzn2.0.6           amzn2-core 
php-mbstring.x86_64                     5.4.16-45.amzn2.0.6           amzn2-core 
php-mysql.x86_64                        5.4.16-43.amzn2               amzn2-core 
php-mysqlnd.x86_64                      5.4.16-45.amzn2.0.6           amzn2-core 
php-odbc.x86_64                         5.4.16-45.amzn2.0.6           amzn2-core 
php-pdo.x86_64                          5.4.16-45.amzn2.0.6           amzn2-core 
php-pear.noarch                         1:1.10.5-7.amzn2.0.1          amzn2-core 
php-pecl-memcache.x86_64                3.0.8-4.amzn2                 amzn2-core 
php-pgsql.x86_64                        5.4.16-45.amzn2.0.6           amzn2-core 
php-process.x86_64                      5.4.16-45.amzn2.0.6           amzn2-core 
php-pspell.x86_64                       5.4.16-45.amzn2.0.6           amzn2-core 
php-recode.x86_64                       5.4.16-45.amzn2.0.6           amzn2-core 
php-snmp.x86_64                         5.4.16-45.amzn2.0.6           amzn2-core 
php-soap.x86_64                         5.4.16-45.amzn2.0.6           amzn2-core 
php-xml.x86_64                          5.4.16-45.amzn2.0.6           amzn2-core 
php-xmlrpc.x86_64                       5.4.16-45.amzn2.0.6           amzn2-core 
rrdtool-php.x86_64                      1.4.8-9.amzn2.0.1             amzn2-core 
uuid-php.x86_64                         1.6.2-26.amzn2.0.1            amzn2-core 
このリポジトリPHP5.4が最新なんです。7.2とか入らないのです。

そこで下記のコマンドを実行します。

$ amazon-linux-extras 
  0  ansible2                 available    [ =2.4.2  =2.4.6 ] 
  2  httpd_modules            available    [ =1.0 ] 
  3  memcached1.5             available    [ =1.5.1 ] 
  4  nginx1.12                available    [ =1.12.2 ] 
  5  postgresql9.6            available    [ =9.6.6  =9.6.8 ] 
  6  postgresql10             available    [ =10 ] 
  8  redis4.0                 available    [ =4.0.5  =4.0.10 ] 
  9  R3.4                     available    [ =3.4.3 ] 
 10  rust1                    available    \ 
        [ =1.22.1  =1.26.0  =1.26.1  =1.27.2 ] 
 11  vim                      available    [ =8.0 ] 
 12  golang1.9                available    [ =1.9.2 ] 
 13  ruby2.4                  available    [ =2.4.2  =2.4.4 ] 
 15  php7.2                   available    \ 
        [ =7.2.0  =7.2.4  =7.2.5  =7.2.8  =7.2.11 ] 
 16  php7.1                   available    [ =7.1.22 ] 
 17  lamp-mariadb10.2-php7.2  available    \ 
        [ =10.2.10_7.2.0  =10.2.10_7.2.4  =10.2.10_7.2.5 
          =10.2.10_7.2.8  =10.2.10_7.2.11 ] 
 18  libreoffice              available    [ =5.0.6.2_15  =5.3.6.1 ] 
 19  gimp                     available    [ =2.8.22 ] 
 20  docker                   available    \ 
        [ =17.12.1  =18.03.1  =18.06.1 ] 
 21  mate-desktop1.x          available    [ =1.19.0  =1.20.0 ] 
 22  GraphicsMagick1.3        available    [ =1.3.29 ] 
 23  tomcat8.5                available    [ =8.5.31  =8.5.32 ] 
 24  epel                     available    [ =7.11 ] 
 25  testing                  available    [ =1.0 ] 
 26  ecs                      available    [ =stable ] 
 27  corretto8                available    [ =1.8.0_192 ] 
 28  firecracker              available    [ =0.11 ] 
目当ての7.2がみつかったので、これをインストールしましょう

いちおう、詳細確認。

$ amazon-linux-extras info php7.2 
php7.2 recommends php-cli                    # yum install php-cli 
php7.2 recommends php-pdo                    # yum install php-pdo 
php7.2 recommends php-fpm                    # yum install php-fpm 
php7.2 recommends php-json                   # yum install php-json 
php7.2 recommends php-mysqlnd                # yum install php-mysqlnd 
インストールコマンドは下記になります。

$ sudo amazon-linux-extras install php7.2 
完了チェックも兼ねて、バージョンを確認

$ amazon-linux-extras 
~~ 
 15  php7.2=latest            enabled      \ 
        [ =7.2.0  =7.2.4  =7.2.5  =7.2.8  =7.2.11 ] 
  _  php7.1                   available    [ =7.1.22 ] 
~~ 
これでphp7.2がインストールされました。

次に拡張モジュールです。

$ yum list php* | grep amzn2extra-php7.2 
php-cli.x86_64                      7.2.11-1.amzn2.0.1        @amzn2extra-php7.2 
php-common.x86_64                   7.2.11-1.amzn2.0.1        @amzn2extra-php7.2 
php-fpm.x86_64                      7.2.11-1.amzn2.0.1        @amzn2extra-php7.2 
php-json.x86_64                     7.2.11-1.amzn2.0.1        @amzn2extra-php7.2 
php-mysqlnd.x86_64                  7.2.11-1.amzn2.0.1        @amzn2extra-php7.2 
php-pdo.x86_64                      7.2.11-1.amzn2.0.1        @amzn2extra-php7.2 
php.x86_64                          7.2.11-1.amzn2.0.1        amzn2extra-php7.2  
php-bcmath.x86_64                   7.2.11-1.amzn2.0.1        amzn2extra-php7.2  
php-dba.x86_64                      7.2.11-1.amzn2.0.1        amzn2extra-php7.2  
php-dbg.x86_64                      7.2.11-1.amzn2.0.1        amzn2extra-php7.2  
php-devel.x86_64                    7.2.11-1.amzn2.0.1        amzn2extra-php7.2  
php-embedded.x86_64                 7.2.11-1.amzn2.0.1        amzn2extra-php7.2  
php-enchant.x86_64                  7.2.11-1.amzn2.0.1        amzn2extra-php7.2  
php-gd.x86_64                       7.2.11-1.amzn2.0.1        amzn2extra-php7.2  
php-gmp.x86_64                      7.2.11-1.amzn2.0.1        amzn2extra-php7.2  
php-intl.x86_64                     7.2.11-1.amzn2.0.1        amzn2extra-php7.2  
php-ldap.x86_64                     7.2.11-1.amzn2.0.1        amzn2extra-php7.2  
php-mbstring.x86_64                 7.2.11-1.amzn2.0.1        amzn2extra-php7.2  
php-odbc.x86_64                     7.2.11-1.amzn2.0.1        amzn2extra-php7.2  
php-opcache.x86_64                  7.2.11-1.amzn2.0.1        amzn2extra-php7.2  
php-pecl-apcu.x86_64                5.1.12-3.amzn2.0.1        amzn2extra-php7.2  
php-pecl-apcu-devel.noarch          5.1.12-3.amzn2.0.1        amzn2extra-php7.2  
php-pecl-igbinary.x86_64            2.0.7-3.amzn2.0.1         amzn2extra-php7.2  
php-pecl-igbinary-devel.noarch      2.0.7-3.amzn2.0.1         amzn2extra-php7.2  
php-pecl-imagick.x86_64             3.4.3-3.amzn2.0.1         amzn2extra-php7.2  
php-pecl-imagick-devel.noarch       3.4.3-3.amzn2.0.1         amzn2extra-php7.2  
php-pecl-mcrypt.x86_64              1.0.1-3.amzn2.0.1         amzn2extra-php7.2  
php-pecl-memcached.x86_64           3.0.4-3.amzn2.0.1         amzn2extra-php7.2  
php-pecl-msgpack.x86_64             2.0.2-3.amzn2.0.1         amzn2extra-php7.2  
php-pecl-msgpack-devel.noarch       2.0.2-3.amzn2.0.1         amzn2extra-php7.2  
php-pecl-oauth.x86_64               2.0.2-3.amzn2.0.1         amzn2extra-php7.2  
php-pecl-ssh2.x86_64                1.1.2-3.amzn2.0.1         amzn2extra-php7.2  
php-pecl-uuid.x86_64                1.0.4-3.amzn2.0.1         amzn2extra-php7.2  
php-pecl-zip.x86_64                 1.15.2-3.amzn2.0.1        amzn2extra-php7.2  
php-pgsql.x86_64                    7.2.11-1.amzn2.0.1        amzn2extra-php7.2  
php-process.x86_64                  7.2.11-1.amzn2.0.1        amzn2extra-php7.2  
php-pspell.x86_64                   7.2.11-1.amzn2.0.1        amzn2extra-php7.2  
php-recode.x86_64                   7.2.11-1.amzn2.0.1        amzn2extra-php7.2  
php-snmp.x86_64                     7.2.11-1.amzn2.0.1        amzn2extra-php7.2  
php-soap.x86_64                     7.2.11-1.amzn2.0.1        amzn2extra-php7.2  
php-xml.x86_64                      7.2.11-1.amzn2.0.1        amzn2extra-php7.2  
php-xmlrpc.x86_64                   7.2.11-1.amzn2.0.1        amzn2extra-php7.2 
必要なものを選んでyumでインストールします。

右の列に「@」がついているものは、すでにインストールされているモジュール。

とりあえずPHPにいれる拡張モジュールは下記でいいんじゃぁないか?

$ sudo yum install php-cli php-common php-devel php-fpm php-gd php-mysqlnd php-mbstring php-pdo php-xml 


php.iniの設定

# 失敗した時のためにバックアップを取っておく 
$ sudo cp /etc/php.ini /etc/php.ini.default 
 
# viでファイルを開いて編集(保存は同じく:wq) 
$ sudo vi /etc/php.ini 
 
# HTTPヘッダにPHPのバージョンを記載しない 
# expose_php = On 
  expose_php = Off 
 
# メモリ上限を引き上げる 
# memory_limit = 128M 
  memory_limit = 512M 
 
# エラーログのパスを変更 
# error_log = errors.log 
  error_log = /var/log/php_errors.log 
 
# POST送信の許容サイズを引き上げる 
# post_max_size = 8M 
  post_max_size = 16M 
 
# アップロードファイルの許容サイズを引き上げる 
# upload_max_filesize = 2M 
  upload_max_filesize = 8M 
 
# timezoneの設定 
# date.timezone = 
  date.timezone = Asia/Tokyo 
 
# 文字コード検出のデフォルト値を定義 
  mbstring.detect_order = auto 
いろいろ試しましたがこんな感じでいいらしいデス。

php.iniが正しいか確認

$ sudo service httpd configtest 
Syntax OK 
 
$ sudo systemctl restart httpd 


MySQL8.0のインストール

とりあえず新しいものを入れて考えるスタイル。

$ sudo yum install https://dev.mysql.com/get/mysql80-community-release-el7-1.noarch.rpm 
 
$ sudo yum install --enablerepo=mysql80-community mysql-community-server 
初期パスワードチェックして、rootでログイン。

$ sudo cat /var/log/mysqld.log | grep "temporary password" 
2018-XX-XXT00:XX:XX.XXXXXXZ 5 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: [初期パスワード] 
 
mysql -u root -p 
Enter password: [上記で確認できた初期パスワード] 
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '[一時的な任意のパスワード]'; 
※ これを設定しないと次ができません。

上記手順にて任意のパスワード設定するにあたり、いろいろな成約があります。

英数記号を混ぜて、8文字以上・・・こんなのは覚えられません。面倒です。

なので、下記の手順でもうすこし簡単なパスワードにします。

mysql> SHOW VARIABLES LIKE 'validate_password%'; 
+--------------------------------------+--------+ 
| Variable_name                        | Value  | 
+--------------------------------------+--------+ 
| validate_password.check_user_name    | ON     | 
| validate_password.dictionary_file    |        | 
| validate_password.length             | 8      | 
| validate_password.mixed_case_count   | 1      | 
| validate_password.number_count       | 1      | 
| validate_password.policy             | MEDIUM | 
| validate_password.special_char_count | 1      | 
+--------------------------------------+--------+ 
 
mysql> SET GLOBAL validate_password.length=6; 
mysql> SET GLOBAL validate_password.policy=LOW; 
--これでパスワードの長さのみをチェックするようになりました 
 
mysql>  ALTER USER 'root'@'localhost' identified WITH mysql_native_password BY '設定したいパスワード'; 
※ SQL8ではmysql_native_passwordをつけておかないと外部ログインができないもよう。
  後述のphpMyAdminの外部接続で躓くので、ここで設定します。

これでmysqlの設定おわりです。


phpMyAdminのインストール

とりあえずダウンロードと解凍

cd /usr/local/src 
$ sudo wget sudo wget https://files.phpmyadmin.net/phpMyAdmin/4.8.3/phpMyAdmin-4.8.3-all-languages.tar.gz 
$ sudo tar zxvf phpMyAdmin-4.8.3-all-languages.tar.gz  
phpMyAdminへWebアクセスできるようwww配下へ設置

sudo mv phpMyAdmin-4.0.3-all-languages /var/www/phpMyAdmin 
sudo chown -R root:apache /var/www/phpMyAdmin/ 


設定ファイルの修正

sudo vi /etc/httpd/conf.d/phpmyadmin.conf 
 
中身---- 
Alias /phpMyAdmin "/var/www/phpMyAdmin" 
 
<Directory "/var/www/phpMyAdmin"> 
Order allow,deny 
Allow from all 
</Directory> 
---ここまで 
 
sudo apachectl -t             // 設定ファイルが正しいか確認 
sudo systemctl restart httpd  //アパッチ再起動 
 
フルアクセスできるようにしておく 
sudo mkdir /var/www/phpMyAdmin/config 
sudo chmod 777 /var/www/phpMyAdmin/config 
ここまでだとsql8の場合、外部からログインできないと思われる。

外部接続のphpMyAdminからログインしようとしても、下記のようなエラーがでるはず


エラー内容

SQLSTATE[HY000] [2054] The server requested authentication method unknown to the client



対策

my.cnfを設定する。ただしどこにあるかは環境によって異なるかもしれないため、下記を実行して設置候補から探す。

$ mysql --help | grep my.cnf 
                      order of preference, my.cnf, $MYSQL_TCP_PORT, 
/etc/my.cnf /etc/mysql/my.cnf /usr/etc/my.cnf ~/.my.cnf  
 
# llコマンドでファイルを探していく 
$ ll /etc/my.cnf 
-rw-r--r-- 1 root root 1297 Nov 29 10:12 /etc/my.cnf 
$ ll /etc/mysql/my.cnf 
ls: cannot access /etc/mysql/my.conf: No such file or directory 
$ ll /usr/etc/my.cnf 
ls: cannot access /usr/etc/my.cnf: No such file or directory 
みつかった、my.cnfを修正

$sudo vi /etc/mysql/my.cnf 
# 末尾に 
# default_authentication_plugin= mysql_native_password 
# を追記する。 
mysql、Apacheを再起動する。

$ sudo systemctl restart mysqld 
$ sudo systemctl restart httpd 
これでphpMyAdminへ外部から接続できるはずです。

もしできなかったらphpmyadmin.confにて下記の行を修正(追加)する。

# 外部接続設定? 
#Allow from 127.0.0.1 
Allow from all 

これでAmazon Linux2にてLAMP環境ができたかと思います。

おつかれさまでした。


最後に、念の為のバージョン確認

$ php -v 
PHP 7.2.11 (cli) (built: Oct 24 2018 17:51:11) ( NTS ) 
Copyright (c) 1997-2018 The PHP Group 
Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies 
 
$ mysql --version 
mysql  Ver 8.0.13 for Linux on x86_64 (MySQL Community Server - GPL) 
 
$ httpd -v 
Server version: Apache/2.4.34 () 
Server built:   Sep  1 2018 05:35:00 

コメント

このブログの人気の投稿

投稿時間:2021-06-20 02:06:12 RSSフィード2021-06-20 02:00 分まとめ(3871件)

投稿時間:2021-04-30 23:37:32 RSSフィード2021-04-30 23:00 分まとめ(42件)

投稿時間:2023-02-05 02:09:04 RSSフィード2023-02-05 02:00 分まとめ(9件)