I made an AWS EC2 Instance and get an Elastic IP.
The Elastic IP was used to set a Domain Name (Bought from GoDaddy) to the AWS EC2 Instance.
The EC2 Instance is running an Apache2 server.
According to the manual, I'm supposed to replace index.html in /var/www/html/ with the index.html of my own, which I did.
When I use the Elastic IP, the index.html page that I set is displayed.
However when I use the Domain Name, for some reason it gives me the default apache2 page, even though that file no longer exists since it was overwritten. I can access the index.html with DomainName.in/index.html.
Simply put :
- DomainName.in gives apache2 default index.html which shouldn't exist anymore
- DomainName.in/index.html gives the page that I want to show up
- ElasticIP and ElasticIP/index.html both give the page I want to show up
How can I make it so that just typing the Domain Name in the browser will take me to the index.html page that I want it to go to ?
You need to set DirectoryIndex in your virtualhost configuration which is located here: /etc/apache2/apache2.conf
If that is not where your config file is located, you can find it by running: /usr/sbin/apache2 -V | grep SERVER_CONFIG_FILE
<virtualhost *:80>
ServerName domain.com
ServerAlias www.domain.com
# Index file and Document Root (where the public files are located)
DirectoryIndex home.html index.html
DocumentRoot /var/www
</virtualhost>
Ok so it turns out everything is fine, but the changes take time to propagate through the DNS for some reason.
The changes register after about half an hour.
Related
I installed LAMP on a new EC2 server and via the public IP address I can see the default Ubuntu webpage as loaded by my new apache server.
My problems began when I created a new directory, simply called test, alongside the original html directory. In test, I created index.html with the content "Test page responding and loading ...".
So, I then copy /etc/apache2/sites-available/000-default.conf to test.conf and set DocumentRoot /var/www/test.
I enabled the virtualhost by sudo a2ensite test.conf and restarted the server with sudo service apache2 reload.
In my browser, when I visit the IP address I get the ubuntu page as loaded by apache. I then append /test to the end of the IP address and I get a Not found: The requested URL /test was not found on this server. error.
I disabled the 000-default.conf virtualhost, just out of curiosity, and restarted the server. My output from test/index.html loads in a browser using just the IP address - which I did not expect.
ServerAdmin webmaster#localhost
DocumentRoot /var/www/test
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
I'm trying to simply serve test/index.html when I visit .../test in my browser.
If you don't want Apache to select the default virtual host (the first one for a given host+port) you'll need to use ServerName or ServerAlias in your added virtual host to make sure it matches the hostname/address you're using in the browser.
apachectl -S will summarize your vhosts.
I used to access my website directly like so:
100.100.100.100/project1/public
I was also using an edit tool and accessing it like so:
100.100.100.100/tool
I added a subdomain (dev.domain.com) to my A records and updated my apache httpd.conf file like so:
NameVirtualHost *:80
<VirtualHost *:80>
ServerName www.dev.domain.com
ServerAlias dev.domain.com
ServerAdmin email#domail.com
DocumentRoot /var/www/html/project1/public
</VirtualHost>
and now I can access my website directly by typing my subdomain: - dev.domain.com.
But since I did that, I cannot access my edit tool the way I used too (100.100.100.100/tool) anymore. It looks like apache is trying to access my website (project1) when I type 100.100.100.100/tool
Is there a way to setup my subdomain so it only access my website located at /var/www/html/project1/public without affecting any other documents I have under /var/www/html/ ??? without affecting, e.g.:
/var/www/html/tool
/var/www/html/project2
/var/www/html/project3
I typed in the following command and got:
# apachectl -t -D DUMP_VHOSTS
httpd: Could not reliably determine the server's fully qualified domain name, using 100.100.100.100 for ServerName
VirtualHost configuration:
wildcard NameVirtualHosts and _default_ servers:
*:80 www.dev.domain.com (/etc/httpd/conf/httpd.conf:1021)
Syntax OK
Sorry for asking this question again. Even though this has been asked and discussed quite a bit I cannot seem to find the right solution for a local dev environment using VirtualHost. I am using XAMPP Portable for Windows for dev work but assume this is the same for any other local server with regards to the .htaccess file.
DocumentRoot of VirtualHost is D:\dev\www\ for example.
ServerName is devwork.webdev for example.
HOSTS entry is 127.0.0.1 devwork.webdev.
VirtualHost file does have a default DocumentRoot being DocumentRoot "D:/xampp/htdocs". It works just fine.
The projects are each in a folder under D:\dev\www\ for example D:\dev\www\project01\ or D:\dev\www\project02\ and so on and show nicely in the browser when going to devwork.webdev with Options Indexes FollowSymLinks enabled. Apache is not showing any error and the access log file is also OK, things are working.
Now in my HTML when I use Project 01 a click on the link does link me to D:\dev\www\ showing all the projects I have in that folder.
Instead I would like to be linked to the root of the project, being D:\dev\www\project01\ or rather http://devwork.webdev/project01/.
How can I get that to work?
I am looking for a solution to this so that I can do dev work locally and without changing the HTML later FTP the data to the live host's root and it will work.
I have read and tried the following:
http://coolestguidesontheplanet.com/redirecting-a-web-folder-directory-to-another-in-htaccess/
https://perishablepress.com/redirect-subdirectory-to-root-via-htaccess/ .htaccess How to redirect root URL to subdirectory files, rewrite to clean URL AND not affect subdomains?
http://alexcican.com/post/how-to-remove-php-html-htm-extensions-with-htaccess/
https://stackoverflow.com/a/990405/1010918
How to redirect /directory/index.html and /directory/index.php to /directory/
Redirecting /directory/index.html to /directory/
with
How to remove .html from URL
and
http://forums.modx.com/thread/77211/endless-friendly-url-redirect-from-subdomain-folder-location
being closest to what I think I need but I must be doing something wrong since I always arrive at the DocumentRoot instead of the folder where the project is kept under the DocumentRoot.
Thank you for any help.
This seems closest:
Add VirtualHost definition for each project you want to access. (I'm
not sure how to do it on XAMPP for Windows).
For example, project01.devwork.webdev...
Set DocumentRoot for this VirtualHost to D:\dev\www\project01...
Add the hostname to your /etc/hosts/ file.
Open http://project01.devwork.webdev/ in your browser.
You should see the application in D:\dev\www\project01, while all URLs
will be based on "/".
What happens in the background:
When you open the URL http://project01.devwork.webdev/ in your browser, it will (as usual) translate it to IP address, but along with the request, it will also send Host header with the entered hostname:
GET / HTTP/1.1
Host: project01.devwork.webdev
Based on the Host field, Apache will decide which VirtualHost it needs to "pretend" to be, and serve files from the respective direcory.
However, if you need to have index of the projects, you will have to create it manually with full URLs.
An alternative with the given logic would be to simply add a VirtualHost for each project in D:dev\www\projectname by giving it its own domain instead of a subdomain on the host.
There is little difference there now when already editing httpd-vhosts.conf (using XAMP this file is in InstallDir and then in apache\conf\extra )but ideally it makes copying the local HTML to the live server without changing the HTML possible.
So this is something devs doing local work should keep in mind. I certainly will!! Thank you for your help and information.
<VirtualHost *:80>
DocumentRoot "D:/dev/www/newprojectname"
ServerName newdomainname.webdev
ServerAlias www.newdomainname.webdev
ErrorLog "D:/dev/www/log/dev-apache.error.log"
CustomLog "D:/dev/www/log/dev-apache.access.log" common
<Directory "D:/dev/www/newprojectname">
AllowOverride All
Options Indexes FollowSymLinks
Require local
# more detailed local
# Require ip 192.168.188
# or the IP from your local network
</Directory>
</VirtualHost>
I am running Windows 7 with an XAMPP local server with an installation of WordPress. I know this one works correctly, I've used it many times. I have a MySQL database for it and it sits in htdocs/wordpress.
Now, I have a contract in which I'm working for someone on another WordPress theme and would like to have this as a separate database and install. So, I make another folder in htdocs, let's call it folder2. I then create another database in MySQL, import the db I was given, and create a user to match the wp-config.php file of this install. No problem, except that it points to "localhost/folder2" and I need it to point to "local.folder2.com" to match the contractor.
So I hunt around the web and stumble on VirtualHosts for XAMPP. I go to /System32/drivers/etc/hosts and add the domain.
127.0.0.1 localhost ## Already here for XAMPP purposes
127.0.0.1 local.folder2.com ## URL to point localhost/folder2 towards
I then go to /xampp/apache/conf/extra/httpd-vhosts.conf and add the necessary Virtual Host.
NameVirtualHost *:80
<VirtualHost *:80>
DirectoryRoot "C:/xampp/htdocs/folder2"
ServerName local.folder2.com
</VirtualHost>
I restart Apache and MySQL. Problem is, now local.folder2.com works, but "localhost/wordpress/" does not. Using that URL directs me to the theme and db of folder2, baffling me entirely. Any ideas? I realize I can just work on one and not the other, but if I ever have more than one client at a time, switching it all out isn't going to work.
In this case, localhost stopped working because when another vhost was declared, no longer did the inherent connection between http://localhost.com and the directory "/htdocs" work. The solution was to add a vhost for the original location and then add a second one for the new location. Simple as:
<VirtualHost *:80>
ServerName localhost
DocumentRoot "C:/xampp/htdocs/wordpress" # Where I had localhost pointing
</VirtualHost>
<VirtualHost *:80>
ServerName local.folder2.com
DocumentRoot "C:/xampp/htdocs/folder2"
<Directory "C:/xampp/htdocs/folder2">
Allow Override All
</Directory>
</VirtualHost>
Of course, you then must add them to your hosts file:
127.0.0.1 localhost
127.0.0.1 local.folder2.com
Restart Apache server, and you're good to go.
I'm running an apache server on an Amazon EC2 basic linux instance, and I'm trying to get it to just display a simple test html file that I created. The file is in /home/ec2-user/public_html (just for test purposes). I've changed the DocumentRoot and Directory to point to this directory, but the public dns address is still just showing the default Apache start page. What else do I need to do/change to get this to actually display online?
Edit: I've also uncommented the VirtualHost *:80 line, changed the DocumentRoot and ServerName within the VirtualHost tags.
It turns out I had forgotten to change some permissions on the test.html file itself and that was causing a holdup.
check running instance's security group HTTP rule. ADD rule if not added:
Select HTTP from the Type list, and leave the source as Anywhere (0.0.0.0/0).