virtual hostname instead of i.p. address in mediawiki - apache2

I am trying to replace my i.p. address from my mediawiki with a virtual hostname. My system information are
O.S.: Opensuse 13.1
Mediawiki: 1.26.1
apache2 and mysql
I have edited the /etc/apache2/vhosts.d/mydomain.conf file like this
<VirtualHost 123.456.78.90>
ServerAdmin webmaster#localhost
ServerName www.mylabwiki.org
DocumentRoot /srv/www/htdocs/mylabwiki
ErrorLog /var/log/apache2/myabwiki-error_log
CustomLog /var/log/apache2/mylabwiki-access_log combined
HostnameLookups Off
UseCanonicalName Off
ServerSignature On
<Directory "/srv/www/htdocs/cgi-bin">
AllowOverride None
Options +ExecCGI -Includes
Require all granted
</Directory>
<Directory "/srv/www/htdocs/mylabwiki">
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
I have edited the /etc/apache2/listen.conf file like this
NameVirtualHost 123.456.78.90
Then I have executed
vi /etc/hosts
123.456.78.90 www.mylabwiki.org
Then I restarted the apache2
service apache2 restart
My problem is, it works only locally. If I use the browser from the host computer, the domain 'www.mylabwiki.org' works properly.But, if I type from a remote computer www.mylabwiki.org and try to connect, it says that the url doesn't exist. However, if I type http://123.456.78.90/ then works perfect from the remote computer. Can anyone tell me where did I miss something! I can feel that I am just one step away, but unable to figure it out.

Your issue is that www.mylabwiki.org is known only on your localhost, because you edited the /etc/hosts to have a local DNS resolution. Your remote computer do not get that information to know where to go.
There is 3 ways to solve the issue:
you edit the /etc/hosts on the remote computer as well, but that means it will work on your localhost and remote computer, but not on nay other. So a real solution.
you have a DNS local server, and you edit the server to resolve the name to the IP address. That will work for all computers on your network, not the outside world.
you record this information in a domain name provide like name.com (or any other), so anyone in the world would know how to resolve the domain to the IP address. For sure it means the IP/computer can be accessed from outside your network.

Related

What is the correct way to set up a virtual host running on Apache?

I configured apache on ubuntu 16.04 and I created a virtual host with these instructions:
<Directory /var/www/html/example.com/public_html>
Require all granted
</Directory>
<VirtualHost *:80>
ServerName example.com
ServerAlias www.example.com
ServerAdmin webmaster#localhost
DocumentRoot /var/www/html/example.com/public_html
ErrorLog /var/www/html/example.com/logs/error.log
CustomLog /var/www/html/example.com/logs/access.log combined
</VirtualHost>
when I try to open the page www.example.com on my browser I see this message:
This domain is established to be used for illustrative examples in documents. You may use this domain in examples without prior coordination or asking for permission.
Should I use another name instead of "example" to solve the problem?
Ok any name? For example "myname.com"
For clarity, I only need this for local tests
www.example.com is actual website that somebody else owns, has it registered in DNS and has some content on it. When you open the address in browser, your computer first asks DNS server (presumably one setup by your ISP). DNS then responds, that www.example.com is ran on 93.184.216.34 - which is probably not your machine. This is where the message is from.
Now, what is the meaning of ServerName and ServerAlias then? It is actualy a directive for your webserver, running on your machine, to know which packets are meant for given virtual host. It does not affect how your browser will transalate them.
For the sake of local testing (both server and browser are on same OS), all you need to do is to create virtualhost for a 'localhost'. This is a reserved address for the machine currently being used. Simply put:
ServerName localhost
ServerAlias localhost
into your virtualhost and you will be able to access the webserver by entering 'localhost' into your browser.
In case you would need more than one host locally, you can override the dns by editing the host file https://en.wikipedia.org/wiki/Hosts_(file) - for example, in windows by adding hosts records like:
127.0.0.1 app.local
127.0.0.1 db.local
and then creating two different virtual hosts, one with alias app.local, second with db.local. Then, the OS will then route requests from your browser correctly to your machine per hosts file. Your websever will then sort your request according to the header to proper virtualhost.
You might want to check out some general information on how dns and internet protocol works:
https://en.wikipedia.org/wiki/Internet_protocol_suite
https://en.wikipedia.org/wiki/Internet_Protocol
https://en.wikipedia.org/wiki/Domain_Name_System

403 Forbidden after changing DocumentRoot

So, I've tried running a domain, a sub domain and another domain on one machine. I've set up a conf file for every site:
<VirtualHost *:80>
ServerName websitea.com
ServerAlias www.websitea.com
DocumentRoot /var/www/html/weba
</VirtualHost>
<Directory /var/www/html/weba>
Order allow,deny
Allow from all
Require all granted
</Directory>
The same folder config can be found in apache2.conf as well (I tried experimenting with it) and it's the same config across all sites.
The issue is that after putting this DocumentRoot and disabling 000-default.conf I get 403 forbidden.
What I've tried doing so far:
Changing owner to www-data:www-data
Changing perms to 755/777
Putting the directory configurations in
apache2.conf or the website's conf putting all sites in 1 file
all kinds of directory settings (Options Indexes FollowSymLinks,
AllowOverride none/all, Require all granted, Allow from all, Order
Allow,Deny)
but none would work...
EDIT: I found out that the website goes to /www/var/html/ even though the domain is set to get to /www/var/html/weba, DocumentRoot pretty much does nothing in the configurations.
It seems you created a new virtual host configuration file on this path /etc/apache2/sites-available/
you need to enable the website virtual host conf file, for example, id website virtual host conf file name is 'websitea.conf'
then you need run below command
sudo a2ensite websitea.conf

Connect to multiple local sites on mobile

I have multiple local sites which I develop on my local machine.
I'd like to be able to access them on a mobile device while they are still local on my machine.
Using XAMPP these are example vhosts configs:
<VirtualHost *:8080>
DocumentRoot "C:/design and photos/agency1/website/public_html"
ServerName agency1dev.com
<Directory "C:/design and photos/agency1/website/public_html">
Options All
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
<VirtualHost *:8080>
DocumentRoot "C:/design and photos/captives/website/public_html"
ServerName capdev.com
<Directory "C:/design and photos/captives/website/public_html">
Options All
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
Windows hosts file
127.0.0.1 agency1dev.com
127.0.0.1 capdev.com
I understand I can use my machines IP address to reach e.g.:
http://196.168.2.3:8080
But this goes to the XAMPP dir, so, how do I access e.g. agency1dev.com?
Is this possible?
You can try using Finch, https://meetfinch.com
It's very easy to use (recently released a GUI for it) and just 'works' without having to do anything.
Full disclosure: I'm involved in the project.
The solution I found was using NGROK
Very easy to implement:
In cmd or some shell
Go to: C:\path\to\ngrok
Type:
ngrok http -host-header=myapp.dev 8080
Change myapp.dev to suit what you want to look at - and change port (8080) accordingly
Then look at output and it will give you a http and https url to navigate to on your device
Simple!

How to access Apache VirtualHost via both Name & IP

I am using Apache VirtualHosts with 2 local domains on my home computer for development & testing.
• d4damage.local (personal websites)
• company.local (work stuff on external drive)
It's working perfectly on my network. However, I also need to optionally access d4damage.local via IP 192.168.1.60 (my computer is fixed to this IP)
The reason is my PS3 cannot resolve d4damage.local, but it can via IP. (all my other wi-fi devices are fine using d4damage.local)
It seems I can set d4damage.local to work on IP or name, but not both. (403 forbidden) the commented lines show the alternatives.
httpd-vhosts.conf
#NameVirtualHost 192.168.1.60:80
#<VirtualHost 192.168.1.60:80>
<VirtualHost *:80>
ServerAdmin admin#d4damage.local
DocumentRoot "/Users/paul/Sites"
ServerName d4damage.local
ErrorLog "/private/var/log/apache2/d4damage.local-error_log"
CustomLog "/private/var/log/apache2/d4damage.local-access_log" common
</VirtualHost>
httpd.conf
ServerName d4damage.local
...
DocumentRoot "/Users/paul/Sites"
<Directory "/Users/paul/Sites">
hosts
127.0.0.1 localhost
192.168.1.60 company.local d4damage.local
255.255.255.255 broadcasthost
::1 localhost
fe80::1%lo0 localhost
The above files concern the main domain i wish to use on my computer, the company.local one is additional & i don't need to access that via IP.
Hope you can help! Thanks.
you will want to edit your hosts file, commonly found ´/etc/hosts´.
sudo nano /etc/hosts
and new line like this:
192.168.1.60 d4damage.local
Save the file and reboot.
ah ha! I have found the issue.
I had (carelessly) left the example vhosts dummy-host.example.com in the vhosts file & simply commenting that block out has fixed the problem. I assume that because the dummy name/directory is not defined in httpd.conf & therefore causes a misconfiguration.
So the answer is to make sure you remove or comment-out the dummy examples in httpd-vhosts.conf

Configuring virtual hosts on apache2

I'm switching from Dreamhost to Rackspace Cloud hosting, since the formers ability to handle a rails app left something to be desired. I've got a CentOS server all set up and I've got my rails app deployed and the domains resolve and everything is great. Now I want to set it up so if I go directly to the IP address I'll get the the normal apache directory instead of the rails app. I thought the virtual host could manage this, but now both of them go to rails page or the apache page, as the case may be
<VirtualHost *:80>
ServerName 123.456.789.101
DocumentRoot /var/www/html
</VirtualHost>
<VirtualHost *:80>
ServerName mywebsite.com
ServerAlias www.mywebsite.com
DocumentRoot /rails/myapp/current/public
<Directory /rails/myapp/current/public>
AllowOverride all
Options -MultiViews
</Directory>
</VirtualHost>
I'm not quite sure how to proceed, or if this is just impossible to begin with. Thoughts?
Apache takes the very first virtualhost to be it's primary host for the provided IP, (or all IP's in the case of *). Therefore you should be able to just setup your main virtual host record, make sure its the first vhost record that get's loaded and it will load that virtualhost whenever an unbound IP or unbound address is encountered. Then specify a second virtual host with the specific domains/subdomains you want to point to your rails app.
Please note that if you split your virtual host records across multiple files (i.e. sites-available/sites-enabled folders). Apache loads them in alphabetical order, often on debian based systems you will see the 000-default or similer file. This one uses numbers at the start to ensure its always the first one loaded and takes on the role of primary vhost

Resources