{"id":18542898,"url":"https://github.com/mads80/web-server-hf2","last_synced_at":"2025-05-15T05:10:02.103Z","repository":{"id":235589067,"uuid":"328215817","full_name":"Mads80/Web-server-HF2","owner":"Mads80","description":null,"archived":false,"fork":false,"pushed_at":"2021-01-21T07:20:20.000Z","size":1579,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-05-15T05:09:52.520Z","etag":null,"topics":["apache2","linux","ubuntu"],"latest_commit_sha":null,"homepage":"","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Mads80.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-01-09T18:03:31.000Z","updated_at":"2021-01-21T07:20:22.000Z","dependencies_parsed_at":null,"dependency_job_id":"4f86b9bc-057a-49de-9591-e2159dd09094","html_url":"https://github.com/Mads80/Web-server-HF2","commit_stats":null,"previous_names":["mads80/web-server-hf2"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Mads80%2FWeb-server-HF2","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Mads80%2FWeb-server-HF2/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Mads80%2FWeb-server-HF2/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Mads80%2FWeb-server-HF2/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Mads80","download_url":"https://codeload.github.com/Mads80/Web-server-HF2/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254276461,"owners_count":22043869,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["apache2","linux","ubuntu"],"created_at":"2024-11-06T20:11:08.849Z","updated_at":"2025-05-15T05:09:57.095Z","avatar_url":"https://github.com/Mads80.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"## :spider_web: Web-server-HF2\n\nAf Mads Finseth\n\n# Indholdsfortegnelse:\n* [Forord](#books-forord)\n* [Apache](#large_blue_diamond-apache2)\n\t* [Ubunto Firewall (UFW)](#small_blue_diamond-ubunto-firewall-ufw)\n* [VirtualHosts](#large_blue_diamond-virtualhost)\n\t* [Hosts](#small_blue_diamond-hosts)\n* [HTTPS](#large_blue_diamond-https)\n\t* [Redirect](#small_blue_diamond-redirect)\n* [FTP](#large_blue_diamond-ftp)\n* [SSH](#large_blue_diamond-ssh)\n* [.htpasswd](#large_blue_diamond-htpasswd)\n* [MySQL](#large_blue_diamond-mysql)\n* [PHP](#large_blue_diamond-php)\n* [CGI](#large_blue_diamond-cgi)\n* [Wordpress](#large_blue_diamond-wordpress)\n\t* [Download](#small_blue_diamond-download)\n\t* [Konfiguration](#small_blue_diamond-konfiguration)\n\t\n## [:books:](#spider_web-web-server-hf2) Forord\nBiblioteket i Middelfart har bestemt at de skal have opsat en webserver.\nWebserveren skal til start bestå af domænerne “biblioteket1.opgave”, “biblioteket2.opgave”, “Wordpress” og “privateparts”.\n\n“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.\n\nWebserveren bliver installeret på Ubuntu(Linux) og understøtter PHP/MySQL. Bibliotekets egne webudvikler har adgang via FTP skulle han ønske at uploade filer.\n\nFø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.\n\n\n## [:large_blue_diamond:](#spider_web-web-server-hf2) Apache2\nLad os starte med at installere Apache2.\n```\nsudo apt update\nsudo apt install apache2\n```\n![ubuntu-apache](images/ubuntu-apache.png)\n\nOpretter egne sites.\n\n```\nsudo mkdir -p /var/www/html/biblioteket1.opgave/public_html\nsudo mkdir -p /var/www/html/biblioteket2.opgave/public_html\n\ncd /var/www/html/biblioteket1.opgave/public_html\nsudo nano index.html\n\ncd /var/www/html/biblioteket2.opgave/public_html\nsudo nano index.html\n```\nOpretter to index.html filer for de nye websites.\n```\n\u003chtml\u003e\n \u003chead\u003e\n \u003ctitle\u003ebiblioteket1.opgave\u003c/title\u003e\n \u003c/head\u003e\n \u003cbody\u003e\n \u003ch1\u003eHej, dette er en test-side for biblioteket1's hjemmeside.\u003c/h1\u003e\n \u003c/body\u003e\n\u003c/html\u003e\n\n\u0026\n\n\u003chtml\u003e\n \u003chead\u003e\n \u003ctitle\u003ebiblioteket2.opgave\u003c/title\u003e\n \u003c/head\u003e\n \u003cbody\u003e\n \u003ch1\u003eHej, dette er en test-side for biblioteket2's hjemmeside.\u003c/h1\u003e\n \u003c/body\u003e\n\u003c/html\u003e\n```\n\n### :small_blue_diamond: Ubunto Firewall (UFW)\nGiver adgang for HTTPS-trafik, og tillader profilen \"Apache fuld\". Derefter slettes den overflødige \"Apache\" -profil\n```\nsudo ufw allow 'Apache Full'\nsudo ufw delete allow 'Apache'\n```\nStarter UFW op.\n```\nsudo ufw enable\n```\nUFW Status.\n```\nsudo ufw status\n```\n![ufw-status](images/ufw-status.png)\n\n## [:large_blue_diamond:](#spider_web-web-server-hf2) VirtualHost\n```\ncd /etc/apache2/sites-available/\n```\nTager en kopi af 000-default.conf og gemmer den som biblioteket1.opgave.conf og biblioteket2.opgave.conf\n```\nsudo cp 000-default.conf biblioteket1.opgave.conf\nsudo cp 000-default.conf biblioteket2.opgave.conf\n```\n\nÅbner biblioteket1.opgave.conf + biblioteket2.opgave.conf\n```\nsudo nano biblioteket1.opgave.conf\nsudo nano biblioteket2.opgave.conf\n```\nRetter/tilføjer følgende linjer i de to .conf-filer.\n```\nServerAdmin\twebmaster@localhost\nServerName\tbiblioteket1.opgave\nServerAlias\twww.biblioteket1.opgave\nDocumentRoot\t/var/www/html/biblioteket1.opgave/public_html\n```\nLuk og gem.\n\nAktiver de to nye sites.\n```\nsudo a2ensite biblioteket1.opgave.conf\nsudo a2ensite biblioteket2.opgave.conf\n```\nDeaktiver den gamle standard site.\n```\nsudo a2dissite 000-default.conf\n```\n\nMit nye website kan nu findes på biblioteket1.opgave og biblioteket2.opgave.\n![biblioteket1-opgave](images/biblioteket1-opgave.png)\n\n### :small_blue_diamond: Hosts\n```\nsudo nano /etc/hosts\n```\nIndsætter IP og VirtualHost-navne.\n```\n192.168.187.128 biblioteket1.opgave\n192.168.187.128 biblioteket2.opgave\n192.168.187.128 wordpress\n192.168.187.128 privateparts\n```\n\n## [:large_blue_diamond:](#spider_web-web-server-hf2) HTTPS\nStarter med at lave backup af den originale fil.\n```\nsudo cp /etc/apache2/sites-available/default-ssl.conf /etc/apache2/sites-available/default-ssl.conf.bak\n```\nTilpasser filen med egen ServerName og DocumentRoot.\n```\nsudo nano /etc/apache2/sites-available/default-ssl.conf\n```\n![https-default](images/https-default.png)\n\nAktivering af ændringer i Apache.\n```\nsudo a2enmod ssl\nsudo a2enmod headers\n```\n```\nsudo a2ensite default-ssl\n```\n```\nsudo apache2ctl configtest\n\nSyntax OK\n```\n\n### :small_blue_diamond: Redirect\n```\nsudo nano /etc/apache2/sites-available/biblioteket1.opgave.conf\n```\n![https-redirect](images/https-redirect.png)\n```\nsudo systemctl restart apache2\n```\n\n## [:large_blue_diamond:](#spider_web-web-server-hf2) FTP\n```\nsudo apt update\nsudo apt install vsftpd\n```\nSe status på vsftpd.\n```\nsudo systemctl status vsftpd\n```\n![vsftpd-status](images/vsftpd-status.png)\n\u003cbr/\u003e\nKopierer og redigerer vsftpd.conf.\n```\nsudo cp /etc/vsftpd.conf vsftpd.conf.bck\nsudo nano /etc/vsftpd.conf\n```\n```\nlisten=NO\nlisten_ipv6=YES\nanonymous_enable=NO\nlocal_enable=YES\nwrite_enable=YES\ndirmessage_enable=YES\nuse_localtime=YES\nxferlog_enable=YES\nconnect_from_port_20=YES\nchroot_local_user=YES\nsecure_chroot_dir=/var/run/vsftpd/empty\npam_service_name=vsftpd\nrsa_cert_file=/etc/ssl/private/vsftpd.pem\nrsa_private_key_file=/etc/ssl/private/vsftpd.pem\nssl_enable=YES\nuser_sub_token=$USER\nlocal_root=/home/$USER/ftp\npasv_min_port=30000\npasv_max_port=31000\nuserlist_enable=YES\nuserlist_file=/etc/vsftpd.user_list\nuserlist_deny=NO\n```\nRestart vsftpd service.\n```\nsudo systemctl restart vsftpd\n```\n\n## [:large_blue_diamond:](#spider_web-web-server-hf2) SSH\nHenter og installerer OpenSSH.\n```\nsudo apt install openssh-server\n```\nKontroller status.\n```\nsudo systemctl status ssh\n```\nÅbner porte i UFW.\n```\nsudo ufw allow ssh\n```\n![ssh-putty](images/ssh-putty.png)\n\n## [:large_blue_diamond:](#spider_web-web-server-hf2) .htpasswd\nStarter med at oprette .htpasswd og tilføje brugere.\nFørste gang vi bruger dette værktøj, skal vi tilføje -c indstillingen for at oprette den angivne fil.\n```\nsudo htpasswd -c /etc/apache2/.htpasswd mads\n```\nMan vil efterfølgende blive spurgt om at angive et password. Næste bruger opretter vi uden -c indstillingen.\n```\nsudo htpasswd /etc/apache2/.htpasswd anden_bruger\n```\nSe indholdet af .htpasswd filen.\n```\ncat /etc/apache2/.htpasswd\n```\nResultat:\n```\nmads:$apr1$ipsuwA6.$t2qJzRkIpCGljYLXenUEC.\nanden_bruger:$apr1$cqokJ/IC$XFEXtS/xbwbZNl/oAlPtO1\n```\n\nKonfiguration af adgangskontrol inden for den virtuelle værtsdefinition.\n```\nsudo nano /etc/apache2/sites-enabled/privateparts.conf\n```\n```\n\u003cVirtualHost *:80\u003e\n\t....\n\n\t\u003cDirectory \"/var/www/html/privateparts/public_html\"\u003e\n\t\tAuthType Basic\n\t\tAuthName \"Restricted Content\"\n\t\tAuthUserFile /etc/apache2/.htpasswd\n\t\tRequire valid-user\n\t\u003c/Directory\u003e\n\u003c/VirtualHost\u003e\n```\n```\nsudo service apache2 restart\n```\n![privateparts-unauthorized](images/privateparts-unauthorized.png)\n\n## [:large_blue_diamond:](#spider_web-web-server-hf2) MySQL\nHenter og installerer MySQL.\n```\nsudo apt install mysql-server\n```\n Start MySQL.\n ```\n sudo mysql\n ```\n Exit MySQL console.\n ```\n exit\n ```\n ```\nsudo service status myqsl\nsudo service start mysql\nsudo service stop mysql\n ```\n ![mysql-status](images/mysql-status.png)\n\n## [:large_blue_diamond:](#spider_web-web-server-hf2) CGI\nStarter med at aktivere CGI på serveren.\n```\nsudo a2enmod cgi\n```\n```\nsudo systemctl restart apache2\n```\nSom eksempel opretter jeg et lille perl script.\n```\ncd /usr/lib/cgi-bin\nsudo nano test.pl\n```\nÆndrer filens rettigheder.\n```\nchmod 755 /usr/lib/cgi-bin/test.pl\n```\n![cgi-perl](images/cgi-perl.png)\n\n## [:large_blue_diamond:](#spider_web-web-server-hf2) PHP\n```\nsudo apt install php libapache2-mod-php php-mysql\n```\nSe hvilken PHP version der er installeret.\n```\nphp -v\n```\n![php-version](images/php-version.png)\n\nTest om PHP virker, opret en ny fil der hedder info.php\n```\nsudo nano /var/www/html/biblioteket2.opgave/public_html/info.php\n```\nIndsæt følgende i info.php og gem den.\n```\n\u003c?php\nphpinfo();\n?\u003e\n```\nGå til dit website igen.\n```\nbiblioteket2.opgave/info.php\n```\n![info-php](images/php-info.png)\n\n## [:large_blue_diamond:](#spider_web-web-server-hf2) Wordpress\nStarter med at logge ind i MySQL.\n```\nmysql -u root -p\n```\nOpretter database kun til Wordpress brug.\n```\nCREATE DATABASE wordpress DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;\n```\n\nOpretter brugeren \"wordpressuser\" med tilhørende kodeord \"password\".\n```\nCREATE USER 'wordpressuser'@'%' IDENTIFIED WITH mysql_native_password BY 'password';\n```\n\nGiver den nyoprettede bruger adgang til databasen wordpress.\n```\nGRANT ALL ON wordpress.* TO 'wordpressuser'@'%';\n```\n\nTil sidst.\n```\nFLUSH PRIVILEGES;\nog\nEXIT;\n```\n\nHenter og installere PHP Extensions.\n```\nsudo apt install php-curl php-gd php-mbstring php-xml php-xmlrpc php-soap php-intl php-zip\n```\nGenstart Apache.\n```\nsudo systemctl restart apache2\n```\n\nOpdatere Apache's .htaccess konfigurationer.\n```\nsudo nano /etc/apache2/sites-available/wordpress.conf\n```\nIndsæt følgende i VirtualHost blokken.\n```\n\u003cDirectory /var/www/wordpress/\u003e\n    AllowOverride All\n\u003c/Directory\u003e\n```\n\nAktiver Rewrite Module.\n```\nsudo a2enmod rewrite\n```\nOvenstående gør det muligt at lave permalinks der er nemmere at læse for mennesker.\n```\nhttp://example.com/2012/post-name/\nhttp://example.com/2012/12/30/post-name\n```\nCheck for syntax fejl inden vi går videre.\n```\nsudo apache2ctl configtest\n```\n![syntax-ok](images/syntax-ok.png)\n\nGenstart Apache endnu en gang.\n```\nsudo systemctl restart apache2\n```\n\n### :small_blue_diamond: Download\n```\ncd /tmp\ncurl -O https://wordpress.org/latest.tar.gz\n```\nPak filen ud.\n```\ntar xzvf latest.tar.gz\n```\nOpret dummy .htaccess fil som Wordpress kan bruge senere.\n```\ntouch /tmp/wordpress/.htaccess\n```\nLav en kopi af wp-config-sample.php Wordpress rent faktisk kan læse.\n```\ncp /tmp/wordpress/wp-config-sample.php /tmp/wordpress/wp-config.php\n```\nOpretter \"upgrade\" mappe til Wordpress for fremtide opgraderinger.\n```\nmkdir /tmp/wordpress/wp-content/upgrade\n```\nKopier hele mappen wordpress over til vores mappe på server delen. \".\" betyder den også tager f.eks. .htaccess filer med.\n```\nsudo cp -a /tmp/wordpress/. /var/www/wordpress\n```\n\n### :small_blue_diamond: Konfiguration\nGiver Apache read og write til Wordpress filerne.\n```\nsudo chown -R www-data:www-data /var/www/wordpress\n```\nSætter rettigheder på mapper og filer.\n```\nsudo find /var/www/wordpress/ -type d -exec chmod 750 {} \\;\nsudo find /var/www/wordpress/ -type f -exec chmod 640 {} \\;\n```\n\nKonfiguration af WordPress Configuration File.\n\nFor at hente sikre værdier fra WordPress-hemmelige nøglegenerator, skriv:\n```\ncurl -s https://api.wordpress.org/secret-key/1.1/salt/\n```\n!NEDESTÅENDE ER KUN FOR SHOW - BRUG IKKE DENNE KEY!\n```\ndefine('AUTH_KEY',         '1jl/vqfs\u003cXhdXoAPz9 DO NOT COPY THESE VALUES c_j{iwqD^\u003c+c9.k\u003cJ@4H');\ndefine('SECURE_AUTH_KEY',  'E2N-h2]Dcvp+aS/p7X DO NOT COPY THESE VALUES {Ka(f;rv?Pxf})CgLi-3');\ndefine('LOGGED_IN_KEY',    'W(50,{W^,OPB%PB\u003cJF DO NOT COPY THESE VALUES 2;y\u0026,2m%3]R6DUth[;88');\ndefine('NONCE_KEY',        'll,4UC)7ua+8\u003c!4VM+ DO NOT COPY THESE VALUES #`DXF+[$atzM7 o^-C7g');\ndefine('AUTH_SALT',        'koMrurzOA+|L_lG}kf DO NOT COPY THESE VALUES  07VC*Lj*lD\u0026?3w!BT#-');\ndefine('SECURE_AUTH_SALT', 'p32*p,]z%LZ+pAu:VY DO NOT COPY THESE VALUES C-?y+K0DK_+F|0h{!_xY');\ndefine('LOGGED_IN_SALT',   'i^/G2W7!-1H2OQ+t$3 DO NOT COPY THESE VALUES t6**bRVFSD[Hi])-qS`|');\ndefine('NONCE_SALT',       'Q6]U:K?j4L%Z]}h^q7 DO NOT COPY THESE VALUES 1% ^qUswWgn+6\u0026xqHN\u0026%');\n```\n\nÅbner WordPress configuration filen og sætter den ny generede key ind.\n```\nsudo nano /var/www/wordpress/wp-config.php\n```\nI den samme fil sættes de sidste ting op.\n```\n// ** MySQL settings - You can get this info from your web host ** //\n/** The name of the database for WordPress */\ndefine( 'DB_NAME', 'wordpress' );\n\n/** MySQL database username */\ndefine( 'DB_USER', 'wordpressuser' );\n\n/** MySQL database password */\ndefine( 'DB_PASSWORD', 'password' );\n```\nGem og luk.\n\nÅben en browser og skriv \"wordpress/\" i adresse-feltet og start web-installationen.\n![wordpress-install](images/wordpress-install.png)\n\n\n[Go To TOP](#spider_web-web-server-hf2)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmads80%2Fweb-server-hf2","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmads80%2Fweb-server-hf2","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmads80%2Fweb-server-hf2/lists"}