Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
0
Help us understand the problem. What are the problem?

More than 1 year has passed since last update.

posted at

updated at

AWS EC2 Amazon Linux2 にPhalcon3.4+MariaDB環境をセットアップ

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;
        }

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
0
Help us understand the problem. What are the problem?