IT & IoT Security | Cloud | It's all about the life itself

Nothing in life is as important as you think it is, while you are thinking about it.

AWS Backup WordPress to S3

Merhaba,

Önceki yazılarımda elastic beanstalk,elasticache ve cloudfront ile bir web uygulamasının aws üzerinde yayınlanmasından bahsetmiştim. Beanstalk uygulamaların dağıtımı ve yönetimi için, elasticache veritabanlarında cache cluster için, cloudfront static içeriği ayırmak ve içerik dağıtım ağı(CDN) servisi olarak kullanılmaktaydı.

Yeni yazımda bir reel hayat senaryosundan bahsetmek istiyorum. Yazının Bölüm ‘leri aşağıdaki başlıklardan oluşacaktır.

Senaryo: Farklı bir servis sağlayıcısında yayınlanan web uygulamasının AWS üzerine aktarılması.

Web uygulaması olarak wordpress uygulamasını seçtim. Çalışmayı, production’da yayınladığım web sitem üzerinde yaptım:) Farklı bir servis sağlayıcısında, wordpress üzerinde yayınladığım kişisel blog’umun sistem mimarisini biraz farklılaştırarak AWS üzerine aldım. Senaryomda ve yazı dizisinin bütününde aşağıdaki konuları incelemiş olacağım.

  • Kişisel bloğumun yedeğini almak için bir yöntem/eklenti(plugin) seçtim.
  • Yedeği AWS S3 üzerine aldım.
  • Elastic beanstalk ile, modifiye ettiğim wordpress web uygulaması kodlarını AWS’ye yükledim.
  • Elastic Beanstalk’un sunduğu Elastic Load Balancer ve Auto-Scaling servislerinden faydalanmış oldum.
  • WordPress’in static content’ini AWS S3 üzerine aktardım.W3 Total Cache eklentisini kullandım.
  • S3, static web site hosting için sunduğu yapılandırma seçeneğini kullandım.
  • Yedek almak için kullandığım plugin ile aldığım yedeği AWS üzerindeki yeni ortama yükledim.
  • Cloudfront ile distribution yapılandırarak static content’in AWS S3 üzerinden, dynamic content’in AMI(elastic block store,ebs) üzerinden sunulmasını sağladım.

Okumakta olduğunuz bölümünde, wordpress uygulamasın yedeğinin AWS S3’e alınmasından bahsedeceğim. WordPress’in yedeğinin alınması için çeşitli pluging’ler mevcut. Aralarında en kullanışlı olduğunu düşündüğüm backup plugin’i, http://updraftplus.com/ adresinde erişebileceğiniz plugin’dir.

clip_image002

Ekletinin premium versiyonunu kullanmanızı öneriyorum. Eklenti ile AWS S3’e yedek alabilmeniz için eklentide ve aws tarafında yapmanız gereken bazı ayarlar mevcut. AWS S3 üzerinde yedeklerinizi barındıracağınız bir bucket oluşturmalısınız. Bucket’e erişim izni olan bir IAM user oluşturmalısınız. IAM user’ın bucket’a erişim iznini IAM policy ile atayabilirsiniz. Eklenti üzerindeki ayarlar menüsünde, AWS S3’e erişimde kullanılacak erişim ve bucket bilgisini yapılandıracaksınız.

AWS tarafındaki önemli yapılandırmalardan biri, S3 bucket’a erişecek kullanıcı için hazırlanması gereken policy’dir(erişim izni). Aşağıdakine benzer bir policy ile gereken erişim iznini sağlayabilirsiniz.

{

“Version”: “2012-10-17”,

“Statement”: [

{

“Effect”: “Allow”,

“Action”: [

“s3:ListBucket”,

“s3:GetBucketLocation”,

“s3:ListBucketMultipartUploads”

],

“Resource”: “arn:aws:s3:::bucket_ismi“,

“Condition”: {}

},

{

“Effect”: “Allow”,

“Action”: [

“s3:AbortMultipartUpload”,

“s3:DeleteObject”,

“s3:DeleteObjectVersion”,

“s3:GetObject”,

“s3:GetObjectAcl”,

“s3:GetObjectVersion”,

“s3:GetObjectVersionAcl”,

“s3:PutObject”,

“s3:PutObjectAcl”,

“s3:PutObjectAclVersion”

],

“Resource”: “arn:aws:s3:::bucket_ismi/*”,

“Condition”: {}

},

{

“Effect”: “Allow”,

“Action”: “s3:ListAllMyBuckets”,

“Resource”: “*”,

“Condition”: {}

}

]

}

AWS IAM servisinde oluşturduğum user’a üstteki policy’yi uygulamadım. Policy’nin alt kısmında ListAllBuckets iznini vermeden de deneyebilirsiniz. Bazı durumlarda bu izni olmadan S3 içeriği görüntülenemediğinden test hatası alıyorsunuz ama işleminizi gerçekleştirebiliyorsunuz(Ör: W3 Total Cache eklentisi ve aws entegrasyonu).

AWS’de oluşturduğum IAM user aşağıdaki gibidir.

clip_image003

Updraft eklentisinin yapılandırması için AWS tarafında üstteki bahsettiğim detaylar yeterlidir. Eklentide aşağıdaki ayarları yaparak S3’e yedek alabilirsiniz.

clip_image005

Yedeğe dahil etmek istediğiniz içeriği üstteki menüden seçiniz.

clip_image007

Database’in yedeklenmesinde şifreleme kullanmak için üstteki yapılandırmayı kullanabilirsiniz.

clip_image009

Raporlama için üstteki yapılandırmayı kullanabilirsiniz.

clip_image010

Eklentinin şimdilik desteklediği depolama alanları üstteki gibidir.

clip_image012

S3’e yedek alabilmesi için eklentiye üstteki bilgileri sağlamanız gerekiyor. Daha önce AWS tarafında IAM user’ını yapılandırmıştık. Oradaki bilgileri üstteki menülerde kullanıyoruz.

clip_image013

Eklentide yaptığınız ayarları kaydedikten sonra ayarları test ediniz. Test sonucu üstteki gibiyse iki farklı servis sağlayıcısı arasındaki bağlantıyı sağlamış oluyorsunuz.

clip_image015

Backup menüsünden yedek alma işlemini başlatabilirsiniz. Yedek işlemi tamamlandıktan sonra size e-mail gönderilecektir. S3’te açtığınız bucket’a bakarak, eklentinin alınan yedeği S3’te konumlandırdığını görebilirsiniz.

clip_image016

Test sisteminde aldığım yedek üstte görüldüğü üzere AWS S3 üzerine konumlandırılmıştır. Yazımın bu bölümünü tamamlamış oldum.

Herkese sorunsuz ve neşeli günler dilerim.