웹사이트 검색

Debian 9 서버에서 Symfony 4를 설정하는 방법


이 페이지에서

  1. DigitalOcean 서버 만들기
    1. 서버 IP 주소
    2. 사용자 이름
    3. 비밀번호 또는 SSH 키\n

    Symfony는 소규모에서 대규모 애플리케이션을 구축하기 위해 PHP 개발자가 선호하는 선택입니다. 새로운 릴리스가 나올 때마다 Symfony는 개발자를 위한 더 나은 툴킷으로 발전합니다. Symfony는 신속한 애플리케이션 개발 프로세스를 허용하여 개발자가 스펙트럼의 반대편에 본격적인 API, 전자 상거래 플랫폼, 핀테크 및 회계 앱 등을 구축할 수 있도록 하고 개발자는 Twig 템플릿 엔진의 도움으로 간단한 웹사이트를 만들 수 있습니다.

    Symfony 4에는 프로젝트의 코드 파일에 과부하가 걸리지 않는 스마트 레시피 시스템과 단순화된 디렉토리 구조가 있습니다. Symfony Flex는 별칭으로 라이브러리를 설치하고 번들 구성에 자동으로 등록합니다. 새 버전은 또한 정적 경로에 대한 해시 맵 조회와 자리 표시자가 있는 경로에 대한 결합된 정규식을 사용하는 경량의 빠른 라우팅 시스템을 도입합니다.

    Symfony 4의 인기를 고려하여 Debian 9 시스템에서 이 버전을 구성하고 설정하기로 결정했습니다. 이 기사에서는 Symfony 애플리케이션을 실행하기 위해 전체 Symfony 스택을 설정하는 방법을 보여줍니다. 이 프로세스에는 권한, 웹 루트 및 웹 서버에 관한 단계가 포함됩니다.

    DigitalOcean 서버 생성

    오늘날 시장에서 수많은 클라우드 호스팅 제공업체를 찾을 수 있으며 선택은 실제로 성능 요구 사항과 예산의 조합에 달려 있습니다.

    이 기사의 목적을 위해 개발자들에게 많은 사랑을 받고 있는 클라우드 호스팅 제공업체인 DigitalOcean과 함께 하겠습니다. 다음 GIF와 같이 DigitalOcean 계정에 쉽게 가입하고 배포, 크기 및 서버의 데이터 센터를 선택할 수 있습니다.

    이제 다음 단계는 SSH 터미널을 시작하는 것입니다. Linux 또는 Mac 사용자인 경우 기본적으로 컴퓨터에 설치됩니다. Windows 사용자인 경우 PuTTY를 다운로드해야 합니다. 좋은 소식은 Windows 10이 이 문서의 목적에 사용할 수 있는 자체 PowerShell과 함께 제공된다는 것입니다.

    드롭릿을 시작한 후 SSH 터미널에 로그인하려면 다음 세 가지 항목이 필요합니다.

    서버 IP 주소 사용자 이름 비밀번호 또는 SSH 키

    Windows를 사용하고 있으므로 모든 SSH 관련 활동에 PuTTY를 사용하겠습니다. 드롭릿에서 위 항목을 기록하고 SSH 터미널에 로그인합니다. PuTTY에서 IP 주소를 입력하고 Enter 키를 누르면 서버에서 키 캐싱 여부를 묻습니다. 간단한 히트 예.

    다음으로 자격 증명을 입력하면 루트 액세스 권한으로 DigitalOcean 드롭릿에 로그인합니다.

    심포니 램프 스택

    Symfony는 PHP, Apache/Nginx, MySQL 및 Linux 배포판으로 구성된 일반적인 LAMP 스택에 의존합니다. 이러한 모든 소프트웨어 구성 요소를 먼저 설치한 다음 Symfony의 요구 사항에 따라 Apache/Nginx를 구성해야 합니다. 다행스럽게도 Symfony 스택을 생성하기 위한 모든 구성 요소는 오픈 소스이므로 서버에서 SSH를 통해 명령을 실행하고 설치하기만 하면 됩니다.

    Symfony는 문서에서 Nginx 및 Apache에 대한 웹 서버 구성도 정의했으므로 여기에서 주요 설정을 다루고 나머지는 여기에서 읽을 수 있습니다.

    Debian에서 패키지 업데이트

    목록의 첫 번째 작업 항목은 Debian 시스템에서 패키지를 업데이트하는 것입니다.

    다음 명령을 실행하여 서버에서 Debian 버전을 확인하여 시작합니다.

    cat /etc/debian_version

    그래서 DigitalOcean 서버에 Debian 9.4가 있습니다.

    그런 다음 다음 명령을 실행하여 SSH를 통해 패키지를 업데이트합니다.

    apt-get update
    apt-get upgrade
    apt-get dist-upgrade

    모든 것이 업데이트되면 웹 서버를 설치할 준비가 된 것입니다.

    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에서 웹 호스트를 구성합니다.

    <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::3306/db_name"
    </VirtualHost>

    또한 모두 승인 필요와 같은 최신 Apache 옵션을 사용하고 위의 설정에서 환경 변수를 구성할 수 있습니다. 이제 새 설정이 적용될 수 있도록 다음 명령을 사용하여 Apache 서버를 다시 로드합니다.

    service apache2 reload

    Symfony 4용 Nginx 설치

    Apache를 사용하지 않으려면 Nginx가 웹 서버를 위한 훌륭한 옵션입니다. 프로세스는 거의 비슷합니다.

    다음 명령으로 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::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::3306/db_name"
    ###< doctrine/doctrine-bundle ###

    마지막 말

    Symfony 4는 PHP 개발자들에 의해 널리 채택되고 높이 평가되었으며 이미 수백만 명이 다운로드했습니다. Symfony 3.x의 표준 버전을 사용할 수도 있습니다(특정 버전을 설치하려면 명령을 업데이트하기만 하면 됩니다).

    심포니 3.0:

    composer create-project symfony/framework-standard-edition your_project_name "3.0.*"

    심포니 3.1의 경우:

    composer create-project symfony/framework-standard-edition your_project_name "3.1.*"

    Debian 9 머신에 Symfony 4를 설치하고 설정하는 데 도움이 필요하면 댓글로 알려주십시오.