Symfony installeren op shared hosting: stappenplan
Symfony installeren op shared hosting: stappenplan
Symfony is een professioneel PHP framework dat uitstekend werkt op shared hosting. In deze handleiding leer je hoe je Symfony installeert, configureert en klaar maakt voor productie op Theory7 hosting.
Vereisten voor Symfony
Controleer of je hosting aan de vereisten voldoet.
PHP vereisten
Symfony 7 vereist:
- PHP 8.2 of hoger
- JSON PHP extension
- Ctype PHP extension
- Tokenizer PHP extension
- PCRE PHP extension
- Session PHP extension
- SimpleXML PHP extension
Overige vereisten
- SSH toegang voor Composer
- MySQL, PostgreSQL of SQLite database
- Voldoende schijfruimte (minimaal 50MB)
- Composer beschikbaar Bij Theory7 hosting zijn alle vereisten standaard beschikbaar.
SSH toegang activeren
Symfony installeren vereist SSH.
SSH instellen
- Log in op DirectAdmin
- Ga naar Account Manager en dan SSH Keys
- Genereer of upload je SSH key
- Activeer SSH toegang Zie ook: SSH toegang activeren
Verbinding maken
ssh gebruikersnaam@jouwdomein.nl
Symfony installeren
Er zijn verschillende manieren om Symfony te installeren.
Website skeleton (aanbevolen voor web apps)
cd ~/domains/jouwdomein.nl
# Maak nieuw Symfony project
composer create-project symfony/skeleton myproject
# Navigeer naar project
cd myproject
# Voeg webapp bundle toe
composer require webapp
De webapp bundle installeert alles voor een complete webapplicatie.
Minimale installatie
Voor API's of microservices:
composer create-project symfony/skeleton myproject
cd myproject
# Alleen wat je nodig hebt
composer require symfony/http-foundation
composer require symfony/routing
Installatie verifiëren
# Controleer Symfony versie
php bin/console --version
# Output: Symfony 7.x.x
Document root configureren
Shared hosting vereist speciale configuratie.
public_html symlink maken
Symfony's public map moet de document root zijn:
cd ~/domains/jouwdomein.nl
# Backup oude public_html
mv public_html public_html_backup
# Maak symlink naar Symfony public
ln -s myproject/public public_html
Alternatief: .htaccess redirect
# In root .htaccess
RewriteEngine On
RewriteRule ^(.*)$ myproject/public/$1 [L]
Omgeving configureren
Symfony gebruikt .env voor configuratie.
.env bestand aanpassen
cd myproject
nano .env
Pas de volgende waarden aan:
# Applicatie omgeving
APP_ENV=prod
APP_SECRET=genereer-een-lange-geheime-string
# Debug uit voor productie
APP_DEBUG=0
# Database URL
DATABASE_URL="mysql://user:password@localhost:3306/database?serverVersion=10.6&charset=utf8mb4"
APP_SECRET genereren
# Genereer een random secret
php -r "echo bin2hex(random_bytes(16));"
Gebruik deze waarde voor APP_SECRET.
.env.local voor productie
Maak een .env.local voor server-specifieke instellingen:
nano .env.local
APP_ENV=prod
APP_DEBUG=0
DATABASE_URL="mysql://productie_user:wachtwoord@localhost:3306/productie_db"
Dit bestand heeft voorrang op .env en komt niet in Git.
Database configureren
Stel de database verbinding in.
Database aanmaken
- Ga naar DirectAdmin
- Open Account Manager en dan MySQL Management
- Maak een nieuwe database aan
- Noteer database naam, gebruiker en wachtwoord
Doctrine ORM installeren
composer require symfony/orm-pack
Database schema maken
# Maak database tabellen
php bin/console doctrine:schema:create
# Of met migrations
php bin/console doctrine:migrations:migrate
Cache en optimalisatie
Optimaliseer voor productie.
Cache legen en opwarmen
# Leeg de cache
php bin/console cache:clear --env=prod
# Warm de cache op
php bin/console cache:warmup --env=prod
Assets installeren
Als je frontend assets hebt:
php bin/console assets:install public
Autoloader optimaliseren
composer install --no-dev --optimize-autoloader
Routing en controllers
Basis routing instellen.
Eerste controller maken
# Met maker bundle (development)
php bin/console make:controller HomeController
Of handmatig in src/Controller/HomeController.php:
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
class HomeController extends AbstractController
{
#[Route('/', name: 'home')]
public function index(): Response
{
return new Response('Hello Symfony!');
}
}
Routes bekijken
php bin/console debug:router
Logging configureren
Stel logging in voor productie.
monolog.yaml aanpassen
In config/packages/prod/monolog.yaml:
monolog:
handlers:
main:
type: fingers_crossed
action_level: error
handler: nested
nested:
type: stream
path: "%kernel.logs_dir%/%kernel.environment%.log"
level: debug
Logs bekijken
tail -f var/log/prod.log
Veelvoorkomende problemen
500 error na installatie
- Controleer of var/ map schrijfbaar is:
chmod -R 775 var
- Controleer de logs:
cat var/log/prod.log
Cache permission denied
# Reset rechten
rm -rf var/cache/*
chmod -R 775 var
Route niet gevonden
- Leeg de cache:
php bin/console cache:clear - Controleer routes:
php bin/console debug:router - Controleer controller annotations
Composer memory error
php -d memory_limit=512M composer install
Security configureren
Basis security instellen.
Security bundle installeren
composer require symfony/security-bundle
HTTPS afdwingen
In .htaccess:
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
Deployment workflow
Een typische deployment:
# 1. Code updaten (git pull of upload)
# 2. Dependencies installeren
composer install --no-dev --optimize-autoloader
# 3. Database migrations
php bin/console doctrine:migrations:migrate --no-interaction
# 4. Cache opschonen en opwarmen
php bin/console cache:clear --env=prod
php bin/console cache:warmup --env=prod
# 5. Assets installeren
php bin/console assets:install public
Best practices
Voor development
- Gebruik APP_ENV=dev
- Installeer profiler:
composer require --dev symfony/profiler-pack - Debug toolbar zichtbaar
Voor productie
- APP_ENV=prod en APP_DEBUG=0
- Cache opgewarmd
- Geen dev dependencies
- Logging naar bestanden
Gerelateerde artikelen
- Laravel installeren op shared hosting
- Artisan en Console commando's via SSH
- Laravel met Composer via SSH
- Meer informatie over Symfony hosting bij Theory7
Hulp nodig?
We staan voor je klaar! Loop je ergens tegenaan of heb je vragen? Ons supportteam helpt je graag persoonlijk verder. Stuur ons een berichtje via het ticketsysteem - we reageren meestal binnen een paar uur en denken graag met je mee.
0 van 0 vonden dit nuttig