Skip to main content
Google Compute Engine üzerinde site barındırma

Google Compute Engine Üzerinde Web Sitesi Barındırma

Bu yazımızda Google Cloud servislerinden biri olan Compute Engine üzerinde site barındırma konusunu ele alacağız. Compute Engine kısaca, farklı konfigüsrasyonlarda sanal makineler yaratmanızı ve bu makineler üzerinde istediğiniz herhangi bir işletim sistemini çalıştırmanızı sağlayan bir Google servisidir. Yazının devamına geçmeden önce üzerinde Debian 8.3 (Linux) işletim sistemi kurulu bir sanal makineyi halihazırda oluşturmuş olduğunuzu varsayıyorum. Ayrıca konuyla ilgili hazırladığımız youtube videosunu da izlemenizde yarar görüyorum. Yazıda, videoda izlediğiniz işlem sırasını takip ederek daha ayrıntılı açıklamalarda bulunacağız.

Başlamadan Önce

Devam etmeden önce ağaşıdaki listeden izleyeceğimiz işlem sırasına göz atabilirsiniz. Bir diğer önem arz eden konu ise Google Cloud SDK ve FTP bağlantımızda kullanacağımız Filezilla FTP Client programlarının bilgisayarınızda kurulu olması.

Google Cloud SDK‘yı indirmek için buraya tıklayınız. Filezilla FTP Client programını indirmek için buraya tıklayınız.

İşlem Sırası
  • Apache Kurulumu (00:00 – 01:19)
  • MySQL Server Kurulumu (01:20 – 03:23)
  • PHP5 ve Gerekli Eklentilerin Kurulumu (03:24 – 06:05)
  • Cloud SDK ile SFTP Bağlatısının Sağlanması (06:06 – 08:11)
  • Apache Root Klasörü Atama (08:12 – 11:10)
Video
Apache Kurumu

Apache, birçok işletim sistemi üzerinde çalışabilien, açık kaynak kodlu bir HTTP sunucusudur. Sanal makinemizin sabit diskinde barındırdığımız içerikleri (web sayfaları ve medyaları) yayınlayabilmemiz için bir HTTP sunucu kullanamamız gerekli. Videomuzun başlangıcında gördüğünüz şekilde sanal makinemiz ile SSH bağlantımızı sağladıktan sonra sırası ile aşağıdaki komutları yazmaya başlayabiliriz.

SSH (Secure Shell), uzak bilgisayarlara güvenli şekilde bağlanmayı ve bu bilgisiayarlar üzerinde (burada uzak bilgisayar oluşturduğumuz sanal makinedir) istenilen komutların işleme konulmasını sağlayan bir protokoldür.SSH üzerinden komut çalıştırılabileceği gibi dosya transferi de yapılabilir. Biz de dosya transferi sırasında bir SSH türevi diyebileceğimiz SFTP protokolünü kullanacağız.

sudo su

Bu komut ile root(super user) kullanıcı yetkilerine sahip oluyoruz. Yapacağımız işlemeler sırasında yetki problemiyle karşılaşmak istemiyorsak kök kullanıcı olmak yeterli olacaktır. Bu sayede bundan sonraki komutlarımızın başına sudo ibaresini eklemenize gerek yok. sudo komutu yapılan işlemlerin kök kullanıcı yetkileriyle gerçekleştirilmesini sağlar, halihazırda kök kullanıcı yetkilerini almış bulunduğumuzdan bundan sonraki komutlarda sudo ibaresini kullanıp kullanmamak size kalacaktır.

sudo apt-get update

Kuruluma başlamadan önce mevcut paket listemizi güncelliyoruz.

sudo apt-get install apache2

apt-get programını kısaca; paket yönetim programı olarak adlandırabiliriz. apt-get ile paket yükleme, kaldırma ve paket listesini güncelleme işlemleri gerçekleştirilebilir. Burada ap-get install komutu ile apache2 paketinin kurlumunu başlatıyoruz.

Kurulum tamamlandıktan sonra apache2 sunucumuz sanal makinemizin 80 numaralı portu üzerinden yayın yapmaya başlayacaktır. Sanal makinemizin IP adresini videoda gördüğünüz şekilde tarayıcımızın adres çubuğuna yazarak Apache Default Page sayfasını görüntüleyebiliriz. Sunucunun yayınlayacağı dosyaların hangi klasörde barındırılacağını Apache Root Klasörü Atama başlığı altında görebilirsiniz. Kurulumu başarı ile tamamladıysanız bir sonraki başlığa geçebilirsiniz.

MySQL Server Kurumu

Yazımızın buraya kadarki kısmında yapmış olduklarımız, statik web sayfaları yayınlamak için yeterli olacaktır. Fakat Php programla dili ile hazırlanmış, veritabanı bağlantısı gerekitiren dinamik web sayfaları yayınlamak için sanal makinemize kurmamız gereken birkaç paket daha var. Bunlardan birincisi, adını Php ile sıkca duyduğunuz MySQL veritabanı yönetim sistemi. Diğer paket ise Php’nin kendisi, PHP5 ve Gerekli Eklentilerin Kurulumu başlığı altında bu konuya detaylarıyla değineceğimiz için şimdilik MySQL Server kurulumuna devam edebiliriz.

sudo apt-get install mysql-server

Tıpkı Apache kurulumunda yaptığımız gibi apt-get install komutunu kullanarak mysql-server kurulumunu başlatıyoruz. MySQL, kurulumun belli bir aşamasına geldiğimizde bizden root kullanıcısı için parola atamamızı isteyecektir. Bu aşamada güvenli ve kolay aklımızda kalıcak bir parola oluştuyoruuz. Videoda kullanmış olduğumuz parola “happy“.

MySQL kurulumunu başarıyla tamamladıktan sonra konfigürasyon işlemlerine geçebiliriz. İlk olarak root kullanıcısı için tablolar üzerinde gerekli tüm izinlerin (okuma,yazma,silme vb.) ayarlanmasını sağlayacağız. Bu işlemi gerçekleştirmek için MySQL içerinde basit bir SQL cümlesi kullanmamız yeterli olacaktır.

mysql -u root -p

Bu komut mysql-server programını root kullanıcısı ile (-u kullanıcı parametre göstergecidir) çağırmamızı sağlayacak. -p paramatersi ise girişte parola kullanacağımızı belirtir. Komutu girdikten mysql-server bizden parola isteycektir. Bu aşamada kurulum sırasında oluşturduğumuz parolayı kullanarak giriş yapabiliriz.

mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '[PAROLA]' WITH GRANT OPTION;

Mysql programı içerisinde çalışırken imlecimiz mysql> şeklini alır. Yukarıdaki SQL cümlesi root (‘root’@’%’) kullanıcısı için bütün veritabanları ve tablolar üzerinde (ON *.*) her türlü izinlerin (ALL PRIVILEGES) atanmasını sağlayacaktır. Enter’a basarak SQL cümlesini çalıştırdıktan sonra Query OK, 0 rows affected (0.01 sec) çıktısını almamız işlemin sorunsuz olarak gerçekleştirdiğini gösterir.

mysql> exit

Bu komutla mysql programında çıkış yapacağız. Artık SQL cümleleriyle herhangi bir işimiz kalmadı. MySQL kurulumunu da bu şekilde tamamlamış oluyoruz. Sonraki başlığımızda PHP5 ve gerekli eklentilerimizi kurulumunu ele alacağız.

PHP5 ve Gerekli Eklentilerin Kurulumu

Php (Hypertext Preprocessor) web uygulamaları geliştirmek amacıyla kullanılan, sunucu taraflı bir betik dilidir. Sanal makinemizde barındırdığımız php sayfalarının yorumlanması için php5 ve sıklıkla kullanılan eklentileri kurmaya başlayabiliriz.

sudo apt-get install php5 php-pear php5-mysql

Yukarıdaki satırda apt-get install komutunu kullanarak tek seferde üç adet paket kurulumunu gerşeçkleştiriyoruz. apt-get ile tek seferde birden fazla paket kurulumu gerçekleştirebiliyoruz. Paktelere kısaca değinecek olursak;

  • php5: Php 5 versiyonu.
  • php-pear: Php için eklenti deposu.
  • php-mysql: Php’nin MySQL ile bağlantı kurmasını sağlayan paketimiz.
sudo service apache2 restart 

Paketlerimizin kurulumu tamamlandıktan sonra apache sunucumuzu yeniden başlatmamızda yarar var. bu sayede php kurulumu ile gelen ve apache sunucumuzu da ilgilendiren değişliklerin dikkate alınmasını sağlamış oluyoruz.

sudo apt-get install php-gd

Php’nin grafik işlmeleri yapmak için kullandığı php-gd kütüphanesini yüklemekte yarar görüyorum ki yazımızın sonunda en temel php işlemlerini yerine getirebilecek bir ortam elde etmek niyetindeyim. Kurulumun bu aşamasında sizde gerekli gördüğünüz paketleri kuarabilirsiniz.

sudo service apache2 restart 

sudo apt-get install php-curl

CURL eklentisi, özellikle Rest API uygulamalarında ve farklı türlerdeki sunucular ile veri alışverişi gerektiren durumlarda kullanabileceğimiz bir eklenti olduğundan kurmakta fayda görüyorum.

sudo service apache2 restart 

Apache sunucumuz ile doğrudan ve dolaylı olarak ilintili her paket kurulumundan sonra sunucumuzu yeniden başlatmamız gerecektir. Bütün kurulumları tamamladıktan sonra FTP bağlantımızı sağlayabiliriz. Sonraki başlıkta bu konu ile ilgili işlemleri göreceksiniz.

Cloud SDK ile SFTP Bağlatısının Sağlanması

Yazımıza başlamadan hemen önce belirttiğimiz iki uygulama bilgisayarınızda kurulu ise videodaki şekilde, VM Instances listemizin Connect seçeneklerinden “View gcloud command” butonuna basarak gcloud üzerinde çalıştıracağımız komut satırına ulaşabilirsiniz. Daha sonra bilgisayarımızda kurulu olan Google Cloud SDK Shell çalıştırıyoruz. Karşımıza gelen komut istemci penceresine bu komut satırını yapıştırıp enter tuşuna basarak çalışmasını sağlıyoruz.

gcloud compute --project "siircepte" ssh --zone "europe-west1-b" "happycoderz-linux"

Benim sanal makinem için ulaştığım komut satırı bu şekilde. Siz de buna benzer bir komut satırı ile karşılaşacaksınız. Bu komut satırı çalıştıktan sonra, SDK ile birlikte bilgisayarımıza gelen ve bir SSH Client olan PuTTY ekranımızda belirecek. Komut satırına baktığımızda; aslında yaptığımız şeyin sanal makinemize SDK üzerinden bağlanmak olduğunu farketmişsinizdir.

Bu aşamada bu şekilde bağlantı kurmamızın sebebi; PuTTY‘nin bizim için SSH Key dosyalarını oluşturup bilgisayarımızın C:\Kullanıcılar\[KULLANICI]\.ssh\ konumunda saklamasıdır. Oluşan bu SSH Key dosyalarını SFTP bağlatısı kurmak için kullanacağız.

PuTTY penceresindeyken;

whoami

Komutunu çalıştırarak hangi kullanıcı ile işlem yaptığımızı öğrenelim. Bu kullanıcı adını daha sonra SFTP kullanıcısı olarak kullanacağız.

Artık bağlantı için gerekli bütün bilgileri ve SSH Key dosyalarını edindiğimize göre Filezilla programını açabilir ve videodaki işlemleri sırası ile gerçekleştirebiliriz. İnterneti yavaş veya videoda sorunla karşılaşan arkadaşların olması durumuna karşın aşağıda işlemleri sırasıyla yazacağım.

Filezilla üzerinde, Düzen > Ayarlar menüsü kullanılarak Ayarlar penceresine ulaşıyoruz. Pencerenin sol kısmındaki listeden SFTP elemanına tıklayarak, SFTP ile ilgili ayarlara ulaşabiliriz. Burada Add Key File… butonuna basarak bilgisayarımızın C:\Kullanıcılar\[KULLANICI]\.ssh\ konumunda bulunan google_compute_engine.ppk dosyasını Kişisel Anahtar Listesi ekliyoruz. Ardından Ayarlar penceresini kapatarak Site Yöneticisini açıyoruz.
Burada yeni bağlantı ekleyerek bağlantı parametrelerini aşağıdaki şekilde tanımlamamız bağlantı sağlamamıza yetecektir.

  • Sunucu: Bu alana sanal makinemizin IP adresini yazıyoruz.
  • Oturum Açma Tipi: Normal seşeçneğini seçememiz yeterli olacaktır.
  • Kullanıcı: PuTTY’den edindiğimiz kullanıcı adını bu alana yazacağız.

Bağlantımızı oluşturduktan sonra artık sunucumuza bağlanabiliriz. Sanal makinemizin /home/[KULLANICI ADI]/ konumuna bağlanacağız. Tanımlı kullanıcı olarak yazma,okuma ve silme izinlerini edindiğimiz konum burasıdır. Sanal makinede başka bir konuma FTP aracılığı ile dosya yüklemeye çalıştığınızda bu işlemin gerçekleşmediğini göreceksiniz.

Tanımlı olarak gelen /var/www konumuna mevcut kullanıcı izinleri ile dosya yükleyemediğimizden apache sunucumuzun root klasör konfigürasyonlarını düzenlememiz gerekecek. Bir sonraki başlıkta başlıkta bu konu ile ilgili işlemleri gerçekleştireceğiz.

Apache Root Klasörü Atama

Apache sunucumuzun konfigürasyon dosyalarına ulaşmak için aşağıdaki işlemleri sırasıyla gerçekleştirmemiz gerekiyor.

cd /etc/apache2

Apache konfigürasyon dosyasının bulunduğu klasöre geçiş yapıyoruz.

nano apache2.conf

nano programı ile apache2.conf isimli konfigürasyon dosyamızın içeriğini görüntülüyoruz. nano SSH üzerinde dosya içeriğini düzenlemeye yarayan bir porgramdır.

<Directory /var/www/>
Options Indexes FolowSymLinks
AllowOverride None
Require all granted
</Directory>

Yukarıda gördüğünüz içeriği konfigürasyon dosyamızın içerisinde bulup aşağıdaki şekilde değiştirmemiz gerekli.

<Directory [FTP İLE BAĞLANDIĞIMIZ KLASÖR YOLU]>
Options Indexes FolowSymLinks
AllowOverride All
Require all granted
</Directory>

[FTP İLE BAĞLANDIĞIMIZ KLASÖR YOLU] = /home/sabri

Yukarıdaki içerikte AllowOverride All düzenlemesi ile .htaccess dosyamızın çalışma anında dikkate alınmasını sağlıyoruz. Konumla ilgili düzenlememiz ise sunucumuzun root klasörü olarak belirtilen konumu kullanmasını sağlayacaktır. Düzenlemeyi tamamladıktan sonra Ctrl+X tuş kombinasyonunu kullanarak nano programından çıkış yapabiliriz. Çıkış sırasında dosyanızı aynı isimle kaydetmeyi unutmayın.

Daha sonra aşağıdaki komutu kullanarak sites-enabled klasörüne geçelim.

cd sites-enabled
nano 000-default.conf

Tıpkı ilk konfigürasyon dosyamızda yaptığımız gibi bu konfigürasyon dosyamızıda nano ile düzenlemeye başlıyoruz.

DocumentRoot var/www/html

Yukarıdaki içeriği konfigürasyon dosyamızın içerinde bulup aşağıdaki gibi düzenliyoruz.

DocumentRoot [FTP İLE BAĞLANDIĞIMIZ KLASÖR YOLU]/public_html

Bu düzenleme ile FTP konumumuzun içerisinde yer alan public_html isimli klasörü root dizin olarak atamış olduk. Bu konumda bulunduracağımız içerikler sunucumuz tarafında yayınlanacak olan içerikleridir. Düzenlemeyi tamamladıktan sonra Ctrl+X tuş kombinasyonunu kullanarak nano programından çıkış yapabiliriz. Çıkış sırasında dosyanızı aynı isimle kaydetmeyi unutmayın.

sudo service apache2 restart

Son olarak yaptığımız değişiklilerin dikkate alınması için apache sunucumuzu yeniden başlatmamız gerecek.

Bu noktadan sonra FTP ile bağlantı kurduğunuz konumda public_html isminde bir klasör oluşturabilir, yayınlamak istediğiniz her türlü içeriği bu klasörün içerisine transfer edebilirsiniz. Videoda bu konuyla ilgili küçük bir örneğe de yer vermiş bulunuyorum. Programlama yeteneğiniz ve hayal gücünüz dahilinde oluşturduğunuz uygulamalarınızı Google Compute Engine üzerinde yayınlamayı artık öğrenmiş bulunmaktasınız. Daha sonraki yazılarımızda görüşmek üzere.

Google Compute Engine Üzerinde Web Sitesi Barındırma” hakkında 1 yorum

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir