symfonyは、小規模から大規模のアプリケーションを構築するためのPHP開発者のお気に入りの選択肢です。新しいリリースごとに、Symfonyは開発者にとってより良いツールキットに進化します。 Symfonyは迅速なアプリケーション開発プロセスを可能にするため、開発者は本格的なAPI、eコマースプラットフォーム、フィンテック、会計アプリなどをスペクトルの反対側で構築でき、開発者はTwigテンプレートエンジンを使用して簡単なWebサイトを作成できます。
Symfony 4は、スマートレシピシステムと簡素化されたディレクトリ構造を備えており、プロジェクト内のコードファイルを過負荷にしません。 Symfony Flexは、エイリアス名でライブラリをインストールし、バンドルの構成に自動的に登録するためにあります。新しいバージョンでは、静的ルートのハッシュマップルックアップと、プレースホルダーを使用したルートの正規表現の組み合わせを使用した、軽量化された高速ルーティングシステムも導入されています。
Symfony 4の人気を考慮して、Debian9マシンでこのバージョンを構成およびセットアップすることにしました。この記事では、Symfonyアプリケーションを実行するために完全なSymfonyスタックをセットアップする方法を紹介します。このプロセスには、権限、ウェブルート、ウェブサーバーに関する手順が含まれています。
DigitalOceanサーバーを作成する
今日、市場には多くのクラウドホスティングプロバイダーがあり、その選択はパフォーマンス要件と予算の組み合わせにかかっています。
この記事の目的のために、開発者に非常に愛されているクラウドホスティングプロバイダーであるDigitalOceanを紹介します。次のGIFに示すように、DigitalOceanアカウントに簡単にサインアップして、サーバーのディストリビューション、サイズ、およびデータセンターを選択できます。
次のステップは、SSHターミナルを起動することです。 LinuxまたはMacユーザーの場合、デフォルトでマシンにインストールされます。 Windowsユーザーの場合は、PuTTYをダウンロードする必要があります。幸いなことに、Windows 10には、この記事の目的に使用できる独自のPowerShellが付属しています。
ドロップレットを起動した後、SSHターミナルにログインするには、次の3つのアイテムが必要です。
-
サーバーのIPアドレス -
ユーザー名 -
パスワードまたはSSHキー
私はWindowsを使用しているので、SSH関連のすべてのアクティビティにPuTTYを使用します。ドロップレットから上記の項目を書き留めて、SSHターミナルにログインします。 PuTTYでは、IPアドレスを入力してEnterキーを押すと、サーバーからキーのキャッシュについて尋ねられます。シンプルヒットはい。
次に、クレデンシャルを入力すると、rootアクセスでDigitalOceanドロップレットにログインします。
SymfonyLAMPスタック
Symfonyは、PHP、Apache / Nginx、MySQL、およびLinuxディストリビューションで構成される典型的なLAMPスタックに依存しています。最初にこれらすべてのソフトウェアコンポーネントをインストールしてから、Symfonyの要件に従ってApache/Nginxを構成する必要があります。幸い、Symfonyスタックを作成するためのすべてのコンポーネントはオープンソースであるため、コマンドを実行してサーバーにSSH経由でインストールするだけです。
SymfonyはドキュメントでNginxとApacheのウェブサーバー構成も定義しているので、ここで主な設定について説明し、残りはそこで読むことができます。
リストの最初のアクションアイテムは、Debianマシンのパッケージを更新することです。
次のコマンドを実行して、サーバー上のDebianのバージョンを確認することから始めます。
cat /etc/debian_version
つまり、DigitalOceanサーバーにDebian9.4があります。
次に、次のコマンドを実行して、SSH経由でパッケージを更新します。
apt-get update
apt-get upgrade
apt-get dist-upgrade
すべてが更新されたら、Webサーバーをインストールする準備ができています。
Symfony4用のApache2をインストール
SSHターミナルに移動し、最初に次のコマンドを使用してApache2をインストールします。
apt-get install apache2 -y
コマンドが終了したら、サーバーのIPにアクセスすると、Apacheのウェルカムページが表示されます。
次。次のコマンドを使用してサブディレクトリ構造に移動します:
cd /etc/apache2/sites-available/
次のコマンドを使用して、最初にmod_rewriteオプションをすばやく有効にします。
a2enmod rewrite
次に、 000-default.confを開きます。 ファイルを作成し、以下を追加して、Apache2でウェブホストを構成します。
<VirtualHost *:80>
ServerName domain.tld
ServerAlias www.domain.tld
DocumentRoot /var/www/html/symfony4/public
<Directory /var/www/html/symfony4/public>
Options FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
Allow from All
</Directory>
# uncomment the following lines if you install assets as symlinks
# or run into problems when compiling LESS/Sass/CoffeeScript assets
# <Directory /var/www/html>
# Options FollowSymlinks
# </Directory>
ErrorLog /var/log/apache2/project_error.log
CustomLog /var/log/apache2/projec_access.log combined
</VirtualHost>
これで、Apache2は / var / www / htmlからプロジェクトを実行するように構成されました。 フォルダ。ただし、Symfony4に最適ないくつかのオプションを使用して構成を拡張することもできます。例を次に示します。
<VirtualHost *:80>
ServerName domain.tld
ServerAlias www.domain.tld
DocumentRoot /var/www/html/symfony4/public
<Directory /var/www/html/symfony4/public>
AllowOverride None
Require all granted
Allow from All
<IfModule mod_rewrite.c>
Options -MultiViews
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php [QSA,L]
</IfModule>
</Directory>
# uncomment the following lines if you install assets as symlinks
# or run into problems when compiling LESS/Sass/CoffeeScript assets
# <Directory /var/www/crvfakeexample.com>
# Options FollowSymlinks
# </Directory>
# optionally disable the RewriteEngine for the asset directories
# which will allow apache to simply reply with a 404 when files are
# not found instead of passing the request into the full symfony stack
<Directory /var/www/crvfakeexample.com/public/bundles>
<IfModule mod_rewrite.c>
RewriteEngine Off
</IfModule>
</Directory>
ErrorLog /var/log/apache2/crvfakeexample.com_error.log
CustomLog /var/log/apache2/crvfakeexample.com_access.log combined
# optionally set the value of the environment variables used in the application
#SetEnv APP_ENV prod
#SetEnv APP_SECRET <app-secret-id>
#SetEnv DATABASE_URL "mysql://db_user:[email protected]:3306/db_name"
</VirtualHost>
すべての許可を要求するなどの最新のApacheオプションを使用することもできます 上記の設定で環境変数を構成します。次に、次のコマンドを使用してApacheサーバーをリロードし、新しい設定を有効にします。
service apache2 reload
Symfony4用のNginxをインストール
Apacheを使用したくない場合は、NginxがWebサーバーに最適なオプションです。プロセスはほとんど同じです。
次のコマンドでNginxをインストールすることから始めます:
apt-get update
apt-get install nginx -y
次に、 cd /etc/nginx/conf.dを実行します。 ファイルを:として構成します
server {
server_name domain.tld www.domain.tld;
root /var/www/html/symfony4/public;
location / {
# try to serve file directly, fallback to index.php
try_files $uri /index.php$is_args$args;
}
location ~ ^/index\.php(/|$) {
fastcgi_pass unix:/var/run/php7.1-fpm.sock;
fastcgi_split_path_info ^(.+\.php)(/.*)$;
include fastcgi_params;
# optionally set the value of the environment variables used in the application
# fastcgi_param APP_ENV prod;
# fastcgi_param APP_SECRET <app-secret-id>;
# fastcgi_param DATABASE_URL "mysql://db_user:[email protected]:3306/db_name";
# When you are using symlinks to link the document root to theにリンクする場合
# current version of your application, you should pass the real
# application path instead of the path to the symlink to PHP
# FPM.
# Otherwise, PHP's OPcache may not properly detect changes to
# your PHP files (see https://github.com/zendtech/ZendOptimizerPlus/issues/126
# for more information).
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
fastcgi_param DOCUMENT_ROOT $realpath_root;
# Prevents URIs that include the front controller. This will 404:
# http://domain.tld/index.php/some-path
# Remove the internal directive to allow URIs like this
internal;
}
# return 404 for all other php files not matching the front controller
# this prevents access to other php files you don't want to be accessible.
location ~ \.php$ {
return 404;
}
error_log /var/log/nginx/project_error.log;
access_log /var/log/nginx/project_access.log;
}
次に、次のコマンドを実行してサーバーをリロードします。
service nginx reload
Symfony4用のPHP7.2をインストール
重要なSymfony4の依存関係は、サーバー上のPHP 7.1.3(またはそれ以降)です。必要なバージョンをインストールするには、Debian9にいくつかのパッケージを更新/インストールしてPHP7.2をインストールする必要があります。 SSHターミナルに移動し(ルートにいることを確認してください)、次のコマンドを実行します。
sudo apt install ca-certificates apt-transport-https
wget -q https://packages.sury.org/php/apt.gpg -O- | sudo apt-key add -
sudo echo "deb https://packages.sury.org/php/ stretch main" | tee /etc/apt/sources.list.d/php.list
次のステップで、次のコマンドを実行します。
sudo apt update
sudo apt install php7.2
インストールが正常に完了したら、PHPのバージョンを確認します。
php -v
また、PHP 7.2がサーバー上で正しく機能することを確認するために、さらにいくつかのライブラリをインストールする必要があります。次のコマンドを実行して、必要なライブラリをインストールします。
sudo apt install php7.2-cli php7.2-common php7.2-curl php7.2-gd php7.2-json php7.2-mbstring php7.2-mysql php7.2-xml libapache2-mod-php7.2
ライブラリがインストールされ、PHP7.2がSymfony4用に適切に構成されます。
MySQLデータベースをすばやくインストールしましょう。
次のコマンドを実行することから始めます:
apt-get install mysql-server
プロセスは一時停止して許可を求めます。タイプ( y )そしてEnterを押します。次のウィンドウで、MySQLrootユーザーのパスワードを設定します。
プロセスはほんの数分で終了します。
次に、LAMPスタックの要件に従ってMySQLを構成します。これを行うには、次のコマンドを入力します。
mysql_secure_installation
この時点で、Symfony 4の要件に従ってサーバーのセットアップが完了しました。次に、フレームワーク自体のインストールに焦点を当てます。
Debian9にComposerをインストールする
Composerをグローバルにインストールすることをお勧めします。これにより、すべてのユーザーがComposerを簡単に使用できるようになります。そこで、 / user / local / binにインストールします ディレクトリ。
まず、インストーラーを / tmpにコピーしましょう。 ディレクトリ:
php -r "copy('https://getcomposer.org/installer', '/tmp/composer-setup.php');"
次に、次のコマンドを実行してComposerファイルを実行し、グローバルにインストールします。
sudo php /tmp/composer-setup.php --install-dir=/usr/local/bin --filename=composer
Composerがインストールされたので、実際のSymfony4のインストールに進みます。
最後に、Debian9サーバーにSymfony4をインストールします
この時点で、次のURLを指定してWebルート用にApacheサーバーを構成しました: / var / www / html / symfony4/public。
htmlに移動します フォルダを作成し、次のComposerコマンドを実行してSymfony 4をインストールします:
composer create-project symfony/skeleton symfony4
フレームワークは数秒でインストールされます。 Symfony 4は小さなコードベースと依存関係で非常に最適化されているため、インストール中にクレデンシャルを要求することはありません。完了したら、データベースを構成する必要があります。
プロセスが終了したら、サーバーのIPにアクセスすると、ウェルカムページが表示されます。
次に、データベースのクレデンシャルを。 envに追加します。 Symfonyのファイル。
###> doctrine/doctrine-bundle ###
APP_ENV=dev
APP_DEBUG=1
APP_SECRET=bd4d4fxxxx035a97fxxxed13f18646f
# customize this line!
DATABASE_URL="mysql://db_user:[email protected]:3306/db_name"
###< doctrine/doctrine-bundle ###
Symfony 4は、PHP開発者によって広く採用され、高く評価されており、すでに数百万でダウンロードされています。 Symfony 3.xの標準バージョンを使用することもできます(特定のバージョンをインストールするには、コマンドを更新する必要があります):
Symfony 3.0の場合:
composer create-project symfony/framework-standard-edition your_project_name "3.0.*"
Symfony 3.1の場合:
composer create-project symfony/framework-standard-edition your_project_name "3.1.*"
Debian9マシンへのSymfony4のインストールとセットアップについてサポートが必要な場合は、コメントで知らせてください。