Gru 11

Instalacja i konfiguracja Apache, PHP5, Ruby, Python, CGI, WebDAV Ubuntu/Debian

Instalacja i konfiguracja Apache, PHP5, Ruby, Python, CGI, WebDAV Ubuntu/Debian

1. Instalacja Apache.



sudo aptitude install apache2 apache2-doc apache2-mpm-prefork apache2-utils apache2-suexec libexpat1 ssl-cert

 

2. Instalacja PHP5, Ruby i Python (jako moduły do Apache).

sudo aptitude install libapache2-mod-php5 libapache2-mod-perl2 libapache2-mod-ruby libapache2-mod-python php5 php5-common php5-curl php5-dev php5-gd php5-idn php-pear php5-imagick php5-imap php5-mcrypt php5-memcache php5-mhash php5-ming php5-mysql php5-pspell php5-recode php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xsl  php5-cli php5-odbc

 

3. Edycja /etc/apache2/mods-available/dir.conf i zmiana DirectoryIndex.

sudo nano /etc/apache2/mods-available/dir.conf

 

<IfModule mod_dir.c>

          #DirectoryIndex index.html index.cgi index.pl index.php index.xhtml index.htm
          DirectoryIndex index.html index.htm index.shtml index.cgi index.php index.php3 index.pl index.xhtml

</IfModule>

 

4. Włączanie modułów w Apache takich jak: SSL, rewrite, suexec, include i WebDAV.

sudo a2enmod ssl
sudo a2enmod rewrite
sudo a2enmod suexec
sudo a2enmod include
sudo a2enmod dav_fs
sudo a2enmod dav

 

5. Restart Apache:

sudo /etc/init.d/apache2 restart

 

Testujemy serwer

http://127.0.0.1/

 

6. Test PHP.

Tworzymy plik index.php aby przetestować działanie serwera i zapisujemy go w /var/www/.

sudo nano /var/www/index.php

 

<?php phpinfo(); ?>

 

Zmieniamy uprawnienia do pliku index.php

sudo chmod 755 /var/www/index.php

 

Restart Apache2.

sudo /etc/init.d/apache2 restart

 

i testujemy w przeglądarce:

http://127.0.0.1/index.php

index-php

7. Włączanie skryptów CGI

Edytujemy plik /etc/apache2/mods-enabled/mime.conf ,usuwamy hash i dodajemy rozszerzenie .pl jeżeli brakuje:



sudo nano /etc/apache2/mods-enabled/mime.conf
[...]
#AddHandler cgi-script .cgi .pl
[...]

 

Tworzymy plik index.cgi aby przetestować działanie serwera i zapisujemy go w /var/www/.

sudo nano /usr/lib/cgi-bin/index.cgi

 

#!/usr/bin/perl
# test.cgi by Bill Weinman [http://bw.org/]
# Copyright 1995-2008 The BearHeart Group, LLC
# Free Software: Use and distribution under the same terms as perl.

use strict;
use warnings;
use CGI;

print foreach (
    "Content-Type: text/plain\n\n",
    "BW Test version 5.0\n",
    "Copyright 1995-2008 The BearHeart Group, LLC\n\n",
    "Versions:\n=================\n",
    "perl: $]\n",
    "CGI: $CGI::VERSION\n"
);

my $q = CGI::Vars();
print "\nCGI Values:\n=================\n";
foreach my $k ( sort keys %$q ) {
    print "$k [$q->{$k}]\n";
}

print "\nEnvironment Variables:\n=================\n";
foreach my $k ( sort keys %ENV ) {
    print "$k [$ENV{$k}]\n";
}

 

Zmieniamy uprawnienia do pliku index.cgi

sudo chmod 755 /usr/lib/cgi-bin/index.cgi

 

Restart Apache

sudo /etc/init.d/apache2 restart

 

i testujemy w przeglądarce

http://127.0.0.1/cgi-bin/index.cgi

index-cgi

8. Jeśli masz zamiar zarządzać serwerem za pomocą ISPConfig wykonaj następujące czynności

Aby wszyskie pliki Ruby były wykonywane i wyświetlane poprawnie (.rbx i .rb) w pliku konfiguracyjnym /etc/mime.types musimy odblokować linię usuwając hash.

sudo nano /etc/mime.types

 

[...]
#application/x-ruby                             rb
[...]

 

9. Wyłączanie globalnych ustawień PHP

Zarządzając serwerem z panela kontrolnego ISPConfig przy wyłączonych globalnych ustawieniach PHP, możesz zdecydować które strony mogą wykonywać skrypty PHP a które nie.
W przeciwnym wypadku wszystkie strony będą mogły uruchomić skrypty ignorując ustawienia w panelu kontrolnym.

Aby wyłączyć te ustawienia edytujemy plik /etc/mime.types i usuwamy hashe:

sudo nano /etc/mime.types

 

[...]
#application/x-httpd-php                        phtml pht php
#application/x-httpd-php-source                 phps
#application/x-httpd-php3                       php3
#application/x-httpd-php3-preprocessed          php3p
#application/x-httpd-php4                       php4
#application/x-httpd-php5                       php5
[...]

 

Następnie edytujemy plik /etc/apache2/mods-enabled/php5.conf i usuwamy hash w linii SetHandler:

sudo nano /etc/apache2/mods-enabled/php5.conf

 

<IfModule mod_php5.c>
    <FilesMatch "\.ph(p3?|tml)$">
        #SetHandler application/x-httpd-php
    </FilesMatch>
    <FilesMatch "\.phps$">
        #SetHandler application/x-httpd-php-source
    </FilesMatch>
    # To re-enable php in user directories comment the following lines
    # (from <IfModule ...> to </IfModule>.) Do NOT set it to On as it
    # prevents .htaccess files from disabling it.
    <IfModule mod_userdir.c>
        <Directory /home/*/public_html>
            php_admin_value engine Off
        </Directory>
    </IfModule>
</IfModule>

 

10. Tworzenie prywatnych certyfikatów.

10.1. Generowanie certyfikatu.

Generowanie prywatnego certyfikatu dla domeny: domena.pl.

sudo mkdir /etc/apache2/ssl
cd /etc/apache2/ssl
sudo openssl genrsa -des3 -out domena.pl.key 1024

 

Generating RSA private key, 1024 bit long modulus
 .......................++++++
 .......++++++
 e is 65537 (0x10001)
 Enter pass phrase for domena.pl.key:     wpisujemy hasło
 Verifying - Enter pass phrase for domena.pl.key:      ponownie wpisujemy hasło

 

10.2. Generowanie certyfikatu (Certificate Signing Request).



sudo openssl req -new -key domena.pl.key -out domena.pl.csr

 

Enter pass phrase for domena.pl.key:      wpisujemy hasło
 ...
 ...
 Country Name (2 letter code) [GB]:    wpisujemy np:  PL
 State or Province Name (full name) [Some-State]:    wpisujemy np:  Dolny_Slask
 Locality Name (eg, city) []:    wpisujemy np:  Wroclaw
 Organization Name (eg, company) []:    wpisujemy np: inet
 Organizational Unit Name (eg, section) []:  wpisujemy np: IT
 Common Name (eg, your name or your server's hostname) []: wpisujemy np: domena.pl
 Email Address []:    wpisujemy np: user dot surname at domena dot  pl
 Please enter the following 'extra' attributes
 to be sent with your certificate request
 A challenge password []:   zostawiamy puste
 An optional company name []:    zostawiamy puste

 

10.3 Usuwanie hasła z domena.pl.key.
sudo cp domena.pl.key domena.pl.key.org
sudo openssl rsa -in domena.pl.key.org -out domena.pl.key

 

Enter pass phrase for domena.pl.key.org:    wpisujemy hasło
writing RSA key

 

10.4. Generowanie Self-Signed Certificate.
sudo openssl x509 -req -days 365 -in domena.pl.csr -signkey domena.pl.key -out domena.pl.crt

 

Signature ok
subject=/C=PL/ST=Dolny_Slask/L=Wroclaw/O=inet/OU=IT/CN=domena.pl
Getting Private key

 

10.5. Instalacja klucza prywatnego i certyfikatu.

Tworzymy host nasłuchujacy na porcie 80 i 443.
Dodajemy wpis do pliku konfiguracyjnego np /etc/apache2/httpd.conf:

sudo nano /etc/apache2/httpd.conf

 

# HOST NA PORCIE 80
#=================================================================================
<VirtualHost *:80>
ServerName domena.pl
ServerAdmin webmaster@domena.pl

DocumentRoot /var/www

ErrorLog /var/log/apache2/error.log
CustomLog /var/log/apache2/access.log combined
<Directory /var/www>
  Order deny,allow
  Allow from all
</Directory>
</VirtualHost>
# Alternatywnie - stałe przekierowanie na port 443.
Redirect permanent / https://domena.pl/
# HOST NA PORCIE 443
#=================================================================================

<VirtualHost *:443>
Servername domena.pl
ServerAdmin webmaster@domena.pl
DocumentRoot /var/www

ErrorLog /var/log/apache2/error-ssl.log
CustomLog /var/log/apache2/access-ssl.log combined

SSLEngine on
SSLCertificateFile /etc/apache2/ssl/domena.pl.crt
SSLCertificateKeyFile /etc/apache2/ssl/domena.pl.key
SetEnvIf User-Agent ".*MSIE.*" nokeepalive ssl-unclean-shutdown
CustomLog ssl_request_log \
    "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"

<Directory /var/www>
  Order deny,allow
  Allow from all
</Directory>
</VirtualHost>

 

10.6. Edycja pliku konfiguracyjny /etc/apache2/ports.conf.

Dodajmeny wpis o nasłuchiwaniu wirtualnych hostów na porcie 443 oraz wpis o nasłuchiwaniu apache2 na porcie 443.

sudo nano /etc/apache2/ports.conf

 

NameVirtualHost *:443
Listen 443

 

11. Restart Apache:

sudo /etc/init.d/apache2 restart

 

15 Komentarzy

11 pings

Skip to comment form

    • Tomasz on 15 lipca, 2013 at 16:07
    • Odpowiedz

    Zmieniamy uprawnienia do pliku index.cgi
    sudo chmod 705 /var/www/index.cgi

    Restart Apache
    sudo /etc/init.d/apache2 restart

    i testujemy w przeglądarce

    http://127.0.0.1/index.cgi

    i pojawia się błąd 403 wie ktoś dlaczego ???

    1. Spróbuj:
      sudo chmod 750 /var/www/index.cgi
      jeśli nie zadziała to zmień własciciela do pliku:
      sudo chown www-data:www-data /var/www/index.cgi
      lub zmień własciciela: cały katalog wraz z podkatalogami i plikami:
      sudo chown www-data:www-data /var/www/ -R

    • Tomasz on 16 lipca, 2013 at 13:46
    • Odpowiedz

    Nic z tego, Nadal ten sam błąd 🙁

    […]
    #AddHandler cgi-script .cgi .pl
    […]

    A bo bym zapomniał zamiast tego miałem w tym pliku.

    #AddHandler cgi-script .cgi

    Ale to chyba nie robi różnicy ??

    1. zmień jeszcze raz uprawnienia do pliku w ten sposób:

      chmod a+x /var/www/index.cgi

      … usuń hash przy: #AddHandler cgi-script .cgi

      i upewnij się że konfiguracja w pliku /etc/apache2/sites-available/default wygląda tak:


      ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/

      AllowOverride None
      Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
      Order allow,deny
      Allow from all

    • Tomasz on 16 lipca, 2013 at 16:03
    • Odpowiedz

    Nic to nie dało dalej Błąd 403 Forbidden ręce mi opadają powaga :/ już 16 raz instalowałem ubuntu by sobie zrobić serwer do testowania stron a czasami udostępnienia i pokazania prac. Ale dzięki za próbę pomocy 😉

    1. Może coś przeoczyłeś przy konfiguracji?
      dla upewnienia się.. zrobiłes restart serwera? czasami pomaga..

      jesli masz virtualhost to zrób tak:


      DocumentRoot /var/www/
      AllowOverride None
      Options +ExecCGI +Indexes

      Musi działać!!

    • Tomasz on 16 lipca, 2013 at 20:11
    • Odpowiedz

    Dalej nic z tego tak wygląda mój default z tą zmianą chmody poprzestawiałem jak pisałeś usunąłem hash. Jeszcze jakieś pomysły ??? Od razu mówię to jest ubuntu 12.04 świeżo wgrany tyle że zaktualizowałem wszystko co było możliwe.


    ServerAdmin webmaster@localhost

    DocumentRoot /var/www

    Options +ExecCGI +Indexes
    AllowOverride None

    Options Indexes FollowSymLinks MultiViews
    AllowOverride None
    Order allow,deny
    allow from all

    ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/

    AllowOverride None
    Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
    Order allow,deny
    Allow from all

    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/"

    Options Indexes MultiViews FollowSymLinks
    AllowOverride None
    Order deny,allow
    Deny from all
    Allow from 127.0.0.0/255.0.0.0 ::1/128

    1. czasami nie musiscie dac na AllowOverride ALL ?

      1. Jeżeli działa z AllowOverride ALL to tak zostaw..

  1. Fajny poradnik. Udało mi się wszystko. A jest mozliwość pokazania jakieś innej ikonki lub takiego kolorowego (zielonego) paska w pasku adresu czy do tego musi być już wykupiony certyfikat?

    1. Przeglądarki decydują co wyświetlić..czyli jeśli „stopień bezpieczeństwa” jest wyższy, tym więcej zielonego lub inna ikonka no i certyfikaty muszą być niestety wykupione…

  2. ok. dzięki. jeszcze jedno pytanie. co zrobić jak mam subdomeny porobione? dla każdej generować taki certyfikat czy może stworzyć tzw „urząd certyfikacji” dla serwera?

    1. Możesz stworzyć jeden certyfikat typu wild card pod jedną domenę.. ten certyfikat będzie obsługiwał wszystkie subdomeny danej domeny np: zamiast sklep.domena.pl – *.domena.pl.

  3. Ok. Jeden certyfikat ale virtualki na porcie 443 dodać dla każdej subdomeny ?

    1. tak

  1. […] Serwer WWW – Apache 2. […]

  2. […] Apache2: Instalacja i konfiguracja Apache, PHP5, Ruby, Python, CGI, WebDAV Ubuntu/Debian. […]

  3. […] 7.6.x, (64bit). Debian 7.8.x, (64bit). Debian 8.x.x, (64bit). Apache 2.4.10 Apache 2 (2.2.1x) – tutorial, Serwer MySQL (5.1.6x) – tutorial, Serwer DNS -Bind 9 (9.7.x) – tutorial, Serwer poczty […]

  4. […] 6.0.x, (64bit). Debian 7.x.x, (64bit). Serwer WWW – Apache 2 (2.2.1x) – tutorial,Serwer MySQL (5.1.6x) – tutorial,Serwer DNS -Bind 9 (9.7.x) – tutorial, Serwer poczty […]

  5. […] Serwer WWW – Apache 2. […]

  6. […] Serwer WWW (Apache2/Linux lub IIS/Windows) – ustawienia domyślne, […]

  7. […] Apache2 ver. 2.4.X – wymagane, […]

Dodaj komentarz

Twój adres email nie będzie publikowany.