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
- Host: GitHub
- URL: https://github.com/mads80/web-server-hf2
- Owner: Mads80
- Created: 2021-01-09T18:03:31.000Z (over 5 years ago)
- Default Branch: main
- Last Pushed: 2021-01-21T07:20:20.000Z (over 5 years ago)
- Last Synced: 2025-05-15T05:09:52.520Z (about 1 year ago)
- Topics: apache2, linux, ubuntu
- Homepage:
- Size: 1.51 MB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
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
```

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
```

## [: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.

### :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
```

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
```

```
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
```

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
```

## [: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
```

## [: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
```

## [: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
```

## [: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
```

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
```

## [: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
```

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