Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

Apache2: Krijg DocumentRoot niet werken

Pagina: 1
Acties:

  • Jazzy
  • Registratie: Juni 2000
  • Nu online

Jazzy

Moderator SSC/PB

Moooooh!

Topicstarter
Ubuntu 12.04 LTS, Apache geïnstalleerd als onderdeel van het LAMP pakket:
sudo tasksel install lamp-server

Een directory voor de website aangemaakt:
sudo mkdir /data/html
sudo chmod 777 /data/html


Eerst een configfile voor de site aangemaakt:
sudo cp /etc/apache2/sites-available/default /etc/apache2/sites-available/MijnSite

Daarna deze file bewerkt, aanpassingen gedaan:
Toegevoegd: ServerName MijnSite.cloudapp.net
Aangepast: DocumentRoot /data/html
Aangepast: <Directory /data/html/>

Nu de site enabled met de a2ensite utility:
sudo a2ensite MijnSite

En Apache herstart:
sudo service apache2 restart

Maar als ik nu met de browser naar http://MijnSite.cloudapp.net ga dan werkt het niet, Apache werkt wel maar ik kan de bestanden die er staan niet aanroepen en krijg een 404.

Wat doe ik fout?

Exchange en Office 365 specialist. Mijn blog.


  • Hero of Time
  • Registratie: Oktober 2004
  • Laatst online: 14:15

Hero of Time

Moderator LNX

There is only one Legend

Post eerst maar eens je config, dan kunnen we verder kijken. En let ook op hooflettergevoelig, MijnSite.domein doet wat anders dan mijnsite.domein. Zet ook default site uit via a2dissite default. Overigens pak ik praktisch nooit de default config, er staat vaak veel meer in dan je nodig hebt. Begin daarom dus met basic voorbeelden.

Commandline FTW | Tweakt met mate


  • Jazzy
  • Registratie: Juni 2000
  • Nu online

Jazzy

Moderator SSC/PB

Moooooh!

Topicstarter
Goed punt.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
<VirtualHost *:80>
        ServerAdmin webmaster@localhost
        ServerName mijnsite.cloudapp.net

        DocumentRoot /data/html
        <Directory />
                Options FollowSymLinks
                AllowOverride None
        </Directory>
        <Directory /data/html/>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride None
                Order allow,deny
                allow from all
        </Directory>

        ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
        <Directory "/usr/lib/cgi-bin">
                AllowOverride None
                Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
                Order allow,deny
                Allow from all
        </Directory>

        ErrorLog ${APACHE_LOG_DIR}/error.log

        # Possible values include: debug, info, notice, warn, error, crit,
        # alert, emerg.
        LogLevel warn

        CustomLog ${APACHE_LOG_DIR}/access.log combined

    Alias /doc/ "/usr/share/doc/"
    <Directory "/usr/share/doc/">
        Options Indexes MultiViews FollowSymLinks
        AllowOverride None
        Order deny,allow
        Deny from all
        Allow from 127.0.0.0/255.0.0.0 ::1/128
    </Directory>

</VirtualHost>

Case sensitive is een goed punt, maar MijnSite was bedoeld als placeholder voor de echte naam. In mijn configs heb ik nergens hoofdletters gebruikt.

Waarom is het beter om de defaultsite uit te schakelen?

Exchange en Office 365 specialist. Mijn blog.


  • Juup
  • Registratie: Februari 2000
  • Niet online
Welke errors staan er in je /var/log/apache*/error* ?

Een wappie is iemand die gevallen is voor de (jarenlange) Russische desinformatiecampagnes.
Wantrouwen en confirmation bias doen de rest.


  • Hero of Time
  • Registratie: Oktober 2004
  • Laatst online: 14:15

Hero of Time

Moderator LNX

There is only one Legend

Zoals het nu in je config staat, heb je veel te veel er in staan dan je nodig hebt. zet dus enkel de config er in voor je site.

Default uitschakelen is beter om zo een catch-all te voorkomen en je site het niet doet.

Commandline FTW | Tweakt met mate


  • Jazzy
  • Registratie: Juni 2000
  • Nu online

Jazzy

Moderator SSC/PB

Moooooh!

Topicstarter
Hero of Time schreef op zaterdag 13 juli 2013 @ 13:30:
Zoals het nu in je config staat, heb je veel te veel er in staan dan je nodig hebt. zet dus enkel de config er in voor je site.
Ik kan niet overzien wat noodzakelijk is en wat niet, weet dus niet wat ik weg moet halen. :)
Default uitschakelen is beter om zo een catch-all te voorkomen en je site het niet doet.
Okay, genoteerd.

Op dit moment wil ik eerst een werkende omgeving dus zoveel mogelijk bij standaard blijven en alleen het noodzakelijke aanpassen. Daarna wil ik verder optimaliseren, bijvoorbeeld nog eens kijken welke gebruikers is moet aanmaken en dergelijke.

Maar even terug naar het issue, in error.log staat:
code:
1
2
3
[Sat Jul 13 09:20:01 2013] [notice] Apache/2.2.22 (Ubuntu) PHP/5.3.10-1ubuntu3.6 with Suhosin-Patch configured -- resuming normal operations
[Sat Jul 13 09:20:24 2013] [error] [client 83.161.147.xx] File does not exist: /var/www/test.html
[Sat Jul 13 09:20:27 2013] [error] [client 83.161.147.xx] File does not exist: /var/www/test.html

Dat bevestigt dus dat de documentroot niet is aangepast naar /data/html.

In error.log.in staat ook nog het volgende, dat zie ik ook als ik de server herstart:
code:
1
2
[Sun Jul 07 06:26:37 2013] [notice] Graceful restart requested, doing restart
apache2: Could not reliably determine the server's fully qualified domain name, using MijnSite.cloudapp.net for ServerName

Exchange en Office 365 specialist. Mijn blog.


  • Juup
  • Registratie: Februari 2000
  • Niet online
Hmm doe eens een
Bash:
1
ls -laF /etc/apache2/sites-enabled

Een wappie is iemand die gevallen is voor de (jarenlange) Russische desinformatiecampagnes.
Wantrouwen en confirmation bias doen de rest.


  • Jazzy
  • Registratie: Juni 2000
  • Nu online

Jazzy

Moderator SSC/PB

Moooooh!

Topicstarter
Daar staat keurig een symlink:
code:
1
2
3
4
5
total 8
drwxr-xr-x 2 root root 4096 Jul 13 09:18 ./
drwxr-xr-x 7 root root 4096 May  5 15:19 ../
lrwxrwxrwx 1 root root   26 May  5 14:55 000-default -> ../sites-available/default
lrwxrwxrwx 1 root root   39 Jul 13 09:18 MijnSite -> ../sites-available/MijnSite

Exchange en Office 365 specialist. Mijn blog.


  • Juup
  • Registratie: Februari 2000
  • Niet online
Staat je
code:
1
NameVirtualHost *:80
wel aan?
Hoe ziet je ports.conf er uit?
Wordt die ook geinclude?

Een wappie is iemand die gevallen is voor de (jarenlange) Russische desinformatiecampagnes.
Wantrouwen en confirmation bias doen de rest.


  • Jazzy
  • Registratie: Juni 2000
  • Nu online

Jazzy

Moderator SSC/PB

Moooooh!

Topicstarter
In welke configfile?

Exchange en Office 365 specialist. Mijn blog.


  • Hero of Time
  • Registratie: Oktober 2004
  • Laatst online: 14:15

Hero of Time

Moderator LNX

There is only one Legend

Een simpele vhost config zou als volgt eruit zien, en dit is echt bare bone simpel:
code:
1
2
3
4
<VirtualHost *:80>
    ServerName site.domein.ext
    DocumentRoot /var/www/sitenaam
</VirtualHost>


Vervolgens moet je wel je domeinnaam in je DNS bekend zijn. Als je site.domein.ext definieert, en je gaat naar het IP adres, dan is het vragen om niet te werken, je vhost luistert er niet op. Dan moet je een serveralias gebruiken voor eventuele extra domeinnamen waar 't op moet reageren.

Commandline FTW | Tweakt met mate


  • Oid
  • Registratie: November 2002
  • Niet online

Oid

Met chmod 777 zet je wel alles open voor de buiten wereld.

  • GuntherDW
  • Registratie: November 2004
  • Laatst online: 29-12-2022
Een symlink is niet hetzelfde als een "gewone" chmod 777 Oid. Daarmee zet je niet "alles open voor de buitenwereld."

  • Oid
  • Registratie: November 2002
  • Niet online

Oid

Uit de ts

Een directory voor de website aangemaakt:
sudo mkdir /data/html
sudo chmod 777 /data/html

ik zie hier geen symlink en probeer alleen maar duidelijk te maken dat het een gevaar kan vormen.

  • CAPSLOCK2000
  • Registratie: Februari 2003
  • Laatst online: 10:42

CAPSLOCK2000

zie teletekst pagina 888

Normaal gesproken in ports.conf dus :) Maar kijk ook even in sites-available/default
Oid schreef op zondag 14 juli 2013 @ 11:31:
sudo chmod 777 /data/html

ik zie hier geen symlink en probeer alleen maar duidelijk te maken dat het een gevaar kan vormen.
Eens, 777 is eigenlijk altijd een slecht idee. Ik snap dat je het probeert bij het testen, maar zet het weer uit na je test, vroeg of laat schiet je jezelf in de voet.

This post is warranted for the full amount you paid me for it.


  • Jazzy
  • Registratie: Juni 2000
  • Nu online

Jazzy

Moderator SSC/PB

Moooooh!

Topicstarter
Ah, het werkt nu ik default uitgeschakeld heb. Dat is interessant... Maar wel logisch inderdaad, als default het al doet dan komt hij nooit meer aan mijn sitedefinitie toe.

Bedankt voor de hulp!

Nog even een gerelateerde vraag. Hoe kan het nu dat http://MijnSite.cloudapp.net/phpmyadmin/ het nog wel doet? Die bestanden staan niet in de DocumentRoot van de enige In Apache gedefinieerde site namelijk.

[ Voor 130% gewijzigd door Jazzy op 14-07-2013 20:25 ]

Exchange en Office 365 specialist. Mijn blog.


  • Hero of Time
  • Registratie: Oktober 2004
  • Laatst online: 14:15

Hero of Time

Moderator LNX

There is only one Legend

Dat moet dan in conf.d staan met een server-wide alias. Of ook wel, /etc/phpmyadmin/apache.conf. Die zal via symlink in je /etc/apache ergens worden toegevoegd.

Commandline FTW | Tweakt met mate


  • Jazzy
  • Registratie: Juni 2000
  • Nu online

Jazzy

Moderator SSC/PB

Moooooh!

Topicstarter
Die symlink staat inderdaad in /etc/apache2/conf.d/. Wat is het weer lekker modulair allemaal. :)

Exchange en Office 365 specialist. Mijn blog.


  • Jazzy
  • Registratie: Juni 2000
  • Nu online

Jazzy

Moderator SSC/PB

Moooooh!

Topicstarter
CAPSLOCK2000 schreef op zondag 14 juli 2013 @ 13:05:
Eens, 777 is eigenlijk altijd een slecht idee. Ik snap dat je het probeert bij het testen, maar zet het weer uit na je test, vroeg of laat schiet je jezelf in de voet.
Nog even hierover... Heb dit wel eens eerder geprobeerd in te richten maar liep hopeloos vast, met name met CentOS en SELinux. Als niet-Linux man vind ik het erg lastig om dit goed in te regelen.

Wat ik dus wil is een gebruiker met zo min mogelijk rechten gebruiken voor FTP, dus alleen lees- en schrijfrechten op /data/html en alles wat daaronder ligt. Want nu doe ik dat nog met een root-user (user met su/sudo mogelijkheid) die ik eigenlijk alleen voor SSH wil gebruiken.

Verder heeft Apache ook rechten nodig tot die data en misschien PHP oid. ook nog wel, het gaat om een phpBB forum namelijk. Maak ik dan een extra gebruiker aan en laat ik Apache ook onder die gebruiker draaien? Of maak ik een groep aan waar de Apache-gebruiker en de FTP-gebruiker lid van zijn?

Exchange en Office 365 specialist. Mijn blog.


  • Hero of Time
  • Registratie: Oktober 2004
  • Laatst online: 14:15

Hero of Time

Moderator LNX

There is only one Legend

Gebruiker moet kunnen schrijven. Wil je dat je webserver (en daarbij dus ook php) moet kunnen schrijven naar diezelfde locatie? Als het alleen lezen is, dan rechten zetten op user voor lees/schrijf, groep is de webserver groep (www-data) en die leesrechten geven. Klaar. Je hoeft niets met lid maken van groep e.d.

Standaard rechten zijn overigens 755 voor mappen, 644 voor bestanden. Iets meer afgeschermd is 750 en 640, in geval de user moet kunnen wijzigen.

Commandline FTW | Tweakt met mate


  • Jazzy
  • Registratie: Juni 2000
  • Nu online

Jazzy

Moderator SSC/PB

Moooooh!

Topicstarter
Okay, bedankt. Nu wil ik hier geen dump-je-vragen-topic van maken maar heb er nog wel eentje. Op zich heb ik alles op de rit nu. In een bepaalde subdirectory heb ik een .htaccess opgenomen om directory listing te voorkomen en dat files rechtstreeeks benaderd worden:

<Files *>
Order Allow,Deny
Deny from All
</Files>

Dat werkt prima. Nu heb ik in de root de volgende .htaccess gezet om te voorkomen dat twee configfiles benaderd worden:

<Files "config.php">
Order Allow,Deny
Deny from All
</Files>

<Files "common.php">
Order Allow,Deny
Deny from All
</Files>

Maar als ik die er neerzet dan levert iedere file in de root een Forbidden op. Ik snap dat niet, de bedoeling van een .htaccess is toch dat hij wordt geinclude in de config? Daarover gesproken, dit is de mijne nu:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<VirtualHost *:80>
        ServerAdmin webmaster@localhost
        ServerName MijnSite.cloudapp.net
        ServerAlias www.MijnSite.com
        ServerAlias MijnSite.com

        DocumentRoot /data/html
        <Directory />
                Options FollowSymLinks
                AllowOverride All
        </Directory>
        <Directory /data/html/>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride All
                Order allow,deny
                allow from all
        </Directory>

        ErrorLog ${APACHE_LOG_DIR}/error.log

        # Possible values include: debug, info, notice, warn, error, crit,
        # alert, emerg.
        LogLevel warn

        CustomLog ${APACHE_LOG_DIR}/access.log combined

</VirtualHost>

Moet ik aan de .htaccess in de root ook nog dit toevoegen?

<Files *>
Order Allow,Deny
Allow from All
</Files>

Het lijkt me niet want op de huidige server waar dit draait werkt het wel gewoon met die .htaccess.

[ Voor 8% gewijzigd door Jazzy op 18-07-2013 15:43 ]

Exchange en Office 365 specialist. Mijn blog.


  • Oid
  • Registratie: November 2002
  • Niet online

Oid

waarschijnlijk als je allow from 127.0.0.1 neerzet werkt het wel.


<Files "config.php">
Order Allow,Deny
Deny from All
allow from 127.0.0.1
</Files>

<Files "common.php">
Order Allow,Deny
Deny from All
allow from 127.0.0.1
</Files>


wat zeggen je logs verder?

  • Jazzy
  • Registratie: Juni 2000
  • Nu online

Jazzy

Moderator SSC/PB

Moooooh!

Topicstarter
Stom, niet aan gedacht. Daar staat: /data/html/.htaccess pcfg_openfile: unable to check htaccess file, ensure it is readable

Permissies voor .htaccess op 644 gezet, nu kan Apache hem lezen en werkt het wel. Bedankt voor de pointer!

Exchange en Office 365 specialist. Mijn blog.

Pagina: 1