Favorilere Ekle

Sıfırdan Ubuntu Web Sunucusu Kurulumu 2021

MuMMy tarafından 2 yıl önce oluşturuldu - 29 Ekim 2021 Cuma 07:24

Cevaplar

MuMMy
- 2 yıl önce

Apache Kurulumu ve Güvenlik Duvarının Güncellenmesi

Apache web sunucusu, web sitelerini barındırmak için PHP ile birlikte kullanılabilen popüler bir açık kaynaklı web sunucusudur ve yaygın olarak kullanılmaktadır.
Önce "apt" önbelleğini güncelliyoruz
sudo apt update
Eğer "sudo"yu ilk kez kullanıyorsanız, izinlerinizi doğrulamak için şifrenizi girmeniz istenecektir.
"apt" önbelleği güncellendikten sonra Apache'yi kuruyoruz.
sudo apt install apache2
Üstteki komutu girdikten sonra "apt", nelerin kurulacağını ve ne kadar yer kaplayacağını gösterecektir. Onaylamak için "Y"ye basın ve ardından "ENTER"a basın, kurulum başlayacaktır.

Güvenlik Duvarını Web Trafiğine İzin Verecek Şekilde Ayarlama

Eğer UFW güvenlik duvarını etkinleştirilmişse, güvenlik duvarınızın HTTP ve HTTPS trafiğine izin verdiğinden emin olun. Şu şekilde kontrol edebilirsiniz:
sudo ufw app list
Çıktı:
Available applications:
Apache
Apache Full
Apache Secure
OpenSSH
"Apache Full" ayrıntılarına bakarsak, 80 ve 443 numaralı bağlantı noktalarına trafik sağladığını görürüz:
sudo ufw app info "Apache Full"
Çıktı:
Profile: Apache Full
Title: Web Server (HTTP,HTTPS)
Description: Apache v2 is the next generation of the omnipresent Apache web
server.
Ports:
80,443/tcp
Gelen HTTP ve HTTPS trafiğine izin vermek için:
sudo ufw allow "Apache Full"
Şimdi web tarayıcısına sunucunuzun IP adresinizi girerek her şeyin doğru çalıştığından emin olun. "Apache2 Ubuntu Default Page" başlıklı sayfayı görüyor olmalısınız.

Sunucunuzun IP Adresi Nasıl Bulunur?

Sadece ip adresi için:
hostname -I
Çıktı:
10.156.114.85
Detaylı çıktı için:
ip a
Çıktı:
enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether 00:00:00:00:00:00 brd ff:ff:ff:ff:ff:ff
inet 10.156.114.85/24 brd 10.156.114.255 scope global enp0s3
valid_lft forever preferred_lft forever
inet6 fe10::156:14ff:fe40:3046/64 scope link
valid_lft forever preferred_lft forever

MySQL Kurulumu

Artık web sunucunuz hazır ve çalışır durumda olduğuna göre, MySQL'i kurmanın zamanı geldi. MySQL bir veritabanı yönetim sistemidir. Temel olarak, sitenizin bilgi depolayabileceği veritabanlarını düzenleyecek ve bunlara erişim sağlayacaktır.
Yazılımı yüklüyoruz, (Y, ENTER):
sudo apt install mysql-server
MySQL güvenlik kurulumu işlemlerini başlatıyoruz:
sudo mysql_secure_installation
Burada "VALIDATE PASSWORD PLUGIN" aktif etmek isteyip istemediğinizi soracak. Eğer aktif ederseniz, MySQL zayıf ve gelişmiş parola seçeneklerinden birini seçmenizi isteyecektir. Eğer güçlü parola seçeneğini seçerseniz ileride basit parolalar girmenizi engelleyecektir.
Parola seçeneklerini aktif etmek istiyorsanız Y tuşuna, etkinleştirmeden devam etmek için herhangi bir tuşa basın.
VALIDATE PASSWORD PLUGIN can be used to test passwords
and improve security. It checks the strength of password
and allows the users to set only those passwords which are
secure enough. Would you like to setup VALIDATE PASSWORD plugin?
Press y|Y for Yes, any other key for No:
Cevabınız "evet" ise, bir şifre doğrulama seviyesi seçmeniz istenecektir. Örneğin en güçlü seviye için "2" girerseniz, sayı, büyük ve küçük harf ve özel karakter içermeyen veya yaygın sözlük kelimelerine dayanan herhangi bir şifre belirlemeye çalışırken hata alacağınızı unutmayın.
There are three levels of password validation policy:
LOW Length >= 8
MEDIUM Length >= 8, numeric, mixed case, and special characters
STRONG Length >= 8, numeric, mixed case, special characters and dictionary file
Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 1
Parola doğrulamayı etkinleştirip parola girdikten sonra, parola gücü gösterilir ve sunucunuz parolayı değiştirmek isteyip istemediğinizi sorar. Mevcut şifrenizin gösterilen güvenlik seviyesinden memnunsanız, komut isteminde "hayır" için N girin:
Using existing password for root.
Estimated strength of the password: 100
Change the password for root ? ((Press y|Y for Yes, any other key for No) : n
Soruların geri kalanı için Y tuşuna basın ve her istemde ENTER tuşuna basın. Bu, bazı anonim kullanıcıları ve test veritabanını kaldıracak, uzak oturum açmayı devre dışı bırakacak ve MySQL'in yaptığınız değişikliklere hemen uyması için bu yeni kuralları yükleyecektir. Vereceğiniz yanıtları ihtiyacınız doğrultusunda kendinize göre değiştirebilirsiniz.
Bitirdiğinizde, şunu yazarak MySQL konsolunda oturum açıp açamadığınızı test edin:
sudo mysql
Çıktı şöyle olmalıdır:
Your MySQL connection id is 11
Server version: 8.0.27-0ubuntu0.20.04.1 (Ubuntu)
Copyright (c) 2000, 2021, Oracle and/or its affiliates.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
MySQL konsolundan çıkmak için şunu yazın:
mysql> exit
Bye
"mysql_secure_installation" komutu ile bir parola tanımlamış olsanız bile, kullanıcı olarak bağlanmak için yine bir parola girmelisiniz. Bunun nedeni, yönetici MySQL kullanıcısı için varsayılan kimlik doğrulama yönteminin parola yerine "unix_socket" olmasıdır. Bu, PHP uygulamanızdan bağlanmak için yönetici veritabanı kullanıcısını kullanamayacağınız anlamına gelir. Kök MySQL hesabı için bir parola belirlemek, varsayılan kimlik doğrulama yönteminin "unix_socket"tan parolaya değiştirilmesi durumunda bir koruma işlevi görür.
MySQL sunucunuz kuruldu ve güvenli hale getirildi.

PHP'yi Kurma

PHP, dinamik içeriği görüntülemek için kodu işleyecek olan bileşendir. Komut dosyalarını çalıştırabilir, bilgi almak için MySQL veritabanlarınıza bağlanabilir ve işlenen içeriği web sunucunuza verebilir, böylece sonuçları ziyaretçilerinize gösterebilir.
PHP'yi kurmak için bir kez daha apt sisteminden yararlanın. Önce PPA'yı etkinleştirin:
sudo apt install software-properties-common && sudo add-apt-repository ppa:ondrej/php -y
"php" paketine ek olarak, PHP'yi Apache'ye entegre etmek için "libapache2-mod-php8.0"ye ve PHP'nin MySQL veritabanlarına bağlanmasına izin vermek için "php8.0-mysql" paketine ihtiyacınız olacak. Üç paketi ve bağımlılıklarını yüklemek için aşağıdaki komutu çalıştırın:
sudo apt install php8.0 libapache2-mod-php8.0 php8.0-mysql
Bu, PHP'yi sorunsuz bir şekilde kurmalıdır. Birazdan test edeceğiz.

PHP Uzantılarını Yükleme (İsteğe Bağlı)

PHP'nin işlevselliğini genişletmek için bazı ek modüller kurma seçeneğiniz vardır. PHP modülleri ve kitaplıkları için mevcut seçenekleri görmek için:
apt search php-
apt search php8.0
Bu sonuçların tümü, yükleyebileceğiniz isteğe bağlı bileşenlerdir. Size her biri için kısa bir açıklama verecektir. Her modülün ne yaptığı hakkında daha fazla bilgi edinmek için ve daha fazla bilgi için internette arama yapabilirsiniz.
Aşağıdakileri yazarak seçtiğiniz paketin uzun açıklamasına bakabilirsiniz:
apt show paket_adi
Araştırdıktan sonra bir paket kurmak istediğinize karar verirseniz, bunu diğer yazılımlar için yaptığınız gibi "apt install paket_adi" komutunu kullanarak yapabilirsiniz.

FTP Sunucusu Kurulumu

Sisteme uzaktan dosya aktarımını kolayca sağlamak için FTP server kuracağız.
FTP Server için "vsftpd" uygulamasını kullanacağız:
sudo apt-get install vsftpd
Konsol editörü ile "vsftpd.conf" ayar dosyasını açıyoruz:
sudo nano /etc/vsftpd.conf
Belirtilen ayarların başındaki "#" yorum satırını kaldırıyoruz ve aktif hale getiriyoruz:
write_enable=YES
chroot_local_user=YES
FTP'ye giriş yapmak için kullanılacak kullanıcıyı eklemeden önce bilmeniz gereken, yapacağımız işleme göre, kullanıcı adı ile yükleme yapacağımız klasörün adı aynı olmalıdır. Buna göre kullanıcı adı seçiminde bulunmalısınız.
Kullanıcı adını belirliyoruz, ardından şifreyi ve kullanıcı bilgilerini giriyoruz:
adduser ftp_kullanici_adi
Aşağıdaki kodları, ekleyeceğiniz her site için tekrar uygulamalısınız. Kullanıcı adı ile aynı isimde klasör oluşturuyoruz ve içine de "site_adi" adında bir klasör oluşturup sahiplik veriyoruz:
chmod a-w /home/ftp_kullanici_adi
cd /home/ftp_kullanici_adi
mkdir site_adi
chown -R ftp_kullanici_adi /home/ftp_kullanici_adi/site_adi
"vsftpd" servisini yeniden başlatıyoruz.
service vsftpd restart

Virtual Host Kurulumu

Apache web sunucusunu kullanırken, tek bir sunucudan birden fazla web sitesi barındırmak için sanal host seçeneğini kullanabilirsiniz.
Apache, "/var/www/html" dizininden belgeler sunmak üzere varsayılan olarak yapılandırılmıştır. Birden fazla site barındırmak istiyorsanız, bu dizinin değiştirilmesi gerekir. Sanal host kurulumunu, yukarıdaki "FTP Sunucusu Kurulumu" başlıklı yazıda belirtilen FTP sunucusu için oluşturulan dizinlere yapacağız.
"/etc/apache2/apache.conf" dosyasının içerisinde aşağıdaki bölümü buluyoruz:
<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
Şu şekilde değiştiriyoruz:
<Directory /home/ftp_kullanici_adi/>
Options -Indexes +FollowSymLinks +MultiViews
AllowOverride All
Require all granted
</Directory>
"umask" değerini değiştirmediyseniz, web kök dizininizin izinleri doğru olmalıdır, buna şunu yazarak emin olabilirsiniz:
sudo chmod -R 755 /home/ftp_kullanici_adi/site_adi
Apache'nin içerikleri sunabilmesi için doğru yönergelere sahip bir sanal host dosyası oluşturmak gerekir.
"/etc/apache2/sites-available/000-default.conf" adresinde bulunan varsayılan yapılandırma dosyasını doğrudan değiştirmek yerine,
"/etc/apache2/sites-available/site_adi.conf" adresinde yeni bir tane yapalım:
sudo nano /etc/apache2/sites-available/site_adi.conf
Varsayılana benzer, ancak yeni dizin ve alan adımız için güncellenen aşağıdaki kodları "site_adi.conf" içerisine yapıştırın:
<VirtualHost *:80>
ServerAdmin webmaster@localhost
ServerName site_adi
ServerAlias www.site_adi.com
DocumentRoot /home/ftp_kullanici_adi/site_adi
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
"DocumentRoot"u yeni dizinimize ve "ServerAdmin"i site yöneticinizin erişebileceği bir e-postaya güncellemeye dikkat edin. Ayrıca iki yönerge ekledik: Bu sanal ana bilgisayar tanımıyla eşleşmesi gereken temel etki alanını oluşturan "ServerName" ve eşleşmesi gereken diğer adları temel admış gibi tanımlayan "ServerAlias".
İşiniz bittiğinde dosyayı kaydedin ve kapatın.
Şimdi oluşturduğumuz dosyayı aktif hâle getirmek için şunu yazalım:
sudo a2ensite site_adi.conf
Yukarıda yazılan kodları her ekleyeceğiniz site için yapmalısınız.
"000-default.conf" içinde tanımlanan varsayılan site ayarlarını devre dışı bırakalım:
sudo a2dissite 000-default.conf
Her şeyin doğru olduğuna emin olmak için yapılandırma hatalarını test edelim:
sudo apache2ctl configtest
Çıktı "Syntax OK" şeklinde olmalıdır.
Değişikliklerinizi uygulamak için Apache'yi yeniden başlatın:
sudo systemctl restart apache2
Apache artık alan adınızı sunuyor olmalıdır.

phpmyadmin Kurulumu

MySQL'i web üzerinden yönetebilmek için gerekli yazılımdır.

PhpMyAdmin'i Yükleme

En son phpmyadmin sürümünü otomatik olarak indirmek için aşağıdaki kodları yürütün:
DATA="$(wget www.phpmyadmin.net/home_page/version.txt -q -O-)"
URL="$(echo $DATA | cut -d ' ' -f 3)"
VERSION="$(echo $DATA | cut -d ' ' -f 1)"
wget files.phpmyadmin.net/phpMyAdmin/${VERSION}/phpMyAdmin-${VERSION}-all-languages.tar.gz
Ardından, aşağıdaki komutu kullanarak arşivi çıkarın:
tar xvf phpMyAdmin-${VERSION}-all-languages.tar.gz
phpMyAdmin'i manuel olarak yapılandırmak için:
sudo mv phpMyAdmin-*/ /usr/share/phpmyadmin
sudo mkdir -p /var/lib/phpmyadmin/tmp
sudo chown -R www-data:www-data /var/lib/phpmyadmin
sudo cp /usr/share/phpmyadmin/config.sample.inc.php /usr/share/phpmyadmin/config.inc.php
sudo nano /usr/share/phpmyadmin/config.inc.php
Şimdi açılan dosyada aşağıdaki satırı bulun:
$cfg = ''; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */
Tek tırnak işaretleri arasına rastgele 32 karakterlik bir dize atamanız gerekecek. Bunu kolayca yapmak için:
sudo apt install pwgen
pwgen -s 32 1
Çıktısını aldığınız dizeyi alana belirtilen alana yapıştırın:
$cfg = 'BURAYA'
Şimdi apache ayarlarını yapılandıralım:
sudo nano /etc/apache2/conf-available/phpmyadmin.conf
Dosya içerisine:
Alias /phpmyadmin /usr/share/phpmyadmin
<Directory /usr/share/phpmyadmin>
Options FollowSymLinks
DirectoryIndex index.php
</Directory>
<Directory /usr/share/phpmyadmin/libraries>
Require all denied
</Directory>
<Directory /usr/share/phpmyadmin/templates>
Require all denied
</Directory>
<Directory /usr/share/phpmyadmin/setup/lib>
Require all denied
</Directory>
Şimdi uygulayalım:
sudo a2enconf phpmyadmin.conf
sudo systemctl reload apache2.service
Gerekli paketleri kuruyoruz:
sudo apt-get install phpmyadmin php8.0-xml php8.0-mbstring php8.0-bcmath php8.0-gd php8.0-mcrypt php8.0-curl php8.0-zip php8.0-intl php8.0-xsl php-mbstring php7.0-mbstring libapache2-mod-php gettext

phpMyAdmin kimlik doğrulamasını yapılandırma

İlk olarak MySQL Shell'e aşağıdaki satır ile giriş yapacağız:
sudo mysql
Çıkan tabloda MySQL "root" kullanıcısının "authentication_string" değişkeninin boş olduğunu görelim:
SELECT user, authentication_string, plugin, host FROM mysql.user;
"root" kullanıcısının "auth_socket" eklentisini kullandığını görebiliriz. Bunu bir parola ile kimlik doğrulaması yapacak şekilde yapılandırmak için "ŞİFRENİZ" yazan kısma şifrenizi girerek, aşağıdaki komutu uygulamamız gerekir:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'ŞİFRENİZ';
Değişiklikleri onaylayalım:
FLUSH PRIVILEGES;
Şimdi kimlik doğrulama yöntemini kontrol edebiliriz:
SELECT user, authentication_string, plugin, host FROM mysql.user;
Başta bahsettiğimiz "root" "authentication_string" değişkeni artık dolu olmalı.
Sonunda MySQL Shell'den çıkabiliriz:
exit;

PhpMyAdmin Güvenliğini Arttırma

Web sayfasına da ayrı bir şifre koyarak phpmyadmin güvenliğini arttırabiliriz.
Bu yöntem için phpmyadmin .htaccess dosyasını şu şekilde düzenlemeliyiz:
sudo nano /usr/share/phpmyadmin/.htaccess
Kodları yapıştırıyoruz:
AuthType Basic
AuthName "Restricted Files"
AuthUserFile /etc/phpmyadmin/.htpasswd
Require valid-user
Şimdi yeni bir kullanıcı oluşturacağız, burada girilecek kullanıcı adı ve şifre webten ilk ulaşımda istenecek:
sudo htpasswd -c /etc/phpmyadmin/.htpasswd admin
Tamam. Artık /phpmyadmin bağlantısına girdiğinizde ilk olarak bu kullanıcı bilgilerini daha sonra phpmyadmin bilgilerinizi girerek giriş yapabilirsiniz.

Kullanıcı Arayüzlü Uzaktan Erişim Kurulumu (İsteğe Bağlı)

Önce görsel arayüzü kuruyoruz:
sudo apt-get install gnome-core xfce4 xfce4-goodies firefox nano -y --force-yes
Tight VNC Server'ı kuruyoruz.
sudo apt install tigervnc-standalone-server
VNC'yi başlatıyoruz, bizden uzaktan erişimde kullanılacak parolayı istiyor, giriyoruz.
vncserver
İşlemlere devam edebilmek için VNC'yi durduruyoruz.
vncserver -kill :1
Editörle gerekli dosyayı açıyoruz.
sudo nano .vnc/xstartup
Açılan dosyanın içinde sadece şunlar olmalıdır:
xrdb $HOME/.Xresources
xsetroot -solid grey
startxfce4 &
x-terminal-emulator -geometry 80x24+10+10 -ls /usr/share/fonts/X11/ -title "$VNCDESKTOP Desktop" &
x-window-manager &
export XKL_XMODMAP_DISABLE=1
/etc/X11/Xsession
Şimdi bu komutu giriyoruz:
chmod +x ~/.vnc/xstartup
Daha sonra vnc server'ı tekrar başlatabilirsiniz. Burada örnek başlatma komutunu giriyorum. Kendinize göre ayarlayabilirsiniz.
vncserver -geometry 1600x900 -localhost no -depth 24
Windows'ta TigerVNC programını kullanarak IP ve giriş bilgileri girdikten sonra sunucuya uzaktan erişebilirsiniz.
Umarım faydası dokunur. Eklenmesini veya güncellenmesini istediğiniz noktalar olursa, siz de cevap yazarak katkıda bulunabilirsiniz. Mutlu kodlamalar!
Yanıtla
0
0

Bu içerik için bir tepkiniz var mı?

0
0
0
0
0
0
0
0
Teknoloji konusundaki bazı benzer içerikler
İlginizi çekebilecek diğer içerikler
© 2019 - 2024 SoruDenizi v1.4.1
Giriş Yap

Üye Ol
En az 3 en çok 23 karakter, sadece harf ve rakam içerebilir. Boş bırakılamaz En az 6, en çok 36 karakter olmalıdır. Boş bırakılamaz

Kullanıcı Sözleşmesi'ni kabul ediyorum
Şifremi Unuttum
Şifre yenileme bağlantısı e-postanıza gönderilecektir.

Reklamlar Görüntülenemiyor 😞
Hoşgeldiniz, bir reklam engelleyici kullanıyorsunuz gibi görünüyor. Sorun değil. Kim kullanmaz ki?
Reklam engelleyici kullanma hakkınıza saygı duyuyoruz ancak reklam gelirleri olmadan bu siteyi harika tutmaya devam edemeyeceğimizi bilmenizi istiyoruz.
Anlıyorum; reklam engelleyicimi devre dışı bıraktım.
Soru Denizi, ziyaretçilerine daha iyi bir deneyim sağlamak amacıyla çerez (cookie) teknolojisini kullanmaktadır.
Detaylı Bilgi
Tamam