Add SSL certificate to rails site, apache2 passenger - ruby-on-rails

I have a linux server running Ubuntu 10.04, apache2 and passenger. Its a 1and1 package and comes with an SSL certificate which has the various .crt and .key files present in /etc/ssl.
I have 3 apps hosted on this server, only 1 of which needs SSL encryption. All of the apps are run as a SubURI, e.g. domain.com/app1, domain.com/app2 etc etc and have symlinks created in /etc/apache2/sites-enabled.
How could I get app3 to use the SSL certificate whilst still remaning under a subURI of the server?
Thanks in advance!
apache2.conf
<VirtualHost *:80>
ServerName domain.eu
DocumentRoot /var/www
<Directory /var/www>
Allow from all
</Directory>
RailsBaseURI /app1
<Directory /apps/app1/public>
Options -MultiViews
</Directory>
RailsBaseURI /app2
<Directory /apps/app2/public>
Options -MultiViews
</Directory>
RailsBaseURI /app3
<Directory /apps/app3/public>
Options -MultiViews
</Directory>

Related

Freebsd 10.1 / Ruby on Rails / Apache 2.4 / Phusion Passenger : client denied by server configuration

I can't get passenger to work with apache24 on freebsd 10.1
If I place the virtualhost below into my httpd.conf not only does a request for the virtualhost return 403 forbidden but also the server's hostname documentroot which is just index.html file without rails returns 403 forbidden also the httpd-error.log only says client denied by server configuration.
I assume passenger is failing to rewrite the requests from /public to /app/views/index.html.erb because I didn't put any html files in
/public Already installed mod_fastcgi but responses are still 403 forbidden
This is the tail of my httpd.conf
LoadModule passenger_module /usr/local/lib/ruby/gems/2.1/gems/passenger-5.0.18/buildout/apache2/mod_passenger.so
LoadModule fastcgi_module libexec/apache24/mod_fastcgi.so
<IfModule mod_passenger.c>
PassengerRoot /usr/local/lib/ruby/gems/2.1/gems/passenger-5.0.18
PassengerDefaultRuby /usr/local/bin/ruby21
</IfModule>
# Virtual hosts
<VirtualHost *:80>
ServerName www.mydomain.com
DocumentRoot /usr/home/myusername/websites/myrailsappname/public
<Directory /usr/home/myusername/websites/myrailsappname/public>
AllowOverride all
Options -MultiViews
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
Include etc/apache24/Includes/*.conf
Apache 2.4 has different allow/deny rules:
http://httpd.apache.org/docs/2.4/upgrading.html#run-time
You will want to update your rule:
<Directory /usr/home/myusername/websites/myrailsappname/public>
AllowOverride all
Options -MultiViews
Order allow,deny
Allow from all
</Directory>
to something like:
<Directory /usr/home/myusername/websites/myrailsappname/public>
AllowOverride all
Options -MultiViews
require all granted
</Directory>

How to deploy Rails app on subdomain root with Apache and Passenger

I have working Rails app on sub-uri redmine.example.org/redmine and I want it on redmine.example.org
/var/www/work/redmine.src is approot
/var/www/work/redmine is symlink to /var/www/work/redmine.src/public
<VirtualHost *:80>
DocumentRoot /var/www/work
ServerName redmine.example.org
ErrorLog /var/log/apache2/redmine-error_log
CustomLog /var/log/apache2/redmine-access_log combined
<Directory /var/www/work/redmine>
AllowOverride all
Options -MultiViews
Order allow,deny
allow from all
</Directory>
RackBaseURI /redmine
<Directory /var/www/work/redmine.src>
Options -MultiViews
Order allow,deny
allow from all
</Directory>
</VirtualHost>
I tried many combination and googled hours, but nothing works.
How should I change this config to deploy redmine on subdomain root?
Thanks in advance.
Well, it was easier, than I supposed.
When I read the manual again and again I found solution:
link to manual
Now my config file looks like this:
<VirtualHost *:80>
DocumentRoot /var/www/work/redmine.src/public
ServerName redmine.example.org
<Directory /var/www/work/redmine.src/public>
AllowOverride all
Options -MultiViews
Order allow,deny
allow from all
</Directory>
</VirtualHost>
Another way to deploy sub-uri app, might work for you too:
<VirtualHost *:80>
ProxyPass /sub_uri/ http://localhost:8000/sub_uri/
DocumentRoot /main_app/public
<Directory /main_app/public>
...
</Directory>
</VirtualHost>
<VirtualHost *:8000>
DocumentRoot /sub_uri/public
<Directory /sub_uri/public>
...
SetEnv RAILS_RELATIVE_URL_ROOT /sub_uri
</Directory>
</VirtualHost>
I installed Redmine 3.3.1 on a Debian 9.0 Stretch server using the packages provided by the distribution itself (Apache + Redmine + Ruby + Rails + Passenger + MariaDB) more or less following those guides:
http://www.redmine.org/projects/redmine/wiki/RedmineInstall
http://www.redmine.org/projects/redmine/wiki/InstallRedmineOnDebianStableApacheMysqlPassenger
I would like to leave www.example.org "for Apache" and redmine.example.org "for Redmine", so I ended up with the following setup.
I left /etc/apache2/sites-available/000-default.conf untouched and created a file named redmine.conf inside that same folder:
<VirtualHost *:80>
ServerName redmine.example.org
DocumentRoot /usr/share/redmine/public
PassengerRuby /usr/bin/ruby
<Directory /usr/share/redmine/public>
Allow from all
Options -MultiViews
Require all granted
</Directory>
</VirtualHost>
Then, I've linked it to the sites-enabled folder and restarted Apache:
# ln -s /etc/apache2/sites-available/redmine.conf /etc/apache2/sites-enabled/redmine.conf
# systemctl restart apache2
To set up that virtual host, I followed the directions here:
Deploying a Ruby application on Passenger + Apache
Deploying an app to a virtual host's root
https://www.phusionpassenger.com/library/deploy/apache/deploy/ruby/#deploying-an-app-to-a-virtual-host-s-root

Running Rails on Apache2

I have a linode server and was running a single website for dev purposes using webrick, now i want to put it into production and use Apache2 which I have installed and is up and running the classic It Work's! page which is expected.
Now I want to run multiple sites on this VPS I am using the current configuration which works fine for striaght HTML but will not run the web apps unless I run them on another port (rails s -p3500 etc) as port 80 is already taken up by Apache.
<VirtualHost *:80>
ServerName datumpoint.bizmodev.com
# ServerAlias *.example.com
DocumentRoot /var/www.bizmodev.com
<Directory "/var/www.bizmodev.com">
Options FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
<VirtualHost *:80>
ServerName homehounduk.co.uk
ServerAlias *.homehounduk.co.uk
DocumentRoot /var/www.homehounduk.co.uk
<Directory "/var/www.homehounduk.co.uk">
Options FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
Do i need to use passenger or something else to get this working? i have tried changing the virtual hosts to different ports and stuff but just end up getting a 403.
Any help would be appreciated.
this line:
<VirtualHost *:80>
you are telling to your apache that it will listen to anything on port 80
it you change to something like this:
<VirtualHost www.myawesomeurl.com:80>
in this case you are telling apache that everything that comes as a request from this address (www.myawesomeurl.com) on port 80 will use that options.
I think you want something like this:
# Basically your home, like: www.myhome.com
<VirtualHost *:80>
ServerName datumpoint.bizmodev.com
# ServerAlias *.example.com
DocumentRoot /var/www.bizmodev.com
<Directory "/var/www.bizmodev.com">
Options FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
# Your custom site
<VirtualHost www.something.com:80>
ServerName homehounduk.co.uk
ServerAlias *.homehounduk.co.uk
DocumentRoot /var/www.homehounduk.co.uk
<Directory "/var/www.homehounduk.co.uk">
Options FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
and dont forget to point the www.something.com to the same ip as the www.myhome.com
Combine this with passenger and you will have one server running many rails apps and many php instances or html pages or anything you want.

Apache: how to config ip address without SeverName?

I want to set my own sever to run my ruby on rails project(with passenger plugin). I use Apache2 on Ubuntu11.04(sever version).
It's my first time to use Apache and I have read some documents.
All the docs ask me to set SeverName,such as Apache doc and ubuntu docs.
Unfortunately, I don't have a domain name, can I just set IP address and use IP address to access this sever?
If it's ok, how should I do?
It's the config sample given by passenger:
<VirtualHost *:80>
ServerName www.yourhost.com
DocumentRoot /somewhere/public
<Directory /somewhere/public>
AllowOverride all
Options -MultiViews
</Directory>
</VirtualHost>
Thanks!
Comment out the line:
# NameVirtualHost *:80
Comment out any <VirtualHost> blocks.
Find the line:
DocumentRoot "/var/www/html" # or whatever your config uses for the overall apache document root.
Change it to your rails application's root.
DocumentRoot "/somewhere/public"
Then add your other config settings to a <Directory> block.
<Directory /somewhere/public>
AllowOverride all
Options -MultiViews
</Directory>
I haven't tested this for sure, but you should be able to get to it by only visiting the IP address. Make sure you have Passenger installed, have run passenger-install-apache2-module, and have added the appropriate module loading lines to your apache config.
/etc/apache2/httpd.conf
<VirtualHost *:80>
ServerName example.com
DocumentRoot /home/urpc-name/RailsApps/anything/public
<Directory /home/webonise/RailsApps/anything/public>
RailsEnv development
AllowOverride all
Options -MultiViews
</Directory>
</VirtualHost>
In server name:select ur virtual name...u can choose anything
In document root and directory,give your rails project path
Select rails environment in RailsEnv
/etc/hosts
127.0.0.1 example.com
Put server name in virtual host-127.0.0.1 is the localhost
Then just go to your browser and type example.com
Hope this helps

symfony sandbox and virtual host

I have installed symfony sandbox 1.2 and created a virtual host by modifying apache config like this (following this tut http://www.symfony-project.org/askeet/1_0/en/1 but I adapted as sandbox dirs are different from their tuts):
NameVirtualHost 127.0.0.1:80
<VirtualHost 127.0.0.1:80>
ServerName askeet
DocumentRoot "c:/webserver/www/sf_sandbox/web"
DirectoryIndex index.php
Alias /sf "c:/webserver/www/sf_sandbox/web/images/sf"
<Directory "c:/webserver/www/sf_sandbox/web">
AllowOverride All
Allow from All
</Directory>
<Directory "c:/webserver/www/sf_sandbox/web/images/sf">
AllowOverride All
Allow from All
</Directory>
</VirtualHost>
And modified my hosts file to map askeet to 127.0.0.1
It works fine except symfony tells me:
If you see no image in this page, you
may need to configure your web server
so that it gains access to the
symfony_data/web/sf/ directory.
Indeed I can't see any images which are stored in c:/webserver/sf_sandbox/web/images/sf as for my symfony sandbox, why ?
Your hosts file should be
<VirtualHost 127.0.0.1:80>
ServerName askeet
DocumentRoot "c:/webserver/www/sf_sandbox/web"
DirectoryIndex index.php
Alias /sf "c:/webserver/www/sf_sandbox/web/sf"
<Directory "c:/webserver/www/sf_sandbox/web">
AllowOverride All
Allow from All
</Directory>
<Directory "c:/webserver/www/sf_sandbox/web/sf">
AllowOverride All
Allow from All
</Directory>
</VirtualHost>
because the sf directory is in web/ directory and not in web/images directory?

Resources