AWS EC2 までは起動できているとします。
Amazon Linux2は、インストール済み
Nginx + PHP + PHP-FPM + MariaDBをインストール
amazon-linux-extras list
sudo su –
amazon-linux-extras install nginx1
systemctl enable nginx
パッケージ更新
yum update -y
タイムゾーン設定・確認
timedatectl status
timedatectl set-timezone Asia/Tokyo
timedatectl status
ロケール、キーボードレイアウト設定・確認
localectl status
localectl set-locale LANG=ja_JP.UTF-8
localectl set-keymap jp106
localectl status
mariadb
インストール CentOSなど # Amazon Linuxはスクリプトに対応してない
curl -sS https://downloads.mariadb.com/MariaDB/mariadb_repo_setup | bash
amazon linux2 の場合は、リポジトリのインストールができないのでリポジトリを定義する。
下記サイトに手順があるのでそのとおりに行うこと。
AmazonLinux2 は、centos7ベースなのでそれを選択。 Amazon Linux2でも、arm選択したらNGですよ。x64じゃないとmariadbパッケージインストールは無理です。ソースからコンパイル・インストールしか方法はないです。今の時代、ソースからインストールってアップデートも面倒なんでやんないですよねー
vi /etc/yum.repos.d/mariadb.repo
MariaDB 10.4 CentOS repository list – created 2020-03-31 10:03 UTC
http://downloads.mariadb.org/mariadb/repositories/
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.4/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1
yum install MariaDB-server MariaDB-client
$
起動
systemctl start mariadb
有効化
systemctl enable mariadb
systemctl is-enabled mariadb
セキュリティ設定 rootのパスワード等を設定します。全部Yでもいいかなと思っています。
mysql_secure_installation
Enter current password for root (enter for none): # 空Enter(パスワードは初期設定はされてないので)
Switch to unix_socket authentication [Y/n] # n を入力(なぜYではなく、nなのか。ほとんどの人は、id/pwでDBにログインしてると思う。それはsocketではないから。unix_socket接続ってことはunixローカルユーザで接続するということを理解しておくこと
Set root password? [Y/n] # Y
Remove anonymous users? [Y/n] # Y
Disallow root login remotely? [Y/n] # Y
Remove test database and access to it? [Y/n] # Y
Reload privilege tables now? [Y/n] # Y
…
Thanks for using MariaDB!
接続テスト
mysql -u root -p
Enter password :
/etc/my.cnf.d/server.cnf
[mariadb]
character-set-server=utf8mb4
PHP とphalconの関連を確認
phalcon3を使いたい。phalcon3のPHPバージョンを確認
リポジトリのインストール
yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
yum install -y http://rpms.remirepo.net/enterprise/remi-release-7.rpm
確認するコマンド
yum –enablerepo=remi-php73 list | grep phalcon
php73-php-phalcon3.x86_64
これを確認ってことは、php7.4ではだめ。php7.3である必要があるとわかる。
php 7.3と phalconをインストール
phpコマンドを[php]で実行したい場合は、php-xxxxという名前のyum install をする必要がある。
amazon-linux-extras install php7.3
yum –enablerepo=remi-php73 install php-phalcon3
php7.4 はこっちだけど、phalconがphp7.3までなので要注意
amazon-linux-extras install php7.4
mbstringは必須なので以下も。phpをインストールしているとそのバージョンのmbstringがインストールされるので、-yをつけずに確認してからインストールすること。
yum install php-mbstring php-xml
以下の場合は、phpではなく、php73をインストールした場合のだめな場合のメモ
phpを複数バージョン入れる場合はphp73とバージョン番号付きでインストール可能だが、本番サーバーでは1つでいいので。
php73-php-mbstring
php73-php-xml
yum –enablerepo=remi-php73 install php73-php-mbstring php73-php-xml php73-php-phalcon3
php-fpm
systemctl enable php-fpm
systemctl start php-fpm
phalconは以下にインストールされる
ztsは、zend Thread Safeといってマルチスレッドで動くバージョン。phpはシングルスレッドなのでztsは使わない。
/usr/lib64/php/modules/phalcon.so
/usr/lib64/php-zts/modules/phalcon.so
/etc/php.ini 追加するのではなく、
/etc/php.d/50-phalcon.ini たぶん、ある。これが。なければ作る。
extension=/usr/lib64/php/modules/phalcon.so
— jsonライブラリのあとでなければならないため。50-phalcon.iniの50は若い順に読み込まれるので
php−fpmの実行ユーザがapacheになっているので、nginxに変更
/etc/php-fpm.d/www.conf
user nginx
group nginx
nginx
php-fpm
をリスタート
systemctl restart nginx
systemctl restart php-fpm
phpのセッションは以下のディレクトリ似て管理しているので、オーナーを変更しておく
chown -R nginx /var/lib/php/session
composer は、以下サイトにいくとトップに書いてあるコマンドを実行
https://getcomposer.org/download/
ついでにどこでもcomposerが使えるように、
/usr/local/bin/にいれておきたい。じつは、3行目にあるコマンドでdir指定ができる。
さらに、ファイル名も、composer.pharじゃなくて、composerコマンドにしたいので.pharを除去したファイル名にしたい場合は以下。
php composer-setup.php –install-dir=/usr/local/bin –filename=composer
できなかったら自分でやればよい。
mv composer.phar /usr/local/bin/.
cd /usr/local/bin
ln -s ./composer.phar composer
nginx config test syntax check
nginx -t
php-fpm ソケット接続設定 設定を確認だけ
/etc/php-fpm.d/www.conf
listen = /run/php-fpm/www.sock
とりあえず、php-cliだけどphalconの確認を行う
php -i | grep phalcon
phalcon => enabled
enabledを確認できればOK
おまけ
wordpressのnginx設定
/etc/nginx/conf.d/【あなたのサーバのホスト名】.conf
server {
listen 80;
server_name 【あなたのサーバのホスト名】;
index index.php ;
root /var/www/wordpress ;
location ~* /wp-config.php {
deny all;
}
location ~ .php$ {
# ソケット接続にする。 /etc/php-fpm.d/www.confを確認
fastcgi_pass unix:/run/php-fpm/www.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
# for PHP
location ~ \.php$ {
fastcgi_pass unix:/run/php-fpm/www.sock;
fastcgi_index /index.php;
include fastcgi_params;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
sendfile on;
client_max_body_size 512M;
fastcgi_buffering off;
fastcgi_read_timeout 600;
}
location / {
try_files $uri $uri/ /index.php?_url=$uri&$args;
# Basic認証するときは以下を
# auth_basic "Restricted";
# auth_basic_user_file /var/www/html/.htpasswd;
}