Zdaj glede te tematike je že dosti napisanega in narisanega, slednji način postavitve WEB-Serverja oz. spletnega strežnika je moj osebni pogled in način postavitve CMS WordPress na Debian Linux strežnik z pomočjo WEBMin za administracijo strežnika. Osebno nisem računalničar zato menim, da obstaja tisoče boljših načinov postavitve to je eden izmed primerov, če si hočete za vaše podjetje ali osebno uporabo postaviti odlično predstavitveno stran – Blog WordPress – stari prenosni računalnik ali stacionarni računalnik, konvertiramo v strežnik, lahko tudi po izbiri direktno preko vašega Windowsa to isto izvedete s pomočjo XAmpp aplikacije za Windows (Apache, SQL, FTP,…) serverji lokalna postavitev. V tem primeru, ko smo naprimer postavili oz. namestili enega izmed strežnikov Linux Ubuntu, Debian, CentOS,…. po želji tukaj primer Debian začetek postavitve.

Osebno uporabljam za SSH povezave pri Windows Putty in največ SmartFTP – SSH/sFTP povezava – Stvar navade tudi npr. od kar poznam računalništvo uporabljam za Windows TotalCommander – pred tem je bil Windows Commander in še prej Norton Commander… dolgo nazaj…

Recimo da ste ustvarili sebi na vašem strežniku račun admin@debianlinux se pravi hostname je debianlinux sedaj se povežite preko putty ali SmartFTP ali vašim priljubljenim programom na SSH oz. port 22 IPDebian admin pass….

sudo nano /etc/hostname
debianlinux

sudo visudo

# KOPIRAJTE NA KONCU TE SPODNJE KOMANDE
admin    ALL=(ALL) ALL
admin    ALL = NOPASSWD: ALL

# ZAŽENITE OZ. IZVRŠITE SPODNJO KOMANDO V TERMINALU
sudo usermod -m -G  adm,dialout,cdrom,sudo,audio,video,plugdev,games,users,input,netdev,apache,www-data admin

sudo nano /etc/ssh/sshd_config
# Na koncu dodajte spodnje direktive IN SHRANI
AllowUsers  admin

# LAHKO SI TUDI ZAŠČITITE DOSTOP Z VAŠIM SSH CERTIFIKATOM BOLJ VARNO
sudo apt-get install openssh-server
ssh-keygen
#generiraj si ssl ključ
sudo systemctl restart ssh
sudo service ssh reload

PRIPRAVA NAMESTITVE PROGRAMOV ZA WEB SERVER

sudo apt-get update
sudo apt-get upgrade
sudo apt-get full-upgrade
sudo apt-get -y dist-upgrade


# PO POTREBI:
sudo nano /etc/passwd
sudo nano /etc/group
sudo nano /etc/shadow

Prva stvar nastavitev požarnega zidu Linux iptables:

sudo iptables -L
sudo ip6tables -L

sudo nano /tmp/v4
# Kopiraj vse te kode spodaj do commit in shrani
*filter
# Allow all loopback (lo0) traffic and reject traffic
# to localhost that does not originate from lo0.
-A INPUT -i lo -j ACCEPT
-A INPUT ! -i lo -s 127.0.0.0/8 -j REJECT
# Allow ping.
-A INPUT -p icmp -m state -–state NEW -–icmp-type 8 -j ACCEPT
# Allow SSH connections.
-A INPUT -p tcp –dport 22 -m state -–state NEW -j ACCEPT
# Allow HTTP and HTTPS connections from anywhere
# (the normal ports for web servers).
-A INPUT -p tcp -–dport 80 -m state –-state NEW -j ACCEPT
-A INPUT -p tcp -–dport 443 -m state –-state NEW -j ACCEPT
# Allow inbound traffic from established connections.
# This includes ICMP error returns.
-A INPUT -m state –-state ESTABLISHED,RELATED -j ACCEPT
# Log what was incoming but denied (optional but useful).
#-A INPUT -m limit –-limit 5/min -j LOG –-log-prefix “iptables_INPUT_denied: ” –-log-level 7
# Reject all other inbound.
-A INPUT -j REJECT
# Log any traffic which was sent to you
# for forwarding (optional but useful).
#-A FORWARD -m limit –-limit 5/min -j LOG –-log-prefix “iptables_FORWARD_denied: ” –-log-level 7
# Reject all traffic forwarding.
-A FORWARD -j REJECT
#-A FORWARD -i eth0 -o usbnet0 -m state --state RELATED,ESTABLISHED -m limit --limit 10/sec -j ACCEPT
# -MAIL ZA VAŠO POŠTO ČE JO ŽELITE ODOBRITE SPODNJE DIREKTIVE -A INPUT
#SMTP
#-A INPUT -p tcp --dport 25 -j ACCEPT
#-A INPUT -p tcp --dport 465 -j ACCEPT
#-A INPUT -p tcp --dport 587 -j ACCEPT
#IMAP(S)
#-A INPUT -p tcp --dport 143 -j ACCEPT
#-A INPUT -p tcp --dport 993 -j ACCEPT
#POP(S)
#-A INPUT -p tcp --dport 110 -j ACCEPT
#-A INPUT -p tcp --dport 995 -j ACCEPT
COMMIT

#Shrani
sudo nano /tmp/v6
# Kopiraj vse te spodaj kode in shrani
*filter
# Allow all loopback (lo0) traffic and reject traffic
# to localhost that does not originate from lo0.
-A INPUT -i lo -j ACCEPT
-A INPUT ! -i lo -s ::1/128 -j REJECT
# Allow ICMP
-A INPUT -p icmpv6 -m state -–state NEW -j ACCEPT
# Allow HTTP and HTTPS connections from anywhere
# (the normal ports for web servers).
-A INPUT -p tcp -–dport 80 -m state –-state NEW -j ACCEPT
-A INPUT -p tcp –-dport 443 -m state –-state NEW -j ACCEPT
# Allow inbound traffic from established connections.
-A INPUT -m state –-state ESTABLISHED,RELATED -j ACCEPT
# Log what was incoming but denied (optional but useful).
-A INPUT -m limit –-limit 5/min -j LOG –-log-prefix “ip6tables_INPUT_denied: ” -–log-level 7
# Reject all other inbound.
-A INPUT -j REJECT
# Log any traffic which was sent to you
# for forwarding (optional but useful).
-A FORWARD -m limit –-limit 5/min -j LOG –-log-prefix “ip6tables_FORWARD_denied: ” –-log-level 7
# Reject all traffic forwarding.
-A FORWARD -j REJECT
COMMIT
#Shrani

Zdaj smo ustvarili za naš WEB Server direktive, potrebno jih je naložiti tako da izvršite spodnje komande – Ko namestite skripte vsi odgovori so Yes oz. Da kar vas vpraša “install iptables-persistent”:

sudo iptables-restore < /tmp/v4

sudo ip6tables-restore < /tmp/v6

sudo apt-get install iptables-persistent

sudo reboot

# Preverite če deluje
sudo iptables -vL
sudo ip6tables -vL

Zdaj še nastavimo lokalno naš server – Router:

ifconfig

sudo nano /etc/dhcpcd.conf

# Na koncu kopirajte vaše direktive se pravi IP strežnika rezerviran IP na vašem routerju za vaš linux npr. in static domain je IP router:

#static IP configuration
interface eth0
static ip_address=192.168.0.100/24
static routers=192.168.0.1
static domain_name_servers=192.168.0.1

#Shrani - SHRANITE IN ZAŽENITE PONOVNO RAČUNALNIK SUDO REBOOT

APACHE – NAMESTITEV

sudo apt update && sudo apt upgrade -y

sudo apt-get install apache2 -y

sudo nano /etc/apache2/apache2.conf
# SPREMENI SAMO DIREKTIVE POT HTML KOT JE TU SPODAJ POIŠČI V DATOTEKI
<Directory /var/www/html/> pot mape in direktivo:
“AllowOverride None” – spremeni v “AllowOverride ALL” ustvari pot kjer bo wordpress nameščen:
        <Directory /var/www/html/>
        Options Indexes FollowSymLinks MultiViews
		AllowOverride All
		Require all granted
        </Directory>


#Shrani

sudo nano /etc/apache2/apache2.conf
# Na koncu datoteke shrani spodnje direktive
ServerName localhost

#Shrani

sudo service apache2 restart
sudo /etc/init.d/apache2 restart

# NAMISTITEV PHP 7.4 - Zaženi v terminalu spodnje komande:
sudo apt -y install lsb-release apt-transport-https ca-certificates wget

sudo wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg

echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" | sudo tee /etc/apt/sources.list.d/php.list

sudo apt update

# Izklop starejše verzije če jo imate nameščeno in vklop novejše:
sudo a2dismod php7.3
sudo a2dismod php7.2
sudo a2enmod php7.4


sudo apt install php7.4
sudo apt install php7.4-{common,mysql,xml,xmlrpc,curl,gd,imagick,cli,dev,imap,mbstring,opcache,soap,zip,intl,bcmath} -y


### PHP Extensions for CMS WordPress

sudo apt install -y php7.4-mysql php7.4-dom php7.4-simplexml php7.4-ssh2 php7.4-xml php7.4-xmlreader php7.4-curl  php7.4-exif  php7.4-ftp php7.4-gd  php7.4-iconv php7.4-imagick php7.4-json  php7.4-mbstring php7.4-posix php7.4-sockets php7.4-tokenizer

sudo nano /etc/php/7.4/apache2/php.ini
# SPREMENITE PO SVOJE SPODNJE DIREKTIVE
max_execution_time = 60
memory_limit = 256M 
post_max_size = 256M
upload_max_filesize = 512M
log_errors = On
error_log = /var/log/php/error.log

# SHRANITE IN IN IZVEDITE SPODNJE KOMANDE ZA BELEŽKO NAPAK
sudo mkdir -p /var/log/php
sudo chown www-data /var/log/php

# SQL SERVER BAZE PODATKOV
sudo apt-get install mariadb-client mariadb-server php-mysql php-mbstring -y

# phpMyAdmin UPRAVLJANJE BAZE PODATKOV
sudo apt-get install phpmyadmin
# PRISTOPNI PODATKI SO phpmyadmin uporabnik in geslo ki ste si ga določili, priporočam čim daljše za vašo varnost nikakor admin ali 1234...

sudo phpenmod mysqli
sudo a2enmod rewrite
sudo service apache2 restart

Zdaj namestimo še noip.com DDNS – domeno, ki smo jo registrirali za naš IP bodisi fiksni ali dinamični.

# bodite kot root sudo su in izvedite spodnje komande:

cd /usr/local/src/

sudo wget http://www.no-ip.com/client/linux/noip-duc-linux.tar.gz

tar xf noip-duc-linux.tar.gz

sudo rm noip-duc-linux.tar.gz

cd noip-2.1.9-1/

sudo make install
# Izpolnite vašo epošto noip.com in geslo za prijavo

cd /etc/

sudo nano rc.local
# Kopiraj spodnjo komando v datoteko
sudo noip2

sudo shutdown -r now
sudo noip2 -S

Požarni Zid UFW in Fail2ban

sudo apt install fail2ban
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

sudo nano /etc/fail2ban/jail.local
# Glej objavo nastavitve fail2ban WordPress
enabled = true
filter = apache-badbots

ls /etc/fail2ban/filter.d/

sudo apt install ufw
# Oddobri takoj porte 80 443 in maile, če si namestil-a
sudo ufw allow 80
sudo ufw allow 443
sudo ufw limit ssh/tcp
# NPR. ODOBRIŠ RAČUNALNIK PREKO KATEREGA UPORABBLAŠ SSH
sudo ufw allow from 192.168.0.111 port 22
sudo ufw enable

cd /etc/
sudo nano rc.local
#!/bin/sh -e
#
# rc.local
sudo noip2
sudo ufw enable
#
# Kopiraj spodnjo direktivo  nekje pod rc.local npr. zraven noip...

sudo ufw enable

Elektronska Pošta:

sudo apt-get install ssmtp -y && sudo apt-get install mailutils -y && sudo apt-get install mpack -y

sudo apt-get install postfix postfix-mysql dovecot-core dovecot-imapd dovecot-pop3d dovecot-lmtpd dovecot-mysql -y

# Glej objavo kako se nastavi spletna pošta za tvoj server linux, postfix in dovecot nastavitve - Lažje vam bo vse delati z WEBMin.com za Debian Strežnik

 Nastavitve za Google Mail - mailutils:
sudo apt-get install ssmtp && sudo apt-get install mailutils && sudo apt-get install mpack -y

sudo nano /etc/ssmtp/ssmtp.conf
# Na koncu kopiraj svoje direktive se pravi google mail in geslo
AuthUser=moj.mail@gmail.com
AuthPass=geslogooglemail
FromLineOverride=YES
mailhub=smtp.gmail.com:587
UseSTARTTLS=YES

shrani

sudo nano /etc/ssmtp/revaliases
# Na koncu kopipiraj spodnje direktive svoj googlemail
root:moj.mail@gmail.com:smtp.gmail.com:587
mainuser:moj.mail@gmail.com:smtp.gmail.com:587

#shrani

Certbot SSL certifikat – https://certbot.eff.org/

# Spodnje komande izvrši kot ROOT to velja tudi za obnovo certifikata
sudo apt-get install certbot python-certbot-apache
sudo certbot --apache

# Ko se začne postopek bodite pozorni, da ste prej v vašem usmerjevalniku za 
# vaš strežnik v lokalnem omrežju posredovali dalje, se pravi Linux server 
# interni porti 80 in 443 v usmerjevalniku posredujete dalje na 80 in 443, 
# npr: moj server interno v omrežju je na IP 192.168.0.100 in posredujem za
# ta rezerviran IP DHCP router nastavitve port 80 na externo port 80 itd..
# port 443 interno za ip 192.168.0.100 na port 443 externo.... email....


sudo certbot --apache certonly

# Obnova certifikata - test
sudo certbot renew --dry-run

V vašem Routerju oz. Usmerjevalniku ali svičerju obvezno posredujte za vaš strežnik porte 80 in 443 za implementacijo SSL certifikata – certbot, sslforfree, namecheap, itd…

Glede na to da smo ta Apache server napotili v pot VAR/WWW/HTML prenesemo v to mapo WordPress

cd /var/www/html/
sudo rm *
sudo wget http://wordpress.org/latest.tar.gz
sudo tar xzf latest.tar.gz
sudo mv wordpress/* .
sudo rm -rf wordpress latest.tar.gz
sudo chown -R www-data: .

Namestitev baze podatkov za CMS WordPress

sudo mysql_secure_installation
 Prvi odgovor NE (menjava gesla) drugi vsi so YES oz. DA !!!

sudo mysql --user=root --password=vašegesloadmin

create user 'wordpress'@'localhost' identified by 'DAJTETUDOLGOKODOZAVAŠOAPLIKACIJO';
create database bazapodatkov;
grant all privileges on bazapodatkov.* to 'wordpress'@'localhost';
flush privileges;
exit

WordPress namestitev

Npr. odprite vaš url noip.com – http://mojadomena.ddns.net, če uporabljaš certbot certifikat pol lahko tudi https preveri prej če deluje vse pravilono v apache – ko instaliraš npr. certbot daj obveno redirect oz. preusmeritev na https !!!

Database Name: wordpress
User Name: bazapodatkov
Password: DAJTETUDOLGOKODOZAVAŠOAPLIKACIJO
Database Host: localhost
Table Prefix: mojblog_

Za Debian Linux obstaja fantastična aplikacije in sicer WEBMin http://www.webmin.com/

WEBMin = http://www.webmin.com/

sudo apt-get update && sudo apt-get upgrade

sudo apt install apt-transport-https -y

sudo apt-get install perl libnet-ssleay-perl openssl libauthen-pam-perl libpam-runtime libio-pty-perl apt-show-versions python

wget http://prdownloads.sourceforge.net/webadmin/webmin_1.955_all.deb

sudo dpkg --install webmin_1.955_all.deb

hostname -I

https://192.168.0.100:10000

Z WEBMin oz. Spletnim Administratorjem strežnika si pomagajte pri rednih varnostnih kopijah SQL baz podatkov in enostavno upravljajte in konfigurirajte vaše strežnik po vaših potrebah – baze, ftp, stranke,….

Druga varianta namestitve WEBMin.com – Boljše:

sudo nano /etc/apt/sources.list
#Kopiraj na koncu
deb https://download.webmin.com/download/repository sarge contrib
#Shrani

#Zaženi v terminalu sudo su
wget http://www.webmin.com/jcameron-key.asc
sudo apt-key add jcameron-key.asc
sudo apt update
sudo apt install webmin -y
sudo apt-get install git -y

#Namestitev CertBot modul za webmin
http://cdn.acugis.com/certbot-webmin-module/certbot.wbm.gz

Glede uporabe vašega strežnika priporočam, da si preko WEBMin namestite še FTP strežnik, če ga že niste prej. WebMin si lahko nastavite, da bo celotno delovanje vašega strežnika popolnoma avtomatizirano z dnevnimi varnostnimi kopijami sistema ali baz potakov, kar je najbolj pomembno!