ProtoTyPus
ProtoTyPus

Reputation: 1324

Make my php server a symfony server

I'm trying to make my php server a Symfony server.
I've installed Symfony and I've created a project in /var/www/project_name
If i make server:run my_local_ip:8000 the server run correctly and I can reach it also from a computer on another net with: http://public_ip:8000, instead, if I write http://public_ip it goes on my index.php.
Well, now, I'ld like that if I write http://public_ip it goes on http://public_ip:8000 or atleast if could make Symfony run on port 80 or make Symfony run on php built-in server.
I've tried to create a virtual host, I've created this file:
project_name.conf

<VirtualHost *:80>
    # The ServerName directive sets the request scheme, hostname and port that
    # the server uses to identify itself. This is used when creating
    # redirection URLs. In the context of virtual hosts, the ServerName
    # specifies what hostname must appear in the request's Host: header to
    # match this virtual host. For the default virtual host (this file) this
    # value is not decisive as it is used as a last resort host regardless.
    # However, you must set it for any further virtual host explicitly.
    ServerName project_name
    <IfModule mod_rewrite.c>
      RewriteEngine on
      RewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK)
      RewriteRule .* - [F]
    </IfModule>
    DocumentRoot /var/www/project_name
    <Directory /var/www/project_name>
      Options Indexes FollowSymlinks Multiviews
      AllowOverride All
      Require all granted
    </Directory>
    # Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
    # error, crit, alert, emerg.
    # It is also possible to configure the loglevel for particular
    # modules, e.g.
    #LogLevel info ssl:warn

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined

    # For most configuration files from conf-available/, which are
    # enabled or disabled at a global level, it is possible to
    # include a line for only one particular virtual host. For example the
    # following line enables the CGI configuration for this host only
    # after it has been globally disabled with "a2disconf".
    #Include conf-available/serve-cgi-bin.conf
</VirtualHost>

# vim: syntax=apache ts=4 sw=4 sts=4 sr noet

But it doesn't work and if I write http://public_ip it runs always my index.php.
Can you give me an help?


Completed Solution - Thanks to @Alberto Fecchi answer:

  1. Edit 00-default.conf
  2. Paste what you found on Alberto Fecchi's answer and also add this
#IT NEEDS "<" BEFORE TAG
Directory /var/www/tcgfiga/web/bundles>
   IfModule mod_rewrite.c>
     RewriteEngine Off
  </IfModule>
/Directory>
  1. Then make "sudo service apache2 restart". Sometimes it is necessary, sometimes not
  2. Go into folder "/var/www/project/web/" and search ".htaccess" file
  3. You should delete it, but if so your application doesn't run and you see and page with the content of the folder, recreate it and open it. You have to search
<IfModule !mod_rewrite.c>
  <IfModule mod_alias.c>
    # When mod_rewrite is not available, we instruct a temporary redirect of
    # the start page to the front controller explicitly so that the website
    # and the generated links can still be used.
    RedirectMatch 302 ^/$ /app.php/
    # RedirectTemp cannot be used instead
  </IfModule>
</IfModule>
  1. Comment the line RedirectMatch 302 ^/$ /app.php/

Now it works :)

Upvotes: 1

Views: 211

Answers (1)

Alberto Fecchi
Alberto Fecchi

Reputation: 3396

Use this Virtual Host:

<VirtualHost *:80>

    ServerName project_name
    <IfModule mod_rewrite.c>
      RewriteEngine on
      RewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK)
      RewriteRule .* - [F]
    </IfModule>
    DocumentRoot /var/www/project_name/web
    <Directory /var/www/project_name/web>
        Options Indexes FollowSymlinks Multiviews
        AllowOverride All
        Require all granted
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined

</VirtualHost>

Enable it with sudo a2ensite project_name and restart with sudo service apache2 restart (commands could be different on various OS).

Now you can visit http://public_ip to see your "production" application.

Upvotes: 1

Related Questions