AllowOverride not allowed here - apache

I have setup a virtualhost like following
<VirtualHost *:80>
DocumentRoot /var/www/html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
Options Includes
AllowOverride All
</VirtualHost>
But always throws me
AH00526: Syntax error on line 6 of /etc/apache2/sites-enabled/000-my-site.conf:
AllowOverride not allowed here
I'm a bit confused because I understand that is the right place to do it

It's because you have to put it in <Directory> directive.' .htaccess is per directory context, so you have to explicitly tell apache where .htaccess is allowed to be used.
<VirtualHost *:80>
DocumentRoot /var/www/html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
Options Includes
<Directory "/var/www/html">
AllowOverride All
</Directory>
</VirtualHost>

Related

Set a default Virtual Host in Apache using Debian 10

I have a little problem.
I have a VPS configured with Apache, I have 2 VH, one is mydomain.com and other is subdomain.mydomain.com
Problem is that whenever I type the VPS IP in the browser, it goes to the subdomain. Is there a way to default this to the main domain?
I've created a folder called sites-enabled which contains both configuration files, they look something like this.
example.net.conf:
<VirtualHost *:80>
ServerName example.net
ServerAlias www.example.net
DocumentRoot /var/www/example.net
<Directory /var/www/example.net>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
</Directory>
<FilesMatch \.php$>
SetHandler "proxy:unix:/run/php/php7.4-fpm.sock|fcgi://localhost"
</FilesMatch>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
admin.example.net.conf:
<VirtualHost *:80>
ServerName admin.example.net
DocumentRoot /var/www/admin.example.net
DirectoryIndex index.html
ErrorLog ${APACHE_LOG_DIR}/admin.example.net.log
CustomLog ${APACHE_LOG_DIR}/admin.example.net.log combined
</VirtualHost>
How can I set the first one to be the default?
place the below code in the 000-default.conf file
<VirtualHost *:80>
DocumentRoot /var/www/example.net
<Directory /var/www/example.net>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
</Directory>
<FilesMatch \.php$>
SetHandler "proxy:unix:/run/php/php7.4-fpm.sock|fcgi://localhost"
</FilesMatch>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

How to use different Flask template directory from Apache VirtualHost

I want to serve up different 'look' and content for users on my flask site based on the virtualhost they use to reach the site without duplicating the entire code tree.
E.g. going to red.mysite.com would serve up red pages and 'red' content where the default is white.
I can do this today for the look using using a custom static tree in the Apache config to se the css and images but I want to have a custom /template tree too so I can change the page content in my templates to 'Red' versions.
Is there a way to set template dir from VirtualHost directives like with /static?
<VirtualHost *:80>
ServerName mysite.com
ServerAdmin admin#mywebsite.com
WSGIScriptAlias / /var/www/mysite.wsgi
<Directory /var/www/mysite/>
Order allow,deny
Allow from all
</Directory>
Alias /static /var/www/mysite/static
<Directory /var/www/mysite/static/>
Order allow,deny
Allow from all
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
<VirtualHost *:80>
ServerName red.mysite.com
ServerAdmin admin#mywebsite.com
WSGIScriptAlias / /var/www/mysite.wsgi
<Directory /var/www/mysite/>
Order allow,deny
Allow from all
</Directory>
Alias /static /var/www/mysite/red/static
<Directory /var/www/mysite/red/static/>
Order allow,deny
Allow from all
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
Graham pointed me down the right path.
Here is how I did it:
changed conf to add in processgroup
<VirtualHost *:80>
ServerName mysite.com
ServerAdmin admin#mywebsite.com
WSGIDaemonProcess default
WSGIProcessGroup default
WSGIScriptAlias / /var/www/mysite.wsgi
<Directory /var/www/mysite/>
Order allow,deny
Allow from all
</Directory>
Alias /static /var/www/mysite/static
<Directory /var/www/mysite/static/>
Order allow,deny
Allow from all
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
<VirtualHost *:80>
ServerName red.mysite.com
ServerAdmin admin#mywebsite.com
WSGIDaemonProcess red
WSGIProcessGroup red
WSGIScriptAlias / /var/www/mysite.wsgi
<Directory /var/www/mysite/>
Order allow,deny
Allow from all
</Directory>
Alias /static /var/www/mysite/red/static
<Directory /var/www/mysite/red/static/>
Order allow,deny
Allow from all
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
Modified Flask app creation as follows:
import mod_wsgi
instance = mod_wsgi.process_group
if instance == 'red':
app = Flask(__name__, template_folder='red/templates')
else:
app = Flask(__name__)
Now anyone coming in on the 'Red' URL sees templates in red/templates.
Bill

Apache virtualhost servername by ip + documentroot

I am trying to get this virtualhost working on apache + ubuntu. I want it to work without a real domainname but by ip and the path. It is now not getting activated. Is it possible to use the serverName like this or are only domain names valid?
<VirtualHost *:80>
serverName 37.35.66.98/just-do-it/
DocumentRoot /var/www/html/just-do-it/web
<Directory /var/www/html/just-do-it/web>
AllowOverride All
Order Allow,Deny
Allow from All
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
Remove path portion from server name, then this should work
<VirtualHost *:80>
serverName 37.35.66.98
DocumentRoot /var/www/html/just-do-it/web
<Directory /var/www/html/just-do-it/web>
Options -Indexes +FollowSymLinks +MultiViews
AllowOverride All
Order Allow,Deny
Allow from All
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
do not forget to add your server name in /etc/hosts file

Apache - vHost - Forbidden

I am trying to make a vhost that point "*:9090" to a specific directory. I'll explain.
That print below shows it's working the path i want.
So, I am trying to do "*:9090" point to this path (/wamp/www/root/dev). Below what i tried.
<VirtualHost *:9090>
DocumentRoot "c:/wamp/www/root/dev"
<Directory c:/wamp/www/root/dev>
Options all
Allow from all
AllowOverride All
Require all granted
</Directory>
And now, below, a print of my result.
What am i doing wrong?
I had the same issue until I used this:
<Virtualhost *:80 >
ServerName site.domain.com
DocumentRoot /path/to/site
<Directory /path/to/site>
AllowOverride All
Require all granted
</Directory>
ServerAdmin user#domain.com
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</Virtualhost>

Apache Virtual Host with path

I am deploying a Rails app with Phusion passenger and Apache HTTPD, to do that I have to create a virtual host in Apache to associate the root of my app. And this process is successful, effectively my app is running, but my problem is that I have to do this run in a path of my domain, such as "mydomain.com/railsapp".
I tried this configurations and all failed.**
Configuration 1
ServerAdmin admin#mydomain.com
ServerName mydomain.com/railsapp
RailsEnv production
RailsBaseURI /app
DocumentRoot /var/www/rails/app/public
<Directory /var/www/rails/app/public>
AllowOverride all
Options -MultiViews
#Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
Configuration 2
ServerAdmin admin#mydomain.com
ServerName mydomain.com
ServerPath /railsappp
RailsEnv production
RailsBaseURI /app
DocumentRoot /var/www/rails/app/public
<Directory /var/www/rails/app/public>
AllowOverride all
Options -MultiViews
#Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
Configuration 3
ServerAdmin admin#mydomain.com
ServerName mydomain.com
ServerAlias mydomain.com/railsappp
RailsEnv production
RailsBaseURI /app
DocumentRoot /var/www/rails/app/public
<Directory /var/www/rails/app/public>
AllowOverride all
Options -MultiViews
#Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
Does Anyone have idea how to do that?
Use ServerName as my domain.com and make use of ProxyPass and ProxyPassReverse directive to redirect /railsapp to desired location.... Read more about reverse proxy..