Skip to content

Commit 5489695

Browse files
committed
first commit !
0 parents  commit 5489695

15 files changed

+473
-0
lines changed

.gitignore

+2
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
/logs
2+
/symfony

.travis.yml

+19
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
sudo: required
2+
3+
env:
4+
DOCKER_COMPOSE_VERSION: 1.4.2
5+
6+
services:
7+
- docker
8+
9+
before_install:
10+
- mkdir symfony
11+
- sudo rm /usr/local/bin/docker-compose
12+
- curl -L https://github.com/docker/compose/releases/download/${DOCKER_COMPOSE_VERSION}/docker-compose-`uname -s`-`uname -m` > docker-compose
13+
- chmod +x docker-compose
14+
- sudo mv docker-compose /usr/local/bin
15+
16+
script:
17+
- docker-compose up -d
18+
- docker-compose ps
19+

README.md

+68
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
# Docker Symfony (NGINX - MySQL - ELK)
2+
3+
*Credit: This is a fork from [eko/docker-symfony](https://github.com/eko/docker-symfony). Thanks to him :-)*
4+
5+
## Installation
6+
7+
* Retrieve git project
8+
$ git clone git@github.com:maxpou/docker-symfony.git
9+
* move your Symfony project into symfony folder
10+
* Build containers with
11+
```bash
12+
$ docker-compose up
13+
```
14+
* Update your host file (add symfony.dev)
15+
```bash
16+
# get containers IP address and update host (replace IP according to your configuration)
17+
$ docker inspect --format '{{ .NetworkSettings.IPAddress }}' $(docker ps -f name=php -q)
18+
$ sudo echo "171.17.0.1 symfony.dev" >> /etc/hosts
19+
```
20+
21+
## Using
22+
23+
* Symfony app: visit [symfony.dev](http://symfony.dev)
24+
* Symfony dev mode: visit [symfony.dev/app_dev.php](http://symfony.dev/app_dev.php)
25+
* Logs (Kibana): [symfony.dev:81](http://symfony.dev:81)
26+
* Logs (files location): logs/nginx and logs/symfony
27+
28+
## How it works?
29+
30+
Have a look at the `docker-compose.yml` file, here are the `docker-compose` built images:
31+
32+
* `application`: This is the Symfony application code container,
33+
* `postgres`: This is the PostgreSQL database container,
34+
* `php`: This is the PHP-FPM container in which the application volume is mounted,
35+
* `nginx`: This is the Nginx webserver container in which application volume is mounted too,
36+
* `elk`: This is a ELK stack container which uses Logstash to collect logs, send them into Elasticsearch and visualize them with Kibana.
37+
38+
This results in the following running containers:
39+
40+
```bash
41+
$ docker-compose ps
42+
43+
Name Command State Ports
44+
--------------------------------------------------------------------------------------------------
45+
dockersymfony_application_1 /bin/bash Up
46+
dockersymfony_db_1 /entrypoint.sh mysqld Up 0.0.0.0:3306->3306/tcp
47+
dockersymfony_elk_1 /usr/bin/supervisord -n -c ... Up 0.0.0.0:81->80/tcp
48+
dockersymfony_nginx_1 nginx Up 443/tcp, 0.0.0.0:80->80/tcp
49+
dockersymfony_php_1 php5-fpm -F Up 0.0.0.0:9000->9000/tcp
50+
```
51+
52+
53+
54+
## Useful commands:
55+
56+
```bash
57+
# Composer (e.g. composer update)
58+
$ docker exec -ti $(docker ps -f name=php -q) sh -c "cd /var/www/symfony/ && composer update"
59+
60+
# SF commands
61+
$ docker exec -ti $(docker ps -f name=php -q) php /var/www/symfony/app/console cache:clear
62+
63+
# bash commands (no tab :( )
64+
$ docker exec -ti $(docker ps -f name=php -q) /bin/sh
65+
66+
# MySQL commands
67+
$ docker exec -ti $(docker ps -f name=db -q) mysql -uroot -p"root"
68+
```

code/Dockerfile

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
FROM debian:jessie
2+
3+
MAINTAINER Maxence POUTORD <maxence.poutord@gmail.com>
4+
5+
VOLUME /var/www/symfony

docker-compose.yml

+44
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
application:
2+
build: code
3+
volumes:
4+
- ./symfony:/var/www/symfony
5+
- ./logs/symfony:/var/www/symfony/app/logs
6+
tty: true
7+
db:
8+
image: mysql
9+
ports:
10+
- 3306:3306
11+
environment:
12+
MYSQL_ROOT_PASSWORD: root
13+
MYSQL_DATABASE: symfony
14+
MYSQL_USER: root
15+
MYSQL_PASSWORD: root
16+
php:
17+
build: php-fpm
18+
ports:
19+
- 9000:9000
20+
volumes_from:
21+
- application
22+
links:
23+
- db
24+
nginx:
25+
build: nginx
26+
ports:
27+
- 80:80
28+
links:
29+
- php
30+
volumes_from:
31+
- application
32+
volumes:
33+
- ./logs/nginx/:/var/log/nginx
34+
elk:
35+
image: willdurand/elk
36+
ports:
37+
- 81:80
38+
volumes:
39+
- ./elk/logstash:/etc/logstash
40+
- ./elk/logstash/patterns:/opt/logstash/patterns
41+
volumes_from:
42+
- application
43+
- php
44+
- nginx

elk/logstash/logstash.conf

+39
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
input {
2+
file {
3+
type => "nginx_access"
4+
path => "/var/log/nginx/symfony_access.log"
5+
start_position => beginning
6+
}
7+
file {
8+
type => "symfony_dev"
9+
path => "/var/www/symfony/app/logs/dev.log"
10+
start_position => beginning
11+
}
12+
file {
13+
type => "symfony_prod"
14+
path => "/var/www/symfony/app/logs/prod.log"
15+
start_position => beginning
16+
}
17+
}
18+
19+
filter {
20+
if [type] == "nginx_access" {
21+
grok {
22+
patterns_dir => "./patterns"
23+
match => { "message" => "%{NGINXACCESS}"}
24+
}
25+
}
26+
else if [type] in ["symfony_dev", "symfony_prod"] {
27+
grok {
28+
patterns_dir => "./patterns"
29+
match => { "message" => "%{SYMFONY}"}
30+
}
31+
}
32+
}
33+
34+
output {
35+
elasticsearch {
36+
host => "localhost"
37+
cluster => "logstash"
38+
}
39+
}

elk/logstash/patterns/default.conf

+85
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,85 @@
1+
USERNAME [a-zA-Z0-9._-]+
2+
USER %{USERNAME}
3+
INT (?:[+-]?(?:[0-9]+))
4+
BASE10NUM (?<![0-9.+-])(?>[+-]?(?:(?:[0-9]+(?:\.[0-9]+)?)|(?:\.[0-9]+)))
5+
NUMBER (?:%{BASE10NUM})
6+
BASE16NUM (?<![0-9A-Fa-f])(?:[+-]?(?:0x)?(?:[0-9A-Fa-f]+))
7+
BASE16FLOAT \b(?<![0-9A-Fa-f.])(?:[+-]?(?:0x)?(?:(?:[0-9A-Fa-f]+(?:\.[0-9A-Fa-f]*)?)|(?:\.[0-9A-Fa-f]+)))\b
8+
9+
POSINT \b(?:[1-9][0-9]*)\b
10+
NONNEGINT \b(?:[0-9]+)\b
11+
WORD \b\w+\b
12+
NOTSPACE \S+
13+
SPACE \s*
14+
DATA .*?
15+
GREEDYDATA .*
16+
QUOTEDSTRING (?>(?<!\\)(?>"(?>\\.|[^\\"]+)+"|""|(?>'(?>\\.|[^\\']+)+')|''|(?>`(?>\\.|[^\\`]+)+`)|``))
17+
UUID [A-Fa-f0-9]{8}-(?:[A-Fa-f0-9]{4}-){3}[A-Fa-f0-9]{12}
18+
# Networking
19+
MAC (?:%{CISCOMAC}|%{WINDOWSMAC}|%{COMMONMAC})
20+
CISCOMAC (?:(?:[A-Fa-f0-9]{4}\.){2}[A-Fa-f0-9]{4})
21+
WINDOWSMAC (?:(?:[A-Fa-f0-9]{2}-){5}[A-Fa-f0-9]{2})
22+
COMMONMAC (?:(?:[A-Fa-f0-9]{2}:){5}[A-Fa-f0-9]{2})
23+
IPV6 ((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(%.+)?
24+
IPV4 (?<![0-9])(?:(?:25[0-5]|2[0-4][0-9]|[0-1]?[0-9]{1,2})[.](?:25[0-5]|2[0-4][0-9]|[0-1]?[0-9]{1,2})[.](?:25[0-5]|2[0-4][0-9]|[0-1]?[0-9]{1,2})[.](?:25[0-5]|2[0-4][0-9]|[0-1]?[0-9]{1,2}))(?![0-9])
25+
IP (?:%{IPV6}|%{IPV4})
26+
HOSTNAME \b(?:[0-9A-Za-z][0-9A-Za-z-]{0,62})(?:\.(?:[0-9A-Za-z][0-9A-Za-z-]{0,62}))*(\.?|\b)
27+
HOST %{HOSTNAME}
28+
IPORHOST (?:%{HOSTNAME}|%{IP})
29+
HOSTPORT %{IPORHOST}:%{POSINT}
30+
# paths
31+
PATH (?:%{UNIXPATH}|%{WINPATH})
32+
UNIXPATH (?>/(?>[\w_%!$@:.,-]+|\\.)*)+
33+
TTY (?:/dev/(pts|tty([pq])?)(\w+)?/?(?:[0-9]+))
34+
WINPATH (?>[A-Za-z]+:|\\)(?:\\[^\\?*]*)+
35+
URIPROTO [A-Za-z]+(\+[A-Za-z+]+)?
36+
URIHOST %{IPORHOST}(?::%{POSINT:port})?
37+
# uripath comes loosely from RFC1738, but mostly from what Firefox
38+
# doesn't turn into %XX
39+
URIPATH (?:/[A-Za-z0-9$.+!*'(){},~:;=@#%_\-]*)+
40+
#URIPARAM \?(?:[A-Za-z0-9]+(?:=(?:[^&]*))?(?:&(?:[A-Za-z0-9]+(?:=(?:[^&]*))?)?)*)?
41+
URIPARAM \?[A-Za-z0-9$.+!*'|(){},~@#%&/=:;_?\-\[\]]*
42+
URIPATHPARAM %{URIPATH}(?:%{URIPARAM})?
43+
URI %{URIPROTO}://(?:%{USER}(?::[^@]*)?@)?(?:%{URIHOST})?(?:%{URIPATHPARAM})?
44+
# Months: January, Feb, 3, 03, 12, December
45+
MONTH \b(?:Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|Jun(?:e)?|Jul(?:y)?|Aug(?:ust)?|Sep(?:tember)?|Oct(?:ober)?|Nov(?:ember)?|Dec(?:ember)?)\b
46+
MONTHNUM (?:0?[1-9]|1[0-2])
47+
MONTHNUM2 (?:0[1-9]|1[0-2])
48+
MONTHDAY (?:(?:0[1-9])|(?:[12][0-9])|(?:3[01])|[1-9])
49+
# Days: Monday, Tue, Thu, etc...
50+
DAY (?:Mon(?:day)?|Tue(?:sday)?|Wed(?:nesday)?|Thu(?:rsday)?|Fri(?:day)?|Sat(?:urday)?|Sun(?:day)?)
51+
# Years?
52+
YEAR (?>\d\d){1,2}
53+
HOUR (?:2[0123]|[01]?[0-9])
54+
MINUTE (?:[0-5][0-9])
55+
# '60' is a leap second in most time standards and thus is valid.
56+
SECOND (?:(?:[0-5]?[0-9]|60)(?:[:.,][0-9]+)?)
57+
TIME (?!<[0-9])%{HOUR}:%{MINUTE}(?::%{SECOND})(?![0-9])
58+
# datestamp is YYYY/MM/DD-HH:MM:SS.UUUU (or something like it)
59+
DATE_US %{MONTHNUM}[/-]%{MONTHDAY}[/-]%{YEAR}
60+
DATE_EU %{MONTHDAY}[./-]%{MONTHNUM}[./-]%{YEAR}
61+
ISO8601_TIMEZONE (?:Z|[+-]%{HOUR}(?::?%{MINUTE}))
62+
ISO8601_SECOND (?:%{SECOND}|60)
63+
TIMESTAMP_ISO8601 %{YEAR}-%{MONTHNUM}-%{MONTHDAY}[T ]%{HOUR}:?%{MINUTE}(?::?%{SECOND})?%{ISO8601_TIMEZONE}?
64+
DATE %{DATE_US}|%{DATE_EU}
65+
DATESTAMP %{DATE}[- ]%{TIME}
66+
TZ (?:[PMCE][SD]T|UTC)
67+
DATESTAMP_RFC822 %{DAY} %{MONTH} %{MONTHDAY} %{YEAR} %{TIME} %{TZ}
68+
DATESTAMP_RFC2822 %{DAY}, %{MONTHDAY} %{MONTH} %{YEAR} %{TIME} %{ISO8601_TIMEZONE}
69+
DATESTAMP_OTHER %{DAY} %{MONTH} %{MONTHDAY} %{TIME} %{TZ} %{YEAR}
70+
DATESTAMP_EVENTLOG %{YEAR}%{MONTHNUM2}%{MONTHDAY}%{HOUR}%{MINUTE}%{SECOND}
71+
# Syslog Dates: Month Day HH:MM:SS
72+
SYSLOGTIMESTAMP %{MONTH} +%{MONTHDAY} %{TIME}
73+
PROG (?:[\w._/%-]+)
74+
SYSLOGPROG %{PROG:program}(?:\[%{POSINT:pid}\])?
75+
SYSLOGHOST %{IPORHOST}
76+
SYSLOGFACILITY <%{NONNEGINT:facility}.%{NONNEGINT:priority}>
77+
HTTPDATE %{MONTHDAY}/%{MONTH}/%{YEAR}:%{TIME} %{INT}
78+
# Shortcuts
79+
QS %{QUOTEDSTRING}
80+
# Log formats
81+
SYSLOGBASE %{SYSLOGTIMESTAMP:timestamp} (?:%{SYSLOGFACILITY} )?%{SYSLOGHOST:logsource} %{SYSLOGPROG}:
82+
COMMONAPACHELOG %{IPORHOST:clientip} %{USER:ident} %{USER:auth} \[%{HTTPDATE:timestamp}\] "(?:%{WORD:verb} %{NOTSPACE:request}(?: HTTP/%{NUMBER:httpversion})?|%{DATA:rawrequest})" %{NUMBER:response} (?:%{NUMBER:bytes}|-)
83+
COMBINEDAPACHELOG %{COMMONAPACHELOG} %{QS:referrer} %{QS:agent}
84+
# Log Levels
85+
LOGLEVEL ([Aa]lert|ALERT|[Tt]race|TRACE|[Dd]ebug|DEBUG|[Nn]otice|NOTICE|[Ii]nfo|INFO|[Ww]arn?(?:ing)?|WARN?(?:ING)?|[Ee]rr?(?:or)?|ERR?(?:OR)?|[Cc]rit?(?:ical)?|CRIT?(?:ICAL)?|[Ff]atal|FATAL|[Ss]evere|SEVERE|EMERG(?:ENCY)?|[Ee]merg(?:ency)?)

elk/logstash/patterns/nginx.conf

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
NGINXACCESS %{IPORHOST:clientip} %{USER:ident} %{USER:auth} \[%{HTTPDATE:timestamp}\] "(?:%{WORD:verb} %{URIPATHPARAM:request}(?: HTTP/%{NUMBER:httpversion})?|-)" %{NUMBER:response} (?:%{NUMBER:bytes}|-) "(?:%{URI:referrer}|-)" %{QS:agent} %{NUMBER:request_time} %{NUMBER:upstream_response_time} %{NUMBER:gzip_ratio} (?:%{WORD:cache_hit}|-)%{GREEDYDATA}

elk/logstash/patterns/symfony.conf

+34
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
VERYGREEDYDATA (.|\n)*
2+
3+
SYMFONY_EXCEPTION [^:]*
4+
5+
SYMFONY_LOG_TYPE request|security|app|profiler|doctrine|event
6+
SYMFONY_LOG_LEVEL DEBUG|INFO|WARNING|ERROR|CRITICAL|ALERT
7+
SYMFONY_LOG %{SYMFONY_LOG_TYPE:log_type}\.%{SYMFONY_LOG_LEVEL:log_level}
8+
9+
SYMFONY_PARAMETER "[^"]*":( )?"[^"]*"
10+
SYMFONY_PARAMETERS (%{SYMFONY_PARAMETER}(, )?)*
11+
SYMFONY_CONTEXT {.*}
12+
SYMFONY_REQUEST_METHOD GET|POST|PUT|DELETE|HEAD|OPTIONS|CONNECT
13+
SYMFONY_REQUEST_PARAMETERS {"url":"%{GREEDYDATA:request_url}","ip":"%{IP:request_ip}","http_method":"%{SYMFONY_REQUEST_METHOD:request_method}"}
14+
15+
SYMFONY_REQUEST_INFO Matched route "%{GREEDYDATA:route}" \(parameters: %{SYMFONY_PARAMETERS:parameters}\)
16+
SYMFONY_REQUEST_UNCAUGHT_EXCEPTION %{SYMFONY_EXCEPTION:exception}: %{VERYGREEDYDATA:exception_message} \(uncaught exception\) at %{VERYGREEDYDATA:exception_file} line %{NUMBER:exception_file_line}
17+
SYMFONY_REQUEST_CRITICAL Exception thrown when handling an exception \(ErrorException: %{GREEDYDATA:exception_message} in %{GREEDYDATA:exception_file} line %{NUMBER:exception_file_line}\)
18+
SYMFONY_SECURITY_WARNING_USER_MISSING Username "%{GREEDYDATA:user}" could not be found.
19+
SYMFONY_SECURITY_INFO_USER_AUTHENTICATED User "%{GREEDYDATA:user}" has been authenticated successfully
20+
SYMFONY_SECURITY_INFO_AUTHENTICATION_FAILED Authentication request failed: %{GREEDYDATA:authentication_fail_reason}
21+
SYMFONY_SECURITY_DEBUG Username "%{GREEDYDATA:user}" was reloaded from user provider.
22+
SYMFONY_EVENT_DEBUG_NOTIFICATION Notified event "%{GREEDYDATA:event}" to listener "%{GREEDYDATA:listener}".
23+
SYMFONY_EVENT_DEBUG_PROPAGATION_STOP Listener "%{GREEDYDATA:listener}" stopped propagation of the event "%{GREEDYDATA:event}".
24+
SYMFONY_DOCTRINE_DEBUG (?<=doctrine.DEBUG: ).*
25+
26+
SYMFONY_REQUEST %{SYMFONY_REQUEST_INFO}|%{SYMFONY_REQUEST_UNCAUGHT_EXCEPTION}|%{SYMFONY_REQUEST_CRITICAL}
27+
SYMFONY_SECURITY %{SYMFONY_SECURITY_WARNING_USER_MISSING}|%{SYMFONY_SECURITY_INFO_USER_AUTHENTICATED}|%{SYMFONY_SECURITY_DEBUG}|%{SYMFONY_SECURITY_INFO_AUTHENTICATION_FAILED}
28+
SYMFONY_EVENT %{SYMFONY_EVENT_DEBUG_NOTIFICATION}|%{SYMFONY_EVENT_DEBUG_PROPAGATION_STOP}
29+
SYMFONY_DOCTRINE %{SYMFONY_DOCTRINE_DEBUG:doctrine_sql_query}
30+
SYMFONY_VARIOUS_INFO Write SecurityContext in the session|Reloading user from user provider.|Read SecurityContext from the session|Populated SecurityContext with an anonymous Token|Access is denied (and user is neither anonymous, nor remember-me)|Unable to store the profiler information.|Remember-me cookie accepted.
31+
32+
SYMFONY_LOG_MESSAGE %{SYMFONY_REQUEST}|%{SYMFONY_SECURITY}|%{SYMFONY_EVENT}|%{SYMFONY_DOCTRINE}|%{SYMFONY_VARIOUS_INFO:log_various_info}|%{VERYGREEDYDATA:log_unparsed_message}
33+
34+
SYMFONY ^\[%{TIMESTAMP_ISO8601:date}\] %{SYMFONY_LOG}: %{SYMFONY_LOG_MESSAGE:log_message} (\[\]|%{SYMFONY_CONTEXT:log_context}) (\[\]|%{SYMFONY_REQUEST_PARAMETERS:log_request})

nginx/Dockerfile

+20
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
FROM debian:jessie
2+
3+
MAINTAINER Maxence POUTORD <maxence.poutord@gmail.com>
4+
5+
RUN apt-get update && apt-get install -y nginx
6+
7+
ADD nginx.conf /etc/nginx/
8+
ADD symfony.conf /etc/nginx/sites-available/
9+
10+
RUN ln -s /etc/nginx/sites-available/symfony.conf /etc/nginx/sites-enabled/symfony
11+
RUN rm /etc/nginx/sites-enabled/default
12+
13+
RUN echo "upstream php-upstream { server php:9000; }" > /etc/nginx/conf.d/upstream.conf
14+
15+
RUN usermod -u 1000 www-data
16+
17+
CMD ["nginx"]
18+
19+
EXPOSE 80
20+
EXPOSE 443

nginx/nginx.conf

+29
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
user www-data;
2+
worker_processes 4;
3+
pid /run/nginx.pid;
4+
5+
events {
6+
worker_connections 2048;
7+
multi_accept on;
8+
use epoll;
9+
}
10+
11+
http {
12+
server_tokens off;
13+
sendfile on;
14+
tcp_nopush on;
15+
tcp_nodelay on;
16+
keepalive_timeout 15;
17+
types_hash_max_size 2048;
18+
include /etc/nginx/mime.types;
19+
default_type application/octet-stream;
20+
access_log off;
21+
error_log off;
22+
gzip on;
23+
gzip_disable "msie6";
24+
include /etc/nginx/conf.d/*.conf;
25+
include /etc/nginx/sites-enabled/*;
26+
open_file_cache max=100;
27+
}
28+
29+
daemon off;

nginx/symfony.conf

+24
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
server {
2+
server_name symfony.dev;
3+
root /var/www/symfony/web;
4+
5+
6+
location / {
7+
try_files $uri @rewriteapp;
8+
}
9+
10+
location @rewriteapp {
11+
rewrite ^(.*)$ /app.php/$1 last;
12+
}
13+
14+
location ~ ^/(app|app_dev|config)\.php(/|$) {
15+
fastcgi_pass php-upstream;
16+
fastcgi_split_path_info ^(.+\.php)(/.*)$;
17+
include fastcgi_params;
18+
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
19+
fastcgi_param HTTPS off;
20+
}
21+
22+
error_log /var/log/nginx/symfony_error.log;
23+
access_log /var/log/nginx/symfony_access.log;
24+
}

0 commit comments

Comments
 (0)