How can I get my domain to do this? - url

I was just wondering how you would do this for a domain name?
name.example.com
How would you make entering a url like above, direct to somewhere on a server?
example:
forum.example.com would take you to a forum on the server

So, this looks like more of an Apache question than a DNS question.
For DNS, you need to add the proper IP address and subdomain to your DNS entry on your authoritative DNS server.
www A AAA.XXX.YYY.ZZZ
forum A AAA.XXX.YYY.ZZZ
These can be different servers, if you're looking to host forum on a different server than your www page. For more information on DNS configuration files (depending on how you're doing your DNS configuration - although the syntax is reasonably universal) - see here.
I'm assuming, though, you want to host both www and forum on the same server, but serve from different file directories for each. For Apache, you just create a virtual hosts like so:
<VirtualHost *:80>
ServerName forum.example.com
DocumentRoot "/var/www/forum/"
</VirtualHost>
<VirtualHost *:80>
ServerName www.example.com
DocumentRoot "/var/www/html/"
</VirtualHost>
This allows Apache to serve out of different directories, based on the incoming server request. For more information on name-based VirtualHosts, see here.

Related

Passenger (Apache) on EC2 not loading Rails application when arrive via DNS

This is driving me nuts. Hopefully someone can help
I've deployed a Rails app on an EC2 instance (Ubuntu) using Apache and Passenger. Here's my Apache configuration on the EC2 instance
/etc/apache2/apache2.conf
<VirtualHost *:80>
ServerName ec2-52-16-160-160.eu-west-1.compute.amazonaws.com
# !!! Be sure to point DocumentRoot to 'public'!
DocumentRoot /home/ubuntu/workspace/intellitute/public
ErrorLog /home/ubuntu/workspace/intellitute/log/error.log
RailsEnv development
<Directory /home/ubuntu/workspace/intellitute/public>
# This relaxes Apache security settings.
AllowOverride all
Require all granted
# MultiViews must be turned off.
Options -MultiViews
</Directory>
</VirtualHost>
This works and I'm able to access the application by putting ec2-52-16-160-160.eu-west-1.compute.amazonaws.com into a browser.
I've registered a domain name with a provider (not AWS) and set up two 'A' DNS records there (appname.com & *.appname.com) to point at the public ip of my server - 52.16.160.160.
I've then changed the ServerName in the conf file above to the domain name I registered and restarted the Apache server.
<VirtualHost *:80>
ServerName www.appname.com (also tried 'ServerName appname.com')
.....
But when I type www.appname.com into a browser I'm just getting the Apache2 Ubuntu Default Page. I'm assuming the fact I'm getting the default page means the DNS is working but for some reason Passenger is not loading the application? Is this assumption correct?
Does it make a difference that I'm still working in the development environment?
I'm stuck and can't find any solution.
Thanks for looking
Edit 1
I'm not at my development machine at the moment but does it make a difference that I haven't set up an elastic IP address on my EC2 instance? I'm just using the public IP address provided by the instance. I'll try set one up later to see what happens.
Finally figured this out. Might help someone in the future.
My EC2 instance was a clone of another and I reckon there was some issues with the apache2 and passenger configurations. I uninstalled and re-installed them on the EC2 instance and it is now working (for appname.com, not www.appname.com - I'll have to figure that out)

Rails app dynamic subdomain not working on apache and passenger

Same question asked multiple times but no feasible answer is available yet and also the available answers just support hard coded subdomains:
I applied dynamic subdomain in my rails 3.2.13 app and its working locally by using lvh.me instead of localhost as specified by rails cast.
My urls are like
local
subdomain.app_name.lvh.me:3000/
In porduction:
subdomain.app_name.abc.com/
My site is on appache + passenger
and it seems that appache not forwarding request to passenger.
Am I missing something?
I followed this
http://railscasts.com/episodes/221-subdomains-in-rails-3
Note:
I don't need hardcoded subdomains as they will be generated dynamically and at extensive level.
1) Point *.abc.com in your DNS setup to your server.
2) Setup an Apache vhost to catch the star pointer:
<VirtualHost *:80>
ServerName abc.com
ServerAlias *.abc.com
DocumentRoot /home/public_html/yourapplication/current/public
</VirtualHost>

Rails 3 Two Applications on Different Domains (same ip) with Apache?

I deployed using phusion passenger on apache2 intially with just my single Rails application onto a domain, say bar.com. Now I wish to push an additional app I recently created to a subdomain on the bar domain, say foo.bar.com. I was a little confused about how I should setup the virtualhosts in the httpd.conf file to allow for this setup. I setup my DNS through godaddy so that the new subdomain would point to the same ip address as the initial domain (they're both residing on the same server).
Here's the VirtualHosts in my httpd.conf file (notice the two document roots points to different applications):
NameVirtualHost *:80
<VirtualHost *:80>
ServerName bar.com
ServerAlias www.bar.com
DocumentRoot /home/me/app1/public
<Directory /home/me/app1/public>
AllowOverride all
Options -MultiViews
</Directory>
</VirtualHost>
<VirtualHost *:80>
ServerName foo.bar.com
ServerAlias foo.bar.com www.foo.bar.com
DocumentRoot /home/me/app2/public
<Directory /home/me/app2/public>
AllowOverride all
Options -MultiViews
</Directory>
</VirtualHost>
With this setup I can navigate to www.bar.com or bar.com but it seems the subdomain doesn't work, navigating to foo.bar.com leads me to this page:
Not Found
The requested URL / was not found on this server.
Apache/2.2.20 (Ubuntu) Server at foo.bar.com Port 80
This involved a couple of steps. Firstly I moved my virtualhosts outside of my httpd.conf file and create to new files under the sites-available folder each named after the corresponding domain bar.com and foo.bar.com. Next I had to add each site to sites-enabled by running the apache command sudo a2ensite. Finally I had to call the command sudo service apache2 reload. It's important that each command was run with admin access or else it didn't work.
Also worth mentioning, browsers like Firefox like to cache old website domain name data so if the url foo.bar.com previously wasn't working and you resolve the problem it will still appear to not work until you clear your cache.
Did you remember to restart apache after adding the second virtual host?

Multiple sites in multiple projects on the same rails server

I've searched the web, but I can only find information on sharing code between multiple sites and on separating the database to isolated models. This is not what I want.
I want to run a single rails server, with a single DNS address and a single port - http://myportal.com - that will handle several other sites - http://myportal.com/site1, http://myportal.com/site2 etc.
I want each site to have it's own folder(and SCM repository), it's own database, it's own routing - it's own everything. That is - I want to be able to develop each site as a standalone - that means I need to be able to run site1 site as http://localhost:3000 and not http://localhost:3000/site1.
On the server, the root site(the one that responds to the http://myportal.com address should be the one I run the server from, and it should know the absolute paths of the other sites(which will be in different directories on the server, not in child directories of the root site) and provide routing information for them - but it should also chain to the other sites routes.rb files. That means that if I go to address http://myportal.com/site1/books/ the root site should handle http://myportal.com/site1, and site1 should handle /books/. The root site should not need to know about the other sites' internal routing structures.
Is this possible? Right now I'm running the rails server that comes with the gem(rails server from the command line) on a Windows Server 2008 server, but I'm willing to install another server if that's what needed to accomplish the goal I described.
Thanks in advance!
You should be able to do this with Apache or nginx and possibly IIS if configured correctly. I'm most familiar with Apache and the flexible mod_rewrite and mod_proxy components that can facilitate this.
The idea is you rewrite http://example.com/ to be http://example.com:3000/ and http://example.com/site2 as http://example.com:3001/site2 and so forth.
It's also possible to do this with Passenger and some clever use of the VirtualHost directive, but you may have to fiddle to get a configuration that works for you. Remember that rewriting the headers to route internally has no effect on the resulting HTML your servers emit.
Create a symlink:
cd ~/Sites
ln -s /Users/hg/Developer/Rails/railsproj1/public ./railsproj1
modify apache config file
<VirtualHost *:80>
ServerName localhost
DocumentRoot /Users/hg/Sites
<Directory /Users/hg/Sites>
AllowOverride All
Options Indexes FollowSymLinks MultiViews
Order allow,deny
Allow from all
</Directory>
RailsBaseURI /railsproj1
RailsEnv development
</VirtualHost>
Answer source: http://collab.stat.ucla.edu/users/jose/weblog/9e335/

How can i see my apache rails server from other computers on my local network?

I have an apache server running, with mongrels underneath running rails. The apache config file for my rails app looks like this:
<VirtualHost *:80>
ServerName trunk.production.charanga
ServerAlias max.trunk.production.charanga
DocumentRoot /home/max/work/e_learning_resource/trunk/public
RewriteEngine On
<Proxy balancer://mongrel1>
BalancerMember http://127.0.0.1:5010
</Proxy>
# Redirect all non-static requests to thin
RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} !-f
RewriteRule ^/(.*)$ balancer://mongrel1%{REQUEST_URI} [P,QSA,L]
ProxyPass / balancer://mongrel1/
ProxyPassReverse / balancer://mongrel1/
ProxyPreserveHost on
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
# Custom log file locations
ErrorLog /home/max/work/e_learning_resource/trunk/log/error.log
CustomLog /home/max/work/e_learning_resource/trunk/log/access.log combined
</VirtualHost>
I thought that this would let me access it from another computer with max.trunk.production.charanga, but there's another step i'm sure, that i can't figure out. At the moment, if i type my ip address into the address bar in firefox on another computer, i see the default apache server (with "It works!" etc), but i can't get to my rails apache server. Please correct me if i'm using the wrong terminology here...
thanks
max
The computer attempting to access it needs to know how to resolve the DNS entry max.trunk.production.charanga to the correct IP address 192.168.1.42 (or whatever is the IP address of your server). It cannot figure this out without being told.
You can usually tell it this information by editing /etc/hosts and pointing that address to the correct IP address. Just simply having Apache recognize the name doesn't allow your other machines to know how to access it.
Alternatively, if you run a local DNS service, you can add an entry there.
Editing of your hosts file is a quick and easy solution.
Adding the line
192.168.1.1 trunk.production.charanga max.trunk.production.charanga
to it will tell your computer to use that ip for that domain. Depending on your browser (Firefox does caching internaly) or your OS (windows caches as well), you may need to restart your browser or flush your dns cache.
For more information about your hosts file (including where to find it on different OSes), check this wikipedia link.
I think it just simple,
I always do like this. example . 200.100.10.1:3000/ . I access my friend web application in another city.
or
<VirtualHost>
DocumentRoot /htdoc/trunk/ <-- this is my app path. I move my rails app into xampp for exp
ServerName 200.100.10.1:3000
ServerAlias 200.100.10.1
</VirtualHost>
so I just type 200.100.10.1 to access their application if i'm not wrong. I hope it work
I found the answer: the solution is to make the required server the default server for my ip address. I did this by changing the top of the config file for the required site (/etc/apache2/sites-available/001-trunk in this case)
from this
<VirtualHost *:80>
ServerName trunk.charanga
ServerAlias max.trunk.charanga
DocumentRoot /home/max/work/e_learning_resource/trunk/public
......etc
to
NameVirtualHost 192.168.0.234:80
<VirtualHost 192.168.0.234:80>
ServerName trunk.charanga
ServerAlias max.trunk.charanga
DocumentRoot /home/max/work/e_learning_resource/trunk/public
.....etc
where 192.168.0.234 is my network ip address.
Now, when someone else enters that ip in a browser they get the site i want them to get instead of the apache default site.
Thanks everyone for your advice!
type in the ip and port like so:
127.0.0.0:80/rails
this will only work if permissions are set to read/write.

Resources