An open API service indexing awesome lists of open source software.

https://github.com/mads80/web-server-hf2


https://github.com/mads80/web-server-hf2

apache2 linux ubuntu

Last synced: about 1 year ago
JSON representation

Awesome Lists containing this project

README

          

## :spider_web: Web-server-HF2

Af Mads Finseth

# Indholdsfortegnelse:
* [Forord](#books-forord)
* [Apache](#large_blue_diamond-apache2)
* [Ubunto Firewall (UFW)](#small_blue_diamond-ubunto-firewall-ufw)
* [VirtualHosts](#large_blue_diamond-virtualhost)
* [Hosts](#small_blue_diamond-hosts)
* [HTTPS](#large_blue_diamond-https)
* [Redirect](#small_blue_diamond-redirect)
* [FTP](#large_blue_diamond-ftp)
* [SSH](#large_blue_diamond-ssh)
* [.htpasswd](#large_blue_diamond-htpasswd)
* [MySQL](#large_blue_diamond-mysql)
* [PHP](#large_blue_diamond-php)
* [CGI](#large_blue_diamond-cgi)
* [Wordpress](#large_blue_diamond-wordpress)
* [Download](#small_blue_diamond-download)
* [Konfiguration](#small_blue_diamond-konfiguration)

## [:books:](#spider_web-web-server-hf2) Forord
Biblioteket i Middelfart har bestemt at de skal have opsat en webserver.
Webserveren skal til start bestå af domænerne “biblioteket1.opgave”, “biblioteket2.opgave”, “Wordpress” og “privateparts”.

“Biblioteket1.opgave”, “biblioteket2.opgave” og “Wordpress” er til borgerne i Middelfart. Hvor “privateparts” er til bibliotekets interne del, da denne er beskyttet af et password.

Webserveren bliver installeret på Ubuntu(Linux) og understøtter PHP/MySQL. Bibliotekets egne webudvikler har adgang via FTP skulle han ønske at uploade filer.

Først downloader og installere jeg Ubuntu Desktop. Desktop er bare lidt smartere i denne sammenhæng, da det er nemmere at vise ting lokalt. Skulle web-serveren bruges i den virkelige verden var valget faldet på Ubuntu Server, men i denne sammenhæng gør det ingen forskel.

## [:large_blue_diamond:](#spider_web-web-server-hf2) Apache2
Lad os starte med at installere Apache2.
```
sudo apt update
sudo apt install apache2
```
![ubuntu-apache](images/ubuntu-apache.png)

Opretter egne sites.

```
sudo mkdir -p /var/www/html/biblioteket1.opgave/public_html
sudo mkdir -p /var/www/html/biblioteket2.opgave/public_html

cd /var/www/html/biblioteket1.opgave/public_html
sudo nano index.html

cd /var/www/html/biblioteket2.opgave/public_html
sudo nano index.html
```
Opretter to index.html filer for de nye websites.
```


biblioteket1.opgave


Hej, dette er en test-side for biblioteket1's hjemmeside.


&


biblioteket2.opgave


Hej, dette er en test-side for biblioteket2's hjemmeside.


```

### :small_blue_diamond: Ubunto Firewall (UFW)
Giver adgang for HTTPS-trafik, og tillader profilen "Apache fuld". Derefter slettes den overflødige "Apache" -profil
```
sudo ufw allow 'Apache Full'
sudo ufw delete allow 'Apache'
```
Starter UFW op.
```
sudo ufw enable
```
UFW Status.
```
sudo ufw status
```
![ufw-status](images/ufw-status.png)

## [:large_blue_diamond:](#spider_web-web-server-hf2) VirtualHost
```
cd /etc/apache2/sites-available/
```
Tager en kopi af 000-default.conf og gemmer den som biblioteket1.opgave.conf og biblioteket2.opgave.conf
```
sudo cp 000-default.conf biblioteket1.opgave.conf
sudo cp 000-default.conf biblioteket2.opgave.conf
```

Åbner biblioteket1.opgave.conf + biblioteket2.opgave.conf
```
sudo nano biblioteket1.opgave.conf
sudo nano biblioteket2.opgave.conf
```
Retter/tilføjer følgende linjer i de to .conf-filer.
```
ServerAdmin webmaster@localhost
ServerName biblioteket1.opgave
ServerAlias www.biblioteket1.opgave
DocumentRoot /var/www/html/biblioteket1.opgave/public_html
```
Luk og gem.

Aktiver de to nye sites.
```
sudo a2ensite biblioteket1.opgave.conf
sudo a2ensite biblioteket2.opgave.conf
```
Deaktiver den gamle standard site.
```
sudo a2dissite 000-default.conf
```

Mit nye website kan nu findes på biblioteket1.opgave og biblioteket2.opgave.
![biblioteket1-opgave](images/biblioteket1-opgave.png)

### :small_blue_diamond: Hosts
```
sudo nano /etc/hosts
```
Indsætter IP og VirtualHost-navne.
```
192.168.187.128 biblioteket1.opgave
192.168.187.128 biblioteket2.opgave
192.168.187.128 wordpress
192.168.187.128 privateparts
```

## [:large_blue_diamond:](#spider_web-web-server-hf2) HTTPS
Starter med at lave backup af den originale fil.
```
sudo cp /etc/apache2/sites-available/default-ssl.conf /etc/apache2/sites-available/default-ssl.conf.bak
```
Tilpasser filen med egen ServerName og DocumentRoot.
```
sudo nano /etc/apache2/sites-available/default-ssl.conf
```
![https-default](images/https-default.png)

Aktivering af ændringer i Apache.
```
sudo a2enmod ssl
sudo a2enmod headers
```
```
sudo a2ensite default-ssl
```
```
sudo apache2ctl configtest

Syntax OK
```

### :small_blue_diamond: Redirect
```
sudo nano /etc/apache2/sites-available/biblioteket1.opgave.conf
```
![https-redirect](images/https-redirect.png)
```
sudo systemctl restart apache2
```

## [:large_blue_diamond:](#spider_web-web-server-hf2) FTP
```
sudo apt update
sudo apt install vsftpd
```
Se status på vsftpd.
```
sudo systemctl status vsftpd
```
![vsftpd-status](images/vsftpd-status.png)


Kopierer og redigerer vsftpd.conf.
```
sudo cp /etc/vsftpd.conf vsftpd.conf.bck
sudo nano /etc/vsftpd.conf
```
```
listen=NO
listen_ipv6=YES
anonymous_enable=NO
local_enable=YES
write_enable=YES
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
connect_from_port_20=YES
chroot_local_user=YES
secure_chroot_dir=/var/run/vsftpd/empty
pam_service_name=vsftpd
rsa_cert_file=/etc/ssl/private/vsftpd.pem
rsa_private_key_file=/etc/ssl/private/vsftpd.pem
ssl_enable=YES
user_sub_token=$USER
local_root=/home/$USER/ftp
pasv_min_port=30000
pasv_max_port=31000
userlist_enable=YES
userlist_file=/etc/vsftpd.user_list
userlist_deny=NO
```
Restart vsftpd service.
```
sudo systemctl restart vsftpd
```

## [:large_blue_diamond:](#spider_web-web-server-hf2) SSH
Henter og installerer OpenSSH.
```
sudo apt install openssh-server
```
Kontroller status.
```
sudo systemctl status ssh
```
Åbner porte i UFW.
```
sudo ufw allow ssh
```
![ssh-putty](images/ssh-putty.png)

## [:large_blue_diamond:](#spider_web-web-server-hf2) .htpasswd
Starter med at oprette .htpasswd og tilføje brugere.
Første gang vi bruger dette værktøj, skal vi tilføje -c indstillingen for at oprette den angivne fil.
```
sudo htpasswd -c /etc/apache2/.htpasswd mads
```
Man vil efterfølgende blive spurgt om at angive et password. Næste bruger opretter vi uden -c indstillingen.
```
sudo htpasswd /etc/apache2/.htpasswd anden_bruger
```
Se indholdet af .htpasswd filen.
```
cat /etc/apache2/.htpasswd
```
Resultat:
```
mads:$apr1$ipsuwA6.$t2qJzRkIpCGljYLXenUEC.
anden_bruger:$apr1$cqokJ/IC$XFEXtS/xbwbZNl/oAlPtO1
```

Konfiguration af adgangskontrol inden for den virtuelle værtsdefinition.
```
sudo nano /etc/apache2/sites-enabled/privateparts.conf
```
```

....


AuthType Basic
AuthName "Restricted Content"
AuthUserFile /etc/apache2/.htpasswd
Require valid-user

```
```
sudo service apache2 restart
```
![privateparts-unauthorized](images/privateparts-unauthorized.png)

## [:large_blue_diamond:](#spider_web-web-server-hf2) MySQL
Henter og installerer MySQL.
```
sudo apt install mysql-server
```
Start MySQL.
```
sudo mysql
```
Exit MySQL console.
```
exit
```
```
sudo service status myqsl
sudo service start mysql
sudo service stop mysql
```
![mysql-status](images/mysql-status.png)

## [:large_blue_diamond:](#spider_web-web-server-hf2) CGI
Starter med at aktivere CGI på serveren.
```
sudo a2enmod cgi
```
```
sudo systemctl restart apache2
```
Som eksempel opretter jeg et lille perl script.
```
cd /usr/lib/cgi-bin
sudo nano test.pl
```
Ændrer filens rettigheder.
```
chmod 755 /usr/lib/cgi-bin/test.pl
```
![cgi-perl](images/cgi-perl.png)

## [:large_blue_diamond:](#spider_web-web-server-hf2) PHP
```
sudo apt install php libapache2-mod-php php-mysql
```
Se hvilken PHP version der er installeret.
```
php -v
```
![php-version](images/php-version.png)

Test om PHP virker, opret en ny fil der hedder info.php
```
sudo nano /var/www/html/biblioteket2.opgave/public_html/info.php
```
Indsæt følgende i info.php og gem den.
```

```
Gå til dit website igen.
```
biblioteket2.opgave/info.php
```
![info-php](images/php-info.png)

## [:large_blue_diamond:](#spider_web-web-server-hf2) Wordpress
Starter med at logge ind i MySQL.
```
mysql -u root -p
```
Opretter database kun til Wordpress brug.
```
CREATE DATABASE wordpress DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;
```

Opretter brugeren "wordpressuser" med tilhørende kodeord "password".
```
CREATE USER 'wordpressuser'@'%' IDENTIFIED WITH mysql_native_password BY 'password';
```

Giver den nyoprettede bruger adgang til databasen wordpress.
```
GRANT ALL ON wordpress.* TO 'wordpressuser'@'%';
```

Til sidst.
```
FLUSH PRIVILEGES;
og
EXIT;
```

Henter og installere PHP Extensions.
```
sudo apt install php-curl php-gd php-mbstring php-xml php-xmlrpc php-soap php-intl php-zip
```
Genstart Apache.
```
sudo systemctl restart apache2
```

Opdatere Apache's .htaccess konfigurationer.
```
sudo nano /etc/apache2/sites-available/wordpress.conf
```
Indsæt følgende i VirtualHost blokken.
```

AllowOverride All

```

Aktiver Rewrite Module.
```
sudo a2enmod rewrite
```
Ovenstående gør det muligt at lave permalinks der er nemmere at læse for mennesker.
```
http://example.com/2012/post-name/
http://example.com/2012/12/30/post-name
```
Check for syntax fejl inden vi går videre.
```
sudo apache2ctl configtest
```
![syntax-ok](images/syntax-ok.png)

Genstart Apache endnu en gang.
```
sudo systemctl restart apache2
```

### :small_blue_diamond: Download
```
cd /tmp
curl -O https://wordpress.org/latest.tar.gz
```
Pak filen ud.
```
tar xzvf latest.tar.gz
```
Opret dummy .htaccess fil som Wordpress kan bruge senere.
```
touch /tmp/wordpress/.htaccess
```
Lav en kopi af wp-config-sample.php Wordpress rent faktisk kan læse.
```
cp /tmp/wordpress/wp-config-sample.php /tmp/wordpress/wp-config.php
```
Opretter "upgrade" mappe til Wordpress for fremtide opgraderinger.
```
mkdir /tmp/wordpress/wp-content/upgrade
```
Kopier hele mappen wordpress over til vores mappe på server delen. "." betyder den også tager f.eks. .htaccess filer med.
```
sudo cp -a /tmp/wordpress/. /var/www/wordpress
```

### :small_blue_diamond: Konfiguration
Giver Apache read og write til Wordpress filerne.
```
sudo chown -R www-data:www-data /var/www/wordpress
```
Sætter rettigheder på mapper og filer.
```
sudo find /var/www/wordpress/ -type d -exec chmod 750 {} \;
sudo find /var/www/wordpress/ -type f -exec chmod 640 {} \;
```

Konfiguration af WordPress Configuration File.

For at hente sikre værdier fra WordPress-hemmelige nøglegenerator, skriv:
```
curl -s https://api.wordpress.org/secret-key/1.1/salt/
```
!NEDESTÅENDE ER KUN FOR SHOW - BRUG IKKE DENNE KEY!
```
define('AUTH_KEY', '1jl/vqfs