En basit ihtiyaçlarımızdan biri olan static web siteleri için günümüzde en çok tercih edilen yazılımın wordpress olduğunu hepimiz biliyoruz. Bu yazımda AWS üzerinden sunucu açıp, wordpress nasıl kurulur ve yapılandırılır örnek kodlar ile anlatacağım. Öncelikle bu konuda kullanacağım yapıyı sizlere birkaç cümle ile bahsedeyim. Öncelikle AWS’de ücretsiz olarak sunulan 1 GB Ram 1 vCPU özelliklerine sahip server oluşturup sonra da bu server üzerinde eksiksiz bir wordpress siteyi kurucağım. Tabi wordpress bir site için gerekli olan (apache2, php, mysql, phpmyadmin) bütün yazılımları da servera nasıl kuracağımızı kodları ile birlikte size sunacağım.
İlk olarak AWS üzerinde bir free tier hesap oluşturmamız gerekli.
Free tier hesap oluştururken AWS bizden kredi kartı bilgilerimizi girmemizi istiyor fakat ücretli bir server kullanmadığımız sürece kartınızdan herhangi bir ödeme almıyor.
Free tier hesapta istediğiniz kadar 1 GB 1vCPU server açabiliriz fakat toplamda aylık 750 saat kullanım hakkına sahip oluruz.
Ufak bir hesap yaptığımızda 3 tane server çalıştırırsak 10 gün gibi bir sürede kullanım hakkımız dolmuş olur. ( 3 * 24 = 72 750 / 72 = 10.4 )
Artık hesap oluşturduğumuza göre birlikte 1 server hazırlayalım.
İlk olarak AWS Management Console’a gelin ve ekran görüntüsünde ki gibi “launch a virtual machine” seçeneğine tıklayalım.
1.Adımda karşımza gelen ekrandan Ubuntu Server 18.04 LTS server’ını select’e basarak seçiyoruz.
2.Adımda ücretsiz olarak kullanabileceğimiz t2.micro serverını seçiyoruz. Next: Configure Instance details ile bir sonraki adıma geçiyoruz
3.Adımda sayfada herhangi bir değişiklik yapmıyoruz. Next: Add Storage ile bir sonraki adıma geçiyoruz.
4.Adımda Server için disk ayarlıyoruz. Default 8GB değeri gelir wordpress için yeterli aslında fakat biz bu alanı 1024 GB a kadar yükseltebiliriz.Next: Add Tag ile bir sonraki adıma geçiyoruz.
5.Adımda AWS sisteminde sunucumuz için tag lar belirliyebiliriz. Ben sadece Name tagını belirledim.Next: Configure Security Group ile bir sonraki adıma geçiyoruz.
6.Adımda sunucumuzun açılacak tcp,udp portlarını belirliyoruz. Sunucuya erişim sağlayabilmemiz için 22 SSH portunu , WordPress içinde http:80 ve https:443 portlarını açıyoruz.Next: Review and Launch ile bir sonraki adıma geçiyoruz.
7.Adımda server’ı oluştururken seçtiğimiz bütün ayarların özet halini görüntülüyoruz ve ardından Launch a tıklayarak server’ımızın hazırlanmasını bekliyoruz. (1-2 dk içinde hazır olacaktır.)
Launch Dedikten sonra karşımıza sunucuya erişmemiz için key oluşturma ekranı geliyor. Key dosyamıza isim verdikten sonra download key pair’e tıklayarak key dosyaımızı bilgisayara indirelim.
Server’ımızı oluşturduk artık ssh üzerinden erişebiliriz. Ben ssh bağlantılarımı Mobaxterm programı ile yapıyorum sizde ücretsiz sürümünü kullanabilirsiniz.
SSH iler eriştikten sonra LAMP için kurulumlara başlayabiliriz.
1.Root kullanıcı olabilmek için bu kod satırını girelim.
sudo su
2.Apt komutlarıyla liste güncellemesi ve sonra paket güncellemesi yapıyoruz.
apt-get update && sudo apt-get upgrade -y
3.Web server olarak apache2 kuruyoruz
apt install apache2
4.Firewall ayar listesine bakalım
ufw app list
Karşımıza bu şekilde bir liste çıkacaktır
Available applications:
Apache
Apache Full
Apache Secure
OpenSSH
5.Apache Full Firewall ayarını seçiyoruz.
ufw allow in "Apache Full"
6.Server Wan IP’mizi kontrol edelim
ip addr show eth0 | grep inet | awk '{ print $2; }' | sed 's/\/.*$//'
7.Veritabını mysql kurulumunu yapalım.
apt install mysql-server
8.Php7.4 kurulumunu yapabilmek için repository ekleyeceğiz.
apt -y install software-properties-common
add-apt-repository ppa:ondrej/php
9.Paket listesini yeniden güncelliyelim.
apt-get update
10.Artık php7.4 ü kurmaya hazırız. php install edelim.
apt -y install php7.4
11.Mysql veritabanımızı yönetmek için phpmyadmin paketini yükleyelim.
apt install phpmyadmin php-mbstring php-gettext
Komut yazılımı kurduktan sonra bizi bu ekran karşılayacak.Space tuşu ile apache2 yi seçmeniz gerekir. Ok diyip devam ediyoruz.
Yes diyelim bu ekranda.
phpmyadmin için şifre belirlememiz gerek.
12- Php mbstring modülünü aktif edelim
phpenmod mbstring
13.Apache2 servisini restart edelim.
systemctl restart apache2
14.Veritabınında phpmyadmin için kullanıcıları aktif etmek için mysql kullanıcısına geçiş yapalım.
sudo mysql
15.mysql veritabanındaki kullanıcıları listeleyelim.
SELECT user,authentication_string,plugin,host FROM mysql.user;
+------------------+-------------------------------------------+-----------------------+-----------+
| user | authentication_string | plugin | host |
+------------------+-------------------------------------------+-----------------------+-----------+
| root | | auth_socket | localhost |
| mysql.session | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| mysql.sys | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| debian-sys-maint | *CC5AD30AB3B6C688C8932210188638B70202CD06 | mysql_native_password | localhost |
| phpmyadmin | *EBFD072F34E21CCE172741194C2E0CA595BD1AAD | mysql_native_password | localhost |
+------------------+-------------------------------------------+-----------------------+-----------+
5 rows in set (0.00 sec)
16.root kullanıcısı için bir şifre belirleyelim.
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'şifrenizi girin';
17.Yetki işlemini bitirelim.
FLUSH PRIVILEGES;
exit;
18.Bu sefer root olarak mysql kullanıcısı ile işlem yapıcaz.
sudo mysql -u root -p
19.Mysql ve phpmyadminde kullanmak için kendi kullanıcımızı oluşturulalım.
CREATE USER 'Belirlediğiniz Kullanıcı adını girin'@'localhost' IDENTIFIED BY 'şifrenizi girin';
Kendiniz için oluşturduğunuz kullanıcıya yetki verelim.
GRANT ALL PRIVILEGES ON *.* TO 'Belirlediğiniz Kullanıcı adını girin'@'localhost' WITH GRANT OPTION;
Mysql den çıkış yapalım.
exit;
20.Wordpress için gerekli olan php modüllerini yükleyelim.
apt install php-curl php-gd php-mbstring php-xml php-xmlrpc php-soap php-intl php-zip
21.Apache2 servisini restart edelim.
systemctl restart apache2
22.Websitemiz için gerekli dosyalarını içine atacabileceğimiz bir klasör oluşturacağız.Ben /var/www altında wordpressdev klasörünü oluşturdum siz kendinize göre değiştirebilirsiniz.
mkdir /var/www/wordpressdev
23.Apache virtual host conf dosyasını editlemek için apache dizinine gidelim.
cd /etc/apache2/sites-available/
24.Dizin altındaki 000-default.conf editleyelim.
Default conf dosyasının içeriği aşağıdaki gibi olmalıdır.Tabi DocumentRoot ve Directory deki klasör yolunu kendinize göre değiştirmeniz gerekiyor.
# The ServerName directive sets the request scheme, hostname and port that
# the server uses to identify itself. This is used when creating
# redirection URLs. In the context of virtual hosts, the ServerName
# specifies what hostname must appear in the request's Host: header to
# match this virtual host. For the default virtual host (this file) this
# value is not decisive as it is used as a last resort host regardless.
# However, you must set it for any further virtual host explicitly.
#ServerName www.example.com
ServerAdmin webmaster@localhost
DocumentRoot /var/www/wordpressdev
ServerName wordpressdev
ServerAlias wordpressdev
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
# Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
# error, crit, alert, emerg.
# It is also possible to configure the loglevel for particular
# modules, e.g.
#LogLevel info ssl:warn
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
DirectoryIndex index.php index.pl index.cgi index.html index.xhtml index.htm
# For most configuration files from conf-available/, which are
# enabled or disabled at a global level, it is possible to
# include a line for only one particular virtual host. For example the
# following line enables the CGI configuration for this host only
# after it has been globally disabled with "a2disconf".
#Include conf-available/serve-cgi-bin.conf
25.Apache rewrite modülünü açalım.
a2enmod rewrite
26.Apache conf dosyamızı test edelim.
apache2ctl configtest
27.Apache2 servisini restart edelim.
systemctl restart apache2
28.phpMyadmin üzerinden wordpress için veritabanı açalım.phpMyadmin paneline girmek için http://Server_IP/phpmyadmin adresini kullanalım. Not: phpMyadmin’e kurulum yaparken belirlediğimiz root şifresi veya kendimiz için oluşturduğumuz kullanıcı ile girebilirsin. Bknz. Adım 17 ve 20.
Login ekranından giriş yapın.
Veritabanları bölümüne gelelim ve yeni bir veritabanı oluşturalım.
Sonra oluşturduğunuz database’in içine girip kullanıcı yetkilerini ayarlayalım.
29.Artık wordpress dosyalarımızı indirip hazırlamaya başlayalım dosyaları tmp klasörüne indiricez orada gerekli editleri yapıcaz ve son olarak websitemiz için oluşturduğumuz klasöre kopyalayacağız dosyaları.
WordPress son versiyonunu indirelim.
curl -O https://wordpress.org/latest.tar.gz
tar.gz dosyasını açalım.
tar xzvf latest.tar.gz
.htaccess dosyasını oluşturalım.
touch /tmp/wordpress/.htaccess
wp-config-sample.php adını wp-config.php olarak değiştirelim.
cp /tmp/wordpress/wp-config-sample.php /tmp/wordpress/wp-config.php
WordPress kurulum yaparken upgrade klasörüne ihtiyaç duyuyor. Oluşturalım.
mkdir /tmp/wordpress/wp-content/upgrade
/tmp klasörüne içine indirip editlediğimiz wordpress dosyalarını sitemizin klasörüne kopyalayalım.
cp -a /tmp/wordpress/. /var/www/wordpressdev
Sitemiz için oluşturduğumuz klasörün sahipliğini www-data kullanıcısına verelim.
chown -R www-data:www-data /var/www/wordpressdev
Klasör ve dosya izinlerini düzenleyelim.
find /var/www/wordpressdev/ -type d -exec chmod 750 {} \;
find /var/www/wordpressdev/ -type f -exec chmod 640 {} \;
WordPress key dosyalarımızı oluşturalım.
curl -s https://api.wordpress.org/secret-key/1.1/salt/
define('AUTH_KEY', 'M4Flo3jnyOejU|lrQ?p]Gst^lZrK/<=qvwEey>i}|HMYl<RZZSLk6RjjjaN@Mz8l');
define('SECURE_AUTH_KEY', ';]1g,@v;xni^MZ+Gv`=>r4:N$b+!MJ(^&p[#M YluEKg031#{*8]gB]EGn{)JS-P');
define('LOGGED_IN_KEY', 'bekiBS2vMgr^)+{J+{@QsQ0:d$`mw3B4x(mO1@r-aZ#Bx#rehuOOM>~FHorcaIk&');
define('NONCE_KEY', '00~EM=q+Rrt-o-oBvY55a#h`tFEi0.0, %]TQ[oA9A%%ElA<[ArbL`zFBZo>6EG=');
define('AUTH_SALT', '[k6ofHlfmUE?x^KIS!+-C;]Of:z|3&0I=m+^?Yz:+.1,tQoRm6LS$O-S0_SX|^y0');
define('SECURE_AUTH_SALT', 'E<mRC&JN`m#?8$2Y0$me+w O=C9>n(|BVDM9nL+e+@k_6.7OmEAd<VLG~bY~9t-1');
define('LOGGED_IN_SALT', '?jAtR8gvw?Tj^v^!3tE.HYeMuP6q/r{4m)(Dg}(2P<2m>.n{gQ^+++_7>[O*LZ1[');
define('NONCE_SALT', '+E,QTp$?q!i+M9>ZFlw`5[{O*I?[$V6-H{/i1X.+hM3a6^5Lz%~p<!A=9<W4{JTA');
Artık son bir işimiz kaldı. WordPress wp-config.php dosyasını özelleştirip database ayarlarını ve wordpress key’i girip kuruluma hazır hale getireceğiz.
nano /var/www/wordpressdev/wp-config.php
<?php /** * The base configuration for WordPress * * The wp-config.php creation script uses this file during the * installation. You don't have to use the web site, you can * copy this file to "wp-config.php" and fill in the values. * * This file contains the following configurations: * * * MySQL settings * * Secret keys * * Database table prefix * * ABSPATH * * @link https://codex.wordpress.org/Editing_wp-config.php * * @package WordPress */ // ** MySQL settings - You can get this info from your web host ** // /** The name of the database for WordPress */ define( 'DB_NAME', 'Yeni Oluşturduğunuz Database in ismi' ); /** MySQL database username */ define( 'DB_USER', 'Database e erişimi olan yetkili kullanıcı' ); /** MySQL database password */ define( 'DB_PASSWORD', 'Yetkili kullanıcının şifresi' ); /** MySQL hostname */ define( 'DB_HOST', 'localhost' ); /** Database Charset to use in creating database tables. */ define( 'DB_CHARSET', 'utf8' ); /** The Database Collate type. Don't change this if in doubt. */ define( 'DB_COLLATE', '' ); /**#@+ * Authentication Unique Keys and Salts. * * Change these to different unique phrases! * You can generate these using the {@link https://api.wordpress.org/secret-key/1.1/salt/ WordPress.org secret-key service} * You can change these at any point in time to invalidate all existing cookies. This will force all users to have to log in again. * * @since 2.6.0 */ define( 'AUTH_KEY', 'put your unique phrase here' ); define( 'SECURE_AUTH_KEY', 'put your unique phrase here' ); define( 'LOGGED_IN_KEY', 'put your unique phrase here' ); define( 'NONCE_KEY', 'put your unique phrase here' ); define( 'AUTH_SALT', 'put your unique phrase here' ); define( 'SECURE_AUTH_SALT', 'put your unique phrase here' ); define( 'LOGGED_IN_SALT', 'put your unique phrase here' ); define( 'NONCE_SALT', 'put your unique phrase here' ); /**#@-*/ /** * WordPress Database Table prefix. * * You can have multiple installations in one database if you give each * a unique prefix. Only numbers, letters, and underscores please! */ $table_prefix = 'wp_'; /** * For developers: WordPress debugging mode. * * Change this to true to enable the display of notices during development. * It is strongly recommended that plugin and theme developers use WP_DEBUG * in their development environments. * * For information on other constants that can be used for debugging, * visit the Codex. * * @link https://codex.wordpress.org/Debugging_in_WordPress */ define( 'WP_DEBUG', false ); /* That's all, stop editing! Happy publishing. */ /** Absolute path to the WordPress directory. */ if ( ! defined( 'ABSPATH' ) ) { define( 'ABSPATH', dirname( __FILE__ ) . '/' ); } /** Sets up WordPress vars and included files. */ require_once( ABSPATH . 'wp-settings.php' ); define('FS_METHOD', 'direct');
Database alanlarını dolduralım Define ile başlayan keyleri de düzenlelim ve son olarak sayfanın en sonuna define('FS_METHOD', 'direct');
ekleyip kaydedelim. Kuruluma hazırız.
http://Server_IP yazıp erişebiliriz.