Tein mahdollisimman yksinkertaisen web-palvelimen josta on graafinen liittymä jätetty käynnistymättä. Sen voi käynnistää halutessaan. Etsin pitkään ohjetta joka sisältäisi kaikki yhdessä mutta en löytänyt. Niinpä kalusin lukemattomia sivuja läpi ja sain tehtyä systeemin johon voi luoda Apache:en useita sivuja, käyttäjätunnuksella ja salasanalla suojatun sivuston ja https-yhteydellä salatun sivuston.
Palvelimen osoite on 192.168.1.100
Palomuurista on estetty kaikki muu liikenne ulkoa sisäänpäin paitsi portit 80 ja 443 ja ohjattu osoitteeseen 192.168.1.100. Ei siis koko sisäverkkoon.
Se tapahtui seuraavasti:
Asennetaan Ubuntu 10.04 server.
Jätä kaikki palvelut pois.
Asennetaan gui
sudo aptitude updatesudo aptitude install gnome-core xinitBootataan kone ja kirjaudutaan sisään. Käynnistetään graaffinen liittymä komennolla
startxLaitetaan verkko kuntoon
sudo gedit/etc/network/interfaces auto eth0
iface eth0 inet static
address 192.168.1.100
netmask 255.255.255.0
network 192.168.1.0
broadcast 192.168.1.255
gateway 192.168.1.1
Laitetaan DNS kuntoon (omat dns-palvelimet, palomuurin osoite tai julkiset dns-palvelimet)
sudo gedit /etc/resolv.conf 192.168.1.2
192.168.1.3
Voit poistaa DHCP-määrityksen
sudo apt-get remove dhcp-clientKäynnistetään verkko uusiksi
sudo /etc/init.d/networking restartAsennetaan synaptic
sudo apt-get install synapticAsennetaan vielä päivitykset ja puuttuva suomen kielen paketti synaptic:lla
update-manager
language-pack-gnome-fiKännistetään kone uusiksi.
Muista ajaa päivitykset.
Asennetaan Apachesudo aptitude install apache2 php5 apache2.2-common libapache2-mod-auth-mysql php5-mysql mysql-serverAsennetaan GD-tuki
sudo aptitude install php5-gdApache:n ja MySQL:n uudelleenkäynnistys
sudo /etc/init.d/apache2 restart
sudo /etc/init.d/mysql restartMonta sivustoaLuodaan sivut
http://www.ekasivu.fi ja
http://www.tokasivu.fi. Virtuaalipalvelimen saat käyttöösi luomalla asetustiedoston, jossa määrittelet virtuaalipalvelimen nimen sekä juurihakemiston. Asetustiedosto luodaan hakemistoon:
/etc/apache2/sites-available/. Juurihakemistot ovat
/var/www/ekasivu ja
/var/www/tokasivuLuodaan hakemistot ekasivu ja tokasivu
sudo mkdir /var/www/ekasivu
sudo mkdir /var/www/tokasivuMuista asentaa joku php- tai html-sivu myös yllä oleviin hakemistoihin jotta saat testattua.
Siirry oikeaan hakemistoon komennolla
cd /etc/apache2/sites-availableLuo asetustiedosto komennolla:
sudo gedit ekasivuKirjoita seuraava:
<VirtualHost *:80>
ServerAdmin webmaster@localhost
ServerName www.ekasivu.fi
ServerAlias ekasivu.fi
DocumentRoot /var/www/ekasivu
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/ekasivu/>
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 /var/log/apache2/ekasivu_error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog /var/log/apache2/ekasivu_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>
Tehdään toinen sivu
sudo gedit tokasivu<VirtualHost *:80>
ServerAdmin webmaster@localhost
ServerName www.tokasivu.fi
ServerAlias tokasivu.fi
DocumentRoot /var/www/tokasivu
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/tokasivu/>
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 /var/log/apache2/tokasivu_error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog /var/log/apache2/tokasivu_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>
Ota virtuaalipalvelin käyttöösi komennolla:
sudo a2ensite ekasivu
sudo a2ensite tokasivuKäynnistä palvelin uudelleen komennolla:
sudo /etc/init.d/apache2 restartYksittäisen virtuaalipalvelimen saat sammutettua komennolla:
sudo a2dissite ekasivuJotta sivu näkyy paikallisesti täytyy asentaa Firefox ja muokata hosts-tiedostoa.
Asenna firefox synaptic:sta
Muokkaa hosts
sudo gedit /etc/hostsLisää rivit:
192.168.1.100 http://www.ekasivu.fi
192.168.1.100 http://www.tokasivu.fi
Nyt kun kirjoitat
www.ekasivu.fi aukeaa ekasivu ja tokasivu kun kirjoitat
www.tokasivu.fiSalasanasuojausVoit suojata sivusi salasanasuojauksella. Salasanasuojatulle sivulle pyrkiminen avaa ruudulle nimi-salasana-ikkunan, josta eteenpäin pääsee vain oikeilla tunnuksilla.
Salasanasuojauksen saat käyttöösi luomalla .htaccess-tiedoston salattavaan hakemistoon. Lisäksi on luotava salasanatiedosto, jossa määritellään käyttäjätunnus sekä salasana, jolla sivuille pääsy sallitaan.
Salasanatiedosto luodaan htpasswd-komennolla ja se tallennetaan johonkin muuhun hakemistoon kuin www-palvelimen juurihakemistoon. Salasanasuojaus vaatii myös Apachen asetuksien muokkaamista.
Luodaan salasanasuojaus sivustolle ekasivu
Avaa Apachen asetukset komennolla:
sudo gedit /etc/apache2/sites-available/ekasivuVaihda
AllowOverride-rivillä None-merkinnän tilalle
AuthConfig<Directory /var/www/ekasivu>
Options Indexes Includes FollowSymLinks MultiViews
AllowOverride AuthConfig
Order allow,deny
Allow from all
</Directory>
Käynnistä apache uudelleen komennolla:
sudo /etc/init.d/apache2 restartLuo /var-hakemistoon htpasswd-tiedosto, jossa määritellään käyttäjätunnus ja salasana.
siirrytään hakemistoon /var
cd ..
cd /varSeuraava komento luo salasanatiedoston /var-hakemistoon käyttäjätunnukselle
testi ja pyytää antamaan käyttäjälle salasanan:
sudo htpasswd -c salasana testi (
salasana on tiedoston nimi jossa salasanat ovat)
Tee .htaccess-tiedosto salattavaan hakemistoon eli tässä tapauksessa /var/www/ekasivu komennolla:
Siirrytään hakemistoon ekasivu
cd www/ekasivu (huomaa että olet var-hakemistossa)
Luodaan .htaccess-tiedosto
sudo gedit .htaccessKirjoita tiedostoon seuraavat rivit:
AuthType Basic
AuthName "Salattu sivu"
AuthUserFile /var/salasana
Require user testi
AuthType Basic kertoo, että käytetään normaalia autentikointityyppiä. AuthName kertoo, mitä lukee salasanan kyselyikkunassa. Tämän tekstin tulee olla lainausmerkeissä. AuthUserFile kertoo .htpasswd-tiedoston sijainnin. Require user määrittelee käyttäjätunnuksen.
Kun tiedosto on tallennettu salattavaan hakemistoon, hakemisto ja kaikki sen alihakemistot on suojattu salasanalla. Huomaa, että .htaccess on piilotiedosto, joten nähdäksesi sen sinun on muutettava hakemiston näkymää valitsemalla Näytä | Näytä piilotiedostot.
Käynnistä apache uudelleen komennolla:
sudo /etc/init.d/apache2 restartSSL-salausTehdään ekasivu:sta salattu sivu. Sertifikaatti sijaitsee /etc/apache2/ssl-hakemistossa. Itse tiedosto hakemistossa /etc/apache2/sites-available/
Luo kansio /etc/apache2/ssl komennolla
sudo mkdir /etc/apache2/sslAseta omistajaksi root komennolla
sudo chown root:root /etc/apache2/sslSERTIFIKAATTIAloitetaan luomalla sertifikaatti joka on voimassa halutun ajan.
Luo
kotihakemistoon scripti
ssl.sh ja kopioi koodi:
(muokkaa pem-tiedosto haluamaksesi. sertifikaatti voimassa 3650 päivää eli n. 10 vuotta)
#!/bin/sh -e
if [ "$1" != "--force" -a -f /etc/apache2/ssl/ekasivu.pem ]; then
echo "/etc/apache2/ssl/ekasivu.pem exists! Use \"$0 --force.\""
exit 0
fi
if [ "$1" = "--force" ]; then
shift
fi
echo
echo creating selfsigned certificate
echo "replace it with one signed by a certification authority (CA)"
echo
echo enter your ServerName at the Common Name prompt
echo
echo If you want your certificate to expire after x days call this programm
echo with "-days x"
# use special .cnf, because with normal one no valid selfsigned
# certificate is created
export RANDFILE=/dev/random
openssl req $@ -config ssleay.cnf \
-new -x509 -nodes -out /etc/apache2/ssl/ekasivu.pem \
-keyout /etc/apache2/ssl/ekasivu.pem -days 3650
chmod 600 /etc/apache2/ssl/ekasivu.pem
ln -sf /etc/apache2/ssl/ekasivu.pem \
/etc/apache2/ssl/`/usr/bin/openssl \
x509 -noout -hash < /etc/apache2/ssl/ekasivu.pem`.0
Anna tiedostolle suoritusoikeudet klikkaamalla hiiren oikealla, valitsemalla Ominaisuudet, valitsemalla Oikeudet ja laittamalla täppi kohtaan Salli tiedoston suoritus ohjelmana
Luo samaan hakemistoon tiedosto ssleay.cnf ja kopioi koodi:
#
# SSLeay example configuration file.
#
RANDFILE = $ENV::HOME/.rnd
[ req ]
default_bits = 1024
default_keyfile = privkey.pem
distinguished_name = req_distinguished_name
[ req_distinguished_name ]
countryName = Maan nimi
countryName_default = FI
countryName_min = 2
countryName_max = 2
stateOrProvinceName = Lääni
stateOrProvinceName_default = Varsinais-Suomi
localityName = Kaupunki
organizationName = Organisaatio
organizationName_max = 64
organizationalUnitName = Yksikkö
organizationalUnitName_max = 64
commonName = Sivuston nimi (Sama kuin osoite. Esim. www.ekasivu.fi)
commonName_max = 64
emailAddress = Sähköpostiosoite
emailAddress_max = 40
Aja koodi komennolla sudo
./ssl.shVastaile tuleviin kysymyksiin.
Aktivoidaan SSL-moduuli
sudo a2enmod sslLisätään ekasivulle portti 443
sudo gedit /etc/apache2/sites-available/ekasivuLisätään koodi (älä poista mitään):
NameVirtualHost *:443
<virtualhost *:443>
SSLEngine On
SSLCertificateFile /etc/apache2/ssl/ekasivu.pem
ServerAdmin webmaster@localhost
ServerName www.ekasivu.fi
ServerAlias ekasivu.fi
DocumentRoot /var/www/ekasivu
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/ekasivu/>
Options Indexes FollowSymLinks MultiViews
AllowOverride AuthConfig
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 /var/log/apache2/ekasivu_error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog /var/log/apache2/ekasivu_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>
Aktivoidaan asetukset.
sudo a2ensite ekasivuLopuksi käynnistetään Apache uusiksi, jotta kaikki muutokset tulevat voimaan.
sudo /etc/init.d/apache2 restartNyt salaus pitäisi tulla käyttöön, kun sivuille mennään https-alkuisella osoitteella http:n sijaan.
Nyt käyttäjä pystyy valitsemaan käyttääkö hän salausta vai ei. Usein halutaan pakottaa käyttäjä käyttämään salattua yhteyttä. Se onnistuu Mod rewritella.
Aktoivoidaan moduuli.
sudo a2enmod rewriteMuokataan tiedostoa /etc/apache2/sites-available/ekasivu
lisäämällä <VirtualHost *>-tagin sisään:
sudo gedit /etc/apache2/sites-available/ekasivuRewriteEngine on
RewriteCond %{SERVER_PORT} ^80$
RewriteRule ^/salainen(.*)$ https://%{SERVER_NAME}/salainen$1 [L,R]
RewriteLog "/var/log/apache2/rewrite.log"
RewriteLogLevel 2
Nyt
http://www.ekasivu.fi/salainen/ ohjautuu automaattisesti SSL-salattuun yhteyteen
https://www.ekasivu.fi/salainen/. Jos haluat kaikki sivut SSL-salauksen alle voit jättää edelliseen hakemiston kohdalle pelkästään /:n. Eli jätä vain sana "salainen" pois. Tämä salainen on jotta muistaisi miten tehdään jos ei haluakaan salata juurihakemistoa.
Muutokset tulevat voimaan käynnistämällä Apache uusiksi.
sudo /etc/init.d/apache2 restartAsennetaan vielä etähallintaa varten SSH-yhteys, FTP-palvelin ja phpmyadmin kantojen luontia varten.SSH-palvelusudo apt-get install openssh-serverUudelleenkäynnistys
sudo /etc/init.d/ssh restartNyt voit ottaa toiselta koneelta yhteyden esim. Putty:llä ja bootata tarvittaessa kone.
FTP-palvelinHieno graafinen ftp-palvelin on PROFTPD
Valitse synaptic:sta
proftpd-basicAsennuksen jälkeen se löytyy Sovellukset -> Järjestelmätyökalut -> GADMIN-PROFTPD
Anna seuraavat tiedot:
Servers-välilehti:
Palvelimen nimi
Palvelimen osoite
Sertifikaatin salasana
Valitse alhaalla oleva
ApplyLuo käyttäjiä Users-välilehdeltä
Anna käyttäjänimi ja salasana
Määrittele kotihakemisto. Voi olla esim /var/www/ekasivu. Tallöin tälle tunnukselle aukeaa automaattisesti ekasivu jolloin sivuja on helppo muokata.
Muut asetukset saat itse miettiä
Siinä kaikki. Muista tarkastaa että tila on
ActivatedPHPMYADMINAsennetaan phpmyadmin hallintaa varten. Näin voit luoda uusia tietokantoja.
Valitse Synaptic:sta phpmyadmin tai komentoriviltä
sudo aptitude install phpmyadminAsennuksen jälkeen kirjaudu osoitteesta
http://192.168.1.100/phpmyadminSiinä kaikki. Jos tulee jotain ajatuksia, kysymyksiä, kritisoitavaa parannusehdotuksia, niin kirjoitelkaa ihmeessä. Varsinkin kaikki kritiikki on tervetullutta.
Ilman kritiikkiä ei tapahdu kehitystäkään.
Huomatkaa että olen täys tumpelo Ubuntun kanssa vielä. Ylläpidän työkseni Windows-palvelimia ja hoitelen normaaleja atk-tuen hommia. Ubuntu on kyllä hieno systeemi kun olisi vaan aikaa opetella se kunnolla.