如何在Debian 9服务器上安装Symfony 4
Symfony是PHP开发人员构建小型到大型应用程序的最佳选择。 随着每个新版本的发布,Symfony都会成为开发人员更好的工具包。 Symfony允许快速的应用程序开发流程,以便开发人员可以在频谱的另一端构建全面的API,电子商务平台,金融科技和会计应用程序等,开发人员可以借助Twig模板引擎创建简单的网站。
Symfony 4具有智能配方系统和简化的目录结构,不会使项目中的代码文件过载。 Symfony Flex可以安装带有别名的库,并将它们自动注册到bundle的配置中。 新版本还介绍了使用散列映射查找静态路由的闪电快速路由系统 ,以及带有占位符的路由组合正则表达式。
鉴于Symfony 4的流行,我决定在Debian 9机器上配置和设置这个版本。 在本文中,我将向您展示如何设置一个完整的Symfony Stack来运行Symfony应用程序。 该过程包括有关权限,webroots和web服务器的步骤。
创建一个DigitalOcean服务器
今天,您可以在今天的市场中找到许多云托管提供商,而且这种选择实际上归结于您的性能要求和预算组合。
为了达到本文的目的,我将与DigitalOcean合作,这是一家深受开发人员喜爱的云托管提供商。 您可以轻松注册DigitalOcean帐户,并选择您的分发,大小和服务器的数据中心,如以下GIF所示:
现在,下一步是启动SSH终端。 如果您是Linux或Mac用户,则默认情况下会在您的计算机上得到它。 如果您是Windows用户,则需要下载PuTTY 。 好消息是Windows 10带有自己的PowerShell,您可以将其用于本文的目的。
启动Droplet后,需要以下三项登录SSH终端:
服务器的IP地址
用户名
密码或SSH密钥
由于我使用的是Windows,因此我将使用PuTTY进行所有与SSH相关的活动。 记下Droplet上面的项目并登录到SSH终端。 在PuTTY中,当您输入IP地址并按Enter时,服务器将询问您是否缓存密钥。 简单命中是的。
接下来,输入凭证,您将以root用户身份登录到DigitalOceanDroplet。
Symfony LAMP
Symfony依赖于包含PHP,Apache / Nginx,MySQL和Linux发行版的典型LAMP。 您需要首先安装所有这些软件组件,然后根据Symfony的要求配置Apache / Nginx。 幸运的是,所有用于创建Symfony的组件都是开源的,因此您只需要运行命令并在服务器上通过SSH安装它们即可。
Symfony还在其文档中定义了Nginx和Apache的Web服务器配置,因此我将在此处介绍主要设置,您可以在其中阅读其余部分。
在Debian上更新软件包
列表中的第一个操作项目是更新Debian机器上的软件包。
通过运行以下命令来检查服务器上的Debian版本:
cat /etc/debian_version
所以我在我的DigitalOcean服务器上安装了Debian 9.4。
接下来,运行以下命令以通过SSH更新软件包:
apt-get update
apt-get upgrade
apt-get dist-upgrade
一旦更新了所有内容,我已准备好安装Web服务器。
为Symfony 4安装Apache2
转到SSH终端并使用以下命令首先安装Apache2:
apt-get install apache2 -y
一旦命令完成,访问您的服务器的IP,您将看到Apache欢迎页面:
下一个。 使用以下命令进入子目录结构:
cd /etc/apache2/sites-available/
使用以下命令首先快速启用mod_rewrite选项:
a2enmod rewrite
现在打开000-default.conf文件并添加以下内容以在Apache 2中配置Web主机:
<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文件夹运行项目。 但是你也可以用最适合Symfony 4的更多选项来扩展配置。下面是一个例子:
<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:db_pass@host:3306/db_name"
</VirtualHost>
您还可以使用最新的Apache选项,例如Require all all并在上述设置中配置环境变量。 现在使用以下命令重新加载Apache服务器,以便新设置生效:
service apache2 reload
为Symfony 4安装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:db_pass@host: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
为Symfony 4安装PHP 7.2
一个重要的Symfony 4依赖项是服务器上的PHP 7.1.3(或更高版本)。 要安装所需的版本,我需要在Debian 9上更新/安装一些软件包来安装PHP 7.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
这些库将被安装,PHP 7.2已经正确配置了Symfony 4。
安装MySQL来配置数据库
让我们快速安装MySQL数据库。
通过运行以下命令开始:
apt-get install mysql-server
该过程将暂停以征求您的许可。 键入( y )并按Enter键。 在下一个窗口中,为MySQL根用户设置密码。
该过程在几分钟内完成。
接下来,我将根据LAMP的要求配置MySQL。 为此,输入以下命令:
mysql_secure_installation
此时,按照Symfony 4的要求完成服务器设置。我现在将重点关注安装框架本身。
在Debian 9上安装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,我将继续进行实际的Symfony 4安装。
最后,在Debian 9服务器上安装Symfony 4
此时,我已经通过给出URL / var / www / html / symfony4 / public来为webroot配置Apache服务器。
进入html文件夹并运行以下Composer命令来安装Symfony 4:
composer create-project symfony/skeleton symfony4
该框架将在几秒钟内安装。 由于Symfony 4对代码库和依赖关系进行了优化,因此在安装过程中不会要求提供任何凭据。 完成后,您需要配置数据库。
一旦过程完成,访问您的服务器的IP,你会看到欢迎页面:
接下来,我将添加数据库凭据。 Symfony的env文件。
###> doctrine/doctrine-bundle ###
APP_ENV=dev
APP_DEBUG=1
APP_SECRET=bd4d4fxxxx035a97fxxxed13f18646f
# customize this line!
DATABASE_URL="mysql://db_user:db_password@127.0.0.1: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.*"
如果您需要在Debian 9机器上安装和设置Symfony 4的帮助,请在评论中告诉我。