Linux’ta Web Geliştiriciliği Kocaeli Üniversitesi Linux Günü Burak Oğuz EMO Ankara Şubesi FindikProject ve MyDLP Geliştiri...
İçerik <ul><li>Apache   </li></ul><ul><li>Linux'ta Web Geliştirme Dilleri ve Çatıları </li></ul><ul><ul><li>Php </li></ul>...
Apache <ul><li>Apache 1996 yılından bu yana en popüler web sunucusudur. </li></ul><ul><li>Nisan 1996'da %29 olan kullanım ...
Apache
Apache <ul><li>Mevcut sürümler </li></ul><ul><ul><li>Apache 1.3.37 - Destek modunda, geliştirme yok </li></ul></ul><ul><ul...
Apache – Dosyalar <ul><li>Dosya lokasyonları (CentOS 5) </li></ul><ul><ul><li>Modüller - /usr/lib/httpd/modules </li></ul>...
Apache – Çok Süreçlilik Modülleri <ul><li>Apache Web Sunucusu, birçok değişik ortamda kullanılabilmek için çeşitli süreç m...
Apache – Çok Süreçlilik Modülleri <ul><li>Sunucu, belli bir sitenin ihtiyaçlarına uygun olarak daha iyi kişiselleştirilebi...
Apache – Prefork MPM <ul><li>Bu çok süreçlilik modülü (MPM) Apache 1.3’ün yaptığı gibi evresiz ve çocuk süreçlerin önceden...
Apache – Prefork MPM <ul><li>Sağlam fakat yavaştır </li></ul><ul><li>Bir tane ana sunucu ve bunun altında çalışan işçilerd...
Apache – Worker MPM <ul><li>Bu çok süreçlilik modülü (MPM) hem çok süreçli hem de çok evreli olabilen melez bir sunucu olu...
Apache – Worker MPM <ul><li>Çoklu işlem ve çoklu kanal desteği bulunur </li></ul><ul><li>Her işçi işlem birden fazla bağla...
Apache – Worker MPM <ul><li>Ayarlar </li></ul><ul><ul><li>StartServers  – En başta başlatılacak işçi sunucu sayısı </li></...
Apache - Belgeler <ul><li>Çoğu Türkçeleştirilmiş belgelere şu adresten ulaşabilirsiniz: </li></ul><ul><ul><li>http://httpd...
Apache – httpd.conf  <ul><li>httpd.conf dosyası içerisinde her ayar komutunun detaylı açıklaması bulunur. </li></ul><ul><l...
Apache - httpd.conf <ul><li>Önemli ayar komutları </li></ul><ul><ul><li>ServerRoot – Apache kurulumunun yapıldığı dizin </...
Apache – httpd.conf <ul><ul><li>DocumentRoot – Sunucunun dosyaları sunacağı ön tanımlı dizin </li></ul></ul><ul><ul><li>Op...
Apache – Virtual Host <ul><li>Apache’de iki tip virtual host desteği bulunmaktadır. </li></ul><ul><ul><li>İsim tabanlı </l...
İsim tabanlı Virtual Host <ul><li>NameVirtualHost *:80 </li></ul><ul><li><VirtualHost *:80> </li></ul><ul><li>ServerName w...
Linux ve Web Programlama <ul><li>Linux’ta popüler olarak kullanılan web programlama dilleri şu şekilde listelenebilir </li...
PHP <ul><li>PHP ,  pop ü l e r,  basit ve hafif bir sunucu-tabanlı betik dilidir. PHP ile dinamik web sayfaları oluşturabi...
PHP – ZendFramework <ul><li>ZendFramework, basit ve gelişmiş yapısı ile birçok konuda çok çeşitli kütüphaneler sağlar.  </...
PHP - CakePHP <ul><li>CakePHP, PHP ile MVC ve ORM ile hızlı geliştirme yapabilmenizi sağlayan bir geliştirme çatısıdır. </...
PHP - Symfony <ul><li>Symfony, php üzerinde geliştirme hızını arttırmak amacı ile web sayfalarının oluşturulmasını ve bakı...
Java <ul><li>Java 1995’ten bu yana önceleri Sun ve şimdilerde Oracle tarafından geliştirilen bir programlama dilidir. </li...
Java <ul><li>http://en.wikipedia.org/wiki/File:JavaPlatform.png </li></ul>
Java Web Geliştirme <ul><li>Servlet barındırıcıları </li></ul><ul><ul><li>Tomcat </li></ul></ul><ul><ul><li>Jetty </li></u...
Java - Maven <ul><li>Maven, proje ayarlarınızın düzgün bir şekilde tutularak bağımlılıklarınızın otomatik çözümlenmesi, sü...
Java - Spring <ul><li>Java kurumsal geliştirme için popüler ve kararlı bir uygulama çatısıdır.   </li></ul><ul><li>Esas am...
Java - JSF <ul><li>JSF bir standart(JSR-314) olup bu standartı uygulayan birçok API mevcuttur.Bu API’lar </li></ul><ul><ul...
Java – Apache Wicket <ul><li>Apache Wicket ile amaçlanan diğer Java web geliştirme çatılarındaki eksiklik olarak görülen d...
Java – Google Web Toolkit <ul><li>Java GWT ile tarayıcı tabanlı kararlı uygulamalar geliştirebilirsiniz.  </li></ul><ul><l...
Java ve Linux <ul><li>Paket yöneticiniz ile Java JDK’yı kurun. </li></ul><ul><li>Paket yöneticiniz ile Apache Maven’ı kuru...
Python <ul><li>Python 1989 yılından bu yana geliştirilmekte olan üst seviye nesne tabanlı bir betik dilidir. Standart kütü...
Python - Django <ul><li>Django, yüksek seviye bir Python web geliştirme çatısıdır. Özellikleri </li></ul><ul><ul><li>ORM <...
Ruby <ul><li>Ruby, 1990ların ortasında Japonya’da  Perl, Smalltalk, Eiffel  ve  Lisp  özelliklerinden esinlenerek oluşturu...
Ruby – Ruby on Rails <ul><li>MVC altyapısı ile çevik geliştirme yöntemlerini birleştiren bir çatıdır. Kullanan web siteler...
Ruby – Ruby on Rails <ul><li>Ayarlar üzerinde anlaşma </li></ul><ul><ul><li>MVC yapınız içerisinde  Sale  adında bir model...
Karşılaştırma <ul><li>http://www.cmswire.com/cms/industry-news/php-vs-java-vs-ruby-000887.php </li></ul>
Karşılaştırma OS : Ubuntu Gutsy Gibbon 7.10 Kernel : 2.6.22-15-generic CPU : Intel(R) Core(TM) Duo CPU T2600 @ 2.16GHz RAM...
Mono – Linux ama değil gibi de <ul><li>.Net uygulamalarınızın Linux’ta derlenebilmesini ve kullanılabilmesini sağlar. Bile...
Mono – Linux ama değil gibi de <ul><li>Faydaları </li></ul><ul><ul><li>Popüler bir yapı olan .Net dilleriyle oluşturulan u...
Mono – ASP .NET <ul><li>ASP.NET uygulamalarınızı Apache ve mod_mono ile kolayca Linux sistemlere kurabilirsiniz.  </li></u...
Bunların Dışında <ul><li>Perl – CGI </li></ul><ul><li>Erlang  </li></ul><ul><li>ve hatta Bash ile web programlama yapabili...
Dillerin ve IDElerin Kurulumu <ul><li>Kullandığınız Linux dağıtımının paket yöneticisi ile gerekli dil paketlerini kurun v...
Teşekkürler Sorularınız? [email_address]
Upcoming SlideShare
Loading in …5
×

2010 Kocaeli Linux Günleri - Linux Web Geliştiriciliği

1,380 views

Published on

Kocaeli Linux Günlerinde Web Geliştiriciliği ile ilgili yaptığım sunum

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,380
On SlideShare
0
From Embeds
0
Number of Embeds
9
Actions
Shares
0
Downloads
22
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide
  • Bağlantıları dinleyip gerektiğinde onlara hizmet sunan çocuk süreçleri devreye almak tek bir denetim sürecinin sorumluluğundadır. Apache daima, gelen isteklere hizmet vermeye hazır bekleyen en fazla sayıda sunucu sürecini yedekte tutmaya veya boşta bekletmeye çalışır. Bu suretle, istemcilere isteklerinin sunulması için yeni çocuk süreçlerin çatallanmasını beklemek gerekmez. Ana sürecin istekleri sunacak çocuk süreçleri oluşturma işlemini nasıl gerçekleştireceği StartServers, MinSpareServers, MaxSpareServers ve MaxClients yönergeleri ile düzenlenir. Apache kendiliğinden her duruma çok iyi uyum sağladığından, genelde, çoğu sitenin bu yönergelerin öntanımlı değerlerini değiştirmesi gerekmez. Aynı anda 256’dan fazla isteğe hizmet sunacak sitelerin MaxClients değerini arttırmaları gerekebilir. Ancak, fiziksel belleği yeterli olmayan sitelerin de sunucunun belleği diske takaslamasını önlemek için bu değeri azaltmaları gerekebilir. Süreç oluşturmanın ayarlanması ile ilgili daha fazla bilgi edinmek için başarım arttırma ipuçları belgesine bakınız. Unix altında 80. portu dinleyebilmek için ana sürecin root tarafından çalıştırılmış olması gerekirse de çocuk süreçler Apache tarafından daha az yetkili bir kullanıcının aidiyetinde çalıştırılırlar. Apache’nin çocuk süreçlerinin kullanıcı ve gruplarını ayarlamak için User ve Group yönergeleri kullanılır. Çocuk süreçlerin sunacakları içeriği okumaya yetkili olmaları gerekir, fakat bu yetkinin mümkün olduğunca kısıtlı tutulmasına çalışılmalıdır. MaxRequestsPerChild yönergesi ana sunucunun eski süreçleri öldürüp yenilerini oluşturmayı ne kadar sıklıkla yapacağını denetler.
  • Çocuk süreçleri devreye almaktan tek bir süreç (ana süreç) sorumludur. Her çocuk süreç ThreadsPerChild yönergesinde belirtilen sayıda evre konuşlandırır. Bunlardan ayrı olarak, bir dinleyici evre bağlantıları dinleyip gelenleri işlenmek üzere bu sunucu evrelerinden birine aktarır. Apache daima, gelen isteklere hizmet sunmaya hazır yedek veya boştaki sunucu evrelerinden oluşan bir havuzu canlı tutmaya çalışır. Bu suretle, istemcilere isteklerinin sunulması için yeni çocuk süreçlerin çatallanmasını, dolayısıyla yeni evrelerin konuşlandırılmasını beklemek gerekmez. Başlangıçta çalıştırılacak çocuk süreçlerin sayısı StartServers yönergesinde belirtilir. Apache, çalışma süresi boyunca MinSpareThreads ve MaxSpareThreads yönergeleri ile belirtilen sınırlar dahilinde kalmak üzere gerektiğinde süreçleri öldürerek gerektiğinde yenilerini devreye alarak tüm süreçlerdeki toplam evre sayısını sabit tutmaya çalışır. Bu işlem kendiliğinden çok iyi yürüdüğünden bu yönergelere öntanımlı değerlerinden farklı değerlerin atanması nadiren gerekli olur. Aynı anda hizmet sunulabilecek istemcilerin sayısı (yani, tüm süreçlerin toplam evre sayısı) MaxClients yönergesi ile belirlenir. Etkin çocuk süreçlerin sayısı ise MaxClients yönergesindeki değerin ThreadsPerChild yönergesindeki değere bölünmesi ile elde edilir. Bu iki yönerge aynı anda etkin olabilecek çocuk süreçlerin ve her çocuk süreçteki sunucu evreleri sayısının üst sınırını belirler ve bu sınır sadece ana sunucu tamamen durdurulup yeniden başlatılarak değiştirilebilir. ServerLimit yönergesinin değeri etkin çocuk süreç sayısının üst sınırı olup MaxClients yönergesindeki değerin ThreadsPerChild yönergesindeki değere bölünmesi ile elde değere eşit veya bundan küçük olması gerekir. ThreadLimit yönergesinin değeri ise sunucu evreleri sayısının üst sınırını belirler ve ThreadsPerChild yönergesindeki değerden büyük veya ona eşit olması gerekir. Eğer bu yönergelere öntanımlı değerlerinden farklı bir değer atanacaksa bu atamaların diğer worker yönergelerinden önce yapılması gerekir. Sonlandırma sırasında etkin çocuk süreçlere ek olarak mevcut istemci bağlantılarını işleme sokmaya çalışan tek bir sunucu evresinden başka fazladan bir çocuk süreç etkin kalabileceği gibi sonlandırılacak süreç sayısının en fazla MaxClients olması gerekirse de gerçekte sayı bundan küçük olabilir. Şöyle bir işlemle tek bir çocuk sürecin sonlandırılması iptal edilerek bu gibi durumlara karşı önlem alınabilir: * MaxRequestsPerChild yönergesinin değeri sıfır yapılır. * MaxSpareThreads ve MaxClients yönergelerinin değerleri birbirine eşitlenir.
  • Symfony is a web application framework for PHP projects. It aims to speed up the creation and maintenance of web applications, and to replace the repetitive coding tasks by power, control and pleasure. The very small number of prerequisites make symfony easy to install on any configuration; you just need Unix or Windows with a web server and PHP installed. It is compatible with almost every database system. In addition, it has a very small overhead , so the benefits of the framework don&apos;t come at the cost of an increase of hosting costs. Using symfony is so natural and easy for people used to PHP and the design patterns of Internet applications that the learning curve is reduced to less than a day. The clean design and code readability will keep your delays short. Developers can apply agile development principles (such as DRY , KISS or the XP philosophy) and focus on applicative logic without losing time to write endless XML configuration files. Symfony is aimed at building robust applications in an enterprise context . This means that you have full control over the configuration: from the directory structure to the foreign libraries, almost everything can be customized. To match your enterprise&apos;s development guidelines, symfony is bundled with additional tools helping you to test, debug and document your project. Last but not least, by choosing symfony you get the benefits of an active open-source community. It is entirely free and published under the MIT license . Symfony is sponsored by Sensio Labs , a French Web Agency well known for its innovative views on web development.
  • In all the Wicket examples, you have to put all files in the same package directory. This means putting the markup files and the java files next to one another. It is possible to alter this behavior, but that is beyond the scope of this example. The only exception is the oblibatory web.xml file which should reside in the WEB-INF/ directory of your web application root folder. If you wish to start building this example, you may want to take a look at the Wicket Quickstart project, which provides a quick way of getting up and running without having to figure things out yourself. The Quickstart project contains the necessary build files (Ant and Maven), libraries, minimal set of Java and markup files and an embedded Jetty server to run your application without having to go through the whole build-deploy cycle. HelloWorldApplication.java Each Wicket application is defined by an Application object. This object defines what the home page is, and allows for some configuration. import org.apache.wicket.protocol.http.WebApplication; public class HelloWorldApplication extends WebApplication { /** * Constructor. */ public HelloWorldApplication() { } /** * @see org.apache.wicket.Application#getHomePage() */ public Class getHomePage() { return HelloWorld.class; } } Here you can see that we define wicket.examples.helloworld.HelloWorld to be our home page. When the base URL of our application is requested, the markup rendered by the HelloWorld page is returned. HelloWorld.java import org.apache.wicket.markup.html.WebPage; import org.apache.wicket.markup.html.basic.Label; public class HelloWorld extends WebPage { /** * Constructor */ public HelloWorld() { add( new Label(&amp;quot;message&amp;quot;, &amp;quot;Hello World!&amp;quot;)); } } The Label is constructed using two parameters: &amp;quot;message&amp;quot; &amp;quot;Hello World!&amp;quot; The first parameter is the component identifier, which Wicket uses to identify the Label component in your HTML markup. The second parameter is the message which the Label should render. HelloWorld.html The HTML file that defines our Hello World functionality is as follows: &lt;html&gt; &lt;body&gt; &lt;span wicket:id=&amp;quot;message&amp;quot; id=&amp;quot;message&amp;quot;&gt; Message goes here &lt;/span&gt; &lt;/body&gt; &lt;/html&gt; In this file, you see two elements that need some attention: the component declaration &lt;span wicket:id=&amp;quot;message&amp;quot;&gt; the message Message goes here The component declaration consists of the Wicket identifier wicket and the component identifier message. The component identifier should be the same as the name of the component you defined in your WebPage. The message between the &lt;span&gt; tags is removed when the component renders its message. The final content of the component is determined by your Java code. web.xml web.xml In order to deploy our HelloWorld program, we need to make our application known to the application server by means of the web.xml file. &lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&gt; &lt;!DOCTYPE web-app PUBLIC &amp;quot;-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN&amp;quot; &amp;quot;http://java.sun.com/dtd/web-app_2_3.dtd&amp;quot;&gt; &lt;web-app&gt; &lt;display-name&gt; Wicket Examples &lt;/display-name&gt; &lt;filter&gt; &lt;filter-name&gt; HelloWorldApplication &lt;/filter-name&gt; &lt;filter-class&gt; org.apache.wicket.protocol.http.WicketFilter &lt;/filter-class&gt; &lt;init-param&gt; &lt;param-name&gt; applicationClassName &lt;/param-name&gt; &lt;param-value&gt; org.apache.wicket.examples.helloworld.HelloWorldApplication &lt;/param-value&gt; &lt;/init-param&gt; &lt;/filter&gt; &lt;filter-mapping&gt; &lt;filter-name&gt; HelloWorldApplication &lt;/filter-name&gt; &lt;url-pattern&gt; /* &lt;/url-pattern&gt; &lt;/filter-mapping&gt; &lt;/web-app&gt; In this definition you see the Wicket filter defined, which handles all requests. In order to let Wicket know which application is available, only the applicationClassName filter parameter is needed. Also, notice the url-mapping to /*. The Wicket filter will only process requests that are Wicket requests. If a request is not Wicket related, the filter will pass the request on to the chain. This ensures that (static) resources outside the realm of the Wicket application, such as style sheets, JavaScript files, images and so forth will be served by the container.
  • Şablon {% extends &amp;quot;base_generic.html&amp;quot; %} {% block title %}{{ section.title }}{% endblock %} {% block content %} &lt;h1&gt; {{ section.title }} &lt;/h1&gt; {% for story in story_list %} &lt;h2&gt; &lt;a href=&amp;quot; {{ story.get_absolute_url }} &amp;quot;&gt; {{ story.headline |upper }} &lt;/a&gt; &lt;/h2&gt; &lt;p&gt; {{ story.tease |truncatewords :&amp;quot;100&amp;quot; }} &lt;/p&gt; {% endfor %} {% endblock %}
  • 2010 Kocaeli Linux Günleri - Linux Web Geliştiriciliği

    1. 1. Linux’ta Web Geliştiriciliği Kocaeli Üniversitesi Linux Günü Burak Oğuz EMO Ankara Şubesi FindikProject ve MyDLP Geliştiricisi 14 Mayıs 2010
    2. 2. İçerik <ul><li>Apache </li></ul><ul><li>Linux'ta Web Geliştirme Dilleri ve Çatıları </li></ul><ul><ul><li>Php </li></ul></ul><ul><ul><li>Java </li></ul></ul><ul><ul><li>Python </li></ul></ul><ul><ul><li>Ruby </li></ul></ul><ul><ul><li>Mono </li></ul></ul><ul><ul><li>Diğerleri </li></ul></ul>
    3. 3. Apache <ul><li>Apache 1996 yılından bu yana en popüler web sunucusudur. </li></ul><ul><li>Nisan 1996'da %29 olan kullanım oranı bu günlerde %54'e kadar ulaşmıştır. </li></ul>
    4. 4. Apache
    5. 5. Apache <ul><li>Mevcut sürümler </li></ul><ul><ul><li>Apache 1.3.37 - Destek modunda, geliştirme yok </li></ul></ul><ul><ul><li>Apache 2.0.59 - Destek modunda, geliştirme yok </li></ul></ul><ul><ul><li>Apache 2.2.15 – Mevcut sürüm </li></ul></ul><ul><li>Geliştirme </li></ul><ul><ul><li>Apache 2.3.5-alpha </li></ul></ul>
    6. 6. Apache – Dosyalar <ul><li>Dosya lokasyonları (CentOS 5) </li></ul><ul><ul><li>Modüller - /usr/lib/httpd/modules </li></ul></ul><ul><ul><li>Ayar dosyları - /etc/httpd </li></ul></ul><ul><ul><li>Kayıt dosyaları - /var/log/httpd </li></ul></ul><ul><ul><li>Döküman kökü - /var/www/html </li></ul></ul><ul><ul><li>CGI klasörü - /var/www/cgi-bin </li></ul></ul>
    7. 7. Apache – Çok Süreçlilik Modülleri <ul><li>Apache Web Sunucusu, birçok değişik ortamda kullanılabilmek için çeşitli süreç modülleri barındırır. Bu süreç modülleri </li></ul><ul><ul><li>Ağ portlarına bağlanma </li></ul></ul><ul><ul><li>İstekleri kabul etme </li></ul></ul><ul><ul><li>İstekleri karşılamak için işçi kanallar oluşturma gibi işleri üstlenirler </li></ul></ul>
    8. 8. Apache – Çok Süreçlilik Modülleri <ul><li>Sunucu, belli bir sitenin ihtiyaçlarına uygun olarak daha iyi kişiselleştirilebilmektedir. Örneğin, eski yazılım ile uyumluluk ve kararlılığa önem veren siteler prefork modülünü kullanabilirken, daha geniş ölçeklenebilirlik gerektiren siteler worker gibi evreli bir MPM modülünü seçebilmektedir. Ek olarak, farklı konakların farklı kullanıcı kimlikleri ile sunulması gibi özel oluşumlar da (perchild) sağlanabilmektedir. </li></ul>
    9. 9. Apache – Prefork MPM <ul><li>Bu çok süreçlilik modülü (MPM) Apache 1.3’ün yaptığı gibi evresiz ve çocuk süreçlerin önceden çatallandığı bir HTTP sunucusu oluşturur. Evresiz kütüphanelerle uyumluluk için evrelemeden kaçınma ihtiyacında olan siteler için uygundur. Ayrıca istekleri birbirlerinden yalıtmak için en iyi MPM’dir, dolayısıyla herhangi bir istekle ilgili bir sorun diğerlerini etkilemez. </li></ul>
    10. 10. Apache – Prefork MPM <ul><li>Sağlam fakat yavaştır </li></ul><ul><li>Bir tane ana sunucu ve bunun altında çalışan işçilerden oluşur </li></ul><ul><li>Her işçi kendisi bir sunucu olarak hareket eder </li></ul><ul><li>Her işçi tek defada bir bağlantı kabul edebilir </li></ul><ul><li>Daha çok bellek tüketir </li></ul><ul><li>Kanallar yerine işlemleri kullanır </li></ul>
    11. 11. Apache – Worker MPM <ul><li>Bu çok süreçlilik modülü (MPM) hem çok süreçli hem de çok evreli olabilen melez bir sunucu oluşturur. İstekleri sunmak için evreleri kullanması sebebiyle çok süreçli bir sunucudan daha az sistem kaynağı harcayarak daha çok isteğe hizmet sunabilir. Bununla birlikte, herbiri çok sayıda evreye sahip çok sayıda süreci canlı tutarak bir çok süreçli sunucu kadar kararlı olur. </li></ul>
    12. 12. Apache – Worker MPM <ul><li>Çoklu işlem ve çoklu kanal desteği bulunur </li></ul><ul><li>Her işçi işlem birden fazla bağlantı kabul edebilir. </li></ul><ul><li>Çoklu işlem kararlı şekilde çalışabilir. </li></ul><ul><li>Çoklu kanal da performanslı bir şekilde çalışır </li></ul><ul><li>Bellek kullanımını azaltır. </li></ul>
    13. 13. Apache – Worker MPM <ul><li>Ayarlar </li></ul><ul><ul><li>StartServers – En başta başlatılacak işçi sunucu sayısı </li></ul></ul><ul><ul><li>MinSpareThreads – Yeni işçiler oluşturulmadan önce gerekli en az boş işçi sayısı </li></ul></ul><ul><ul><li>MaxSpareThreads – Sonradan oluşturulan işçi kanallarının yok edilmesi için gerekli en fazla boş kanal sayısı </li></ul></ul><ul><ul><li>MaxClients – Kanal başına en fazla istemci sayısı </li></ul></ul><ul><ul><li>MaxMemFree – Ana işçi tarafından kullanılabilecek en fazla bellek miktarı </li></ul></ul><ul><ul><li>ThreadsPerChild – Her işçi süreç tarafından açılabilecek kanal sayısı </li></ul></ul>
    14. 14. Apache - Belgeler <ul><li>Çoğu Türkçeleştirilmiş belgelere şu adresten ulaşabilirsiniz: </li></ul><ul><ul><li>http://httpd.apache.org/docs/2.2/ </li></ul></ul><ul><li>Ayrıca belgeler her Apache kurulumuyla birlikte dağıtılır. </li></ul>
    15. 15. Apache – httpd.conf <ul><li>httpd.conf dosyası içerisinde her ayar komutunun detaylı açıklaması bulunur. </li></ul><ul><li>Ayar komutları dosya içerisinde belirli sırada olmak zorunda değildir. </li></ul><ul><li>“ ” karakteri ayar komut ifadesinin aşağı satırda devam ettiğini belirtir. </li></ul><ul><li>“ #” ile başlayan satırlar yorum satırlarıdır. </li></ul><ul><li><IfDefine> ifadesi, ortam değişkenlerine bağlı olarak çeşitli ayar komutlarının devre dışı bırakılmasını sağlayabilir. </li></ul>
    16. 16. Apache - httpd.conf <ul><li>Önemli ayar komutları </li></ul><ul><ul><li>ServerRoot – Apache kurulumunun yapıldığı dizin </li></ul></ul><ul><ul><li>Timeout – Sunucunun istek üzerine bir cevap almadığı durumda bekleme süresi – Öntanımlı 5 dakika / 300 saniye </li></ul></ul><ul><ul><li>KeepAlive – Uzun süreli bağlantıların desteklenmesi </li></ul></ul><ul><ul><li>Listen – Apache’nin bağlanacağı IP adresi ve port numarası </li></ul></ul><ul><ul><li>LoadModule – Apache modülü yükleme komutu </li></ul></ul>
    17. 17. Apache – httpd.conf <ul><ul><li>DocumentRoot – Sunucunun dosyaları sunacağı ön tanımlı dizin </li></ul></ul><ul><ul><li>Options – Belirlenen dizin için seçenekler </li></ul></ul><ul><ul><ul><li>Indexes – Dizin listelemenin etkinleştirilmesi </li></ul></ul></ul><ul><ul><ul><li>Multiviews – Dil anlaşmasının yapılması </li></ul></ul></ul><ul><ul><ul><li>ExecCGI – CGI dosyalarının dizin içerisinde çalıştırılması izni </li></ul></ul></ul><ul><ul><li>Order / Allow / Deny – Erişim kontrolü denetlemesi </li></ul></ul><ul><ul><li>DirectoryIndex – İstekte dizin için herhangibir dosya belirtilmezse sunulacak dosya ismi </li></ul></ul><ul><ul><li>CustomLog – Kullanıcının tanımlayabileceği kayıt dosyasının yeri ve kayıt biçimi </li></ul></ul><ul><ul><li>Alias - <Directory>/<Location>/<Files> için URI öneki sağlar </li></ul></ul><ul><ul><li>ErrorDocument – Hata durumunda gönderilecek dosyayı belirleyebilirsiniz. </li></ul></ul>
    18. 18. Apache – Virtual Host <ul><li>Apache’de iki tip virtual host desteği bulunmaktadır. </li></ul><ul><ul><li>İsim tabanlı </li></ul></ul><ul><ul><ul><li>İstekteki alan adına göre virtual host seçimi yapılır </li></ul></ul></ul><ul><ul><ul><li>Tek bir IP adresi üzerinden birçok alan adının sunulmasını sağlar </li></ul></ul></ul><ul><ul><li>IP tabanlı </li></ul></ul><ul><ul><ul><li>İstekteki IP adresine göre virtual host ataması yapar </li></ul></ul></ul><ul><ul><ul><li>Her IP adresi bir virtual hosta aittir. </li></ul></ul></ul><ul><li>Her virtual host ServerName, DocumentRoot, Alias gibi komutlarla bağımsız olarak oluşturulur. </li></ul>
    19. 19. İsim tabanlı Virtual Host <ul><li>NameVirtualHost *:80 </li></ul><ul><li><VirtualHost *:80> </li></ul><ul><li>ServerName www.domain.com </li></ul><ul><li>ServerAlias domain.com *.domain.com </li></ul><ul><li>DocumentRoot /www/domain </li></ul><ul><li></VirtualHost> </li></ul><ul><li><VirtualHost *:80> </li></ul><ul><li>ServerName www.otherdomain.com </li></ul><ul><li>DocumentRoot /www/otherdomain </li></ul><ul><li></VirtualHost> </li></ul>
    20. 20. Linux ve Web Programlama <ul><li>Linux’ta popüler olarak kullanılan web programlama dilleri şu şekilde listelenebilir </li></ul><ul><ul><li>PHP </li></ul></ul><ul><ul><li>Java </li></ul></ul><ul><ul><li>Python </li></ul></ul><ul><ul><li>Ruby </li></ul></ul><ul><li>Mono ile ASP.NET kodlarınızı da Linux üzerinde kullanabilirsiniz. </li></ul>
    21. 21. PHP <ul><li>PHP , pop ü l e r, basit ve hafif bir sunucu-tabanlı betik dilidir. PHP ile dinamik web sayfaları oluşturabilirsiniz. </li></ul><ul><li>Tarihi gelişim : </li></ul><ul><ul><li>1995: PHP 2, “Personal Home Page Tools” </li></ul></ul><ul><ul><li>1997: PHP 3, “PHP: Hypertext Processor” </li></ul></ul><ul><ul><li>2000: PHP 4 </li></ul></ul><ul><ul><li>2004: PHP 5 </li></ul></ul><ul><li>PHP kullanan bazı web sayfaları : </li></ul><ul><ul><li>Wikipedia, Yahoo, Digg, Facebook </li></ul></ul>
    22. 22. PHP – ZendFramework <ul><li>ZendFramework, basit ve gelişmiş yapısı ile birçok konuda çok çeşitli kütüphaneler sağlar. </li></ul><ul><li>Google, Yahoo!, Amazon ve Flickr tarafından kullanılan güvenli, güvenilir ve modern Web2.0 uygulamalarının arkasında ZendFramework bulunmaktadır. </li></ul><ul><li>PHP ile gelen bir özellik olarak öğrenme eğrisi oldukça aşağıdadır. Kullanmak için ayar dosyaları düzenlemeye gerek yoktur. </li></ul><ul><ul><li>Genişletilebilir ve iyi test edilmiş kod tabanı </li></ul></ul><ul><ul><li>Genişletilebilir mimari </li></ul></ul><ul><li>PHP4 desteği bulunmamaktadır. </li></ul>
    23. 23. PHP - CakePHP <ul><li>CakePHP, PHP ile MVC ve ORM ile hızlı geliştirme yapabilmenizi sağlayan bir geliştirme çatısıdır. </li></ul><ul><li>Temel özellikleri </li></ul><ul><ul><li>MVC mimarisi </li></ul></ul><ul><ul><li>Uygulama iskeleti oluşturabilme </li></ul></ul><ul><ul><li>Bake ile otomatik kod oluşturma </li></ul></ul><ul><ul><li>HTML, Formlar, Sayfalama, AJAX, JS, XML ve RSS gibi birçok konuda yardımcı sınıflar </li></ul></ul><ul><ul><li>ACL ve yetkilendirme </li></ul></ul><ul><ul><li>Onaylama sınıfları </li></ul></ul><ul><ul><li>Güvenlik, oturum ve istek bileşenleri </li></ul></ul><ul><ul><li>Dosyalar, dizinler, diziler, vb gereksinim ile ilgili yardımcı sınıflar </li></ul></ul>
    24. 24. PHP - Symfony <ul><li>Symfony, php üzerinde geliştirme hızını arttırmak amacı ile web sayfalarının oluşturulmasını ve bakımını kolaylaştırmayı amaçlamaktadır. </li></ul><ul><li>MIT lisansı ile dağıtılmaktadır. </li></ul><ul><li>Temiz tasarım ve kod okunabilirliği öncelikli hedefidir. </li></ul><ul><li>PHP4 desteği bulunmamaktadır. </li></ul><ul><li>Tutorial ve belge desteği üst seviye olduğu için başlangıç için en çok tercih edilen PHP web çatısıdır. </li></ul><ul><li>Eklenti ve ORM çatıları da bulunmaktadır. </li></ul>
    25. 25. Java <ul><li>Java 1995’ten bu yana önceleri Sun ve şimdilerde Oracle tarafından geliştirilen bir programlama dilidir. </li></ul><ul><li>Amaçları </li></ul><ul><ul><li>Basit, tanıdık ve nesne tabanlı bir dil oluşturmak </li></ul></ul><ul><ul><li>Sağlam ve güvenli </li></ul></ul><ul><ul><li>Mimari bağımsız ve taşınabilir </li></ul></ul><ul><ul><li>Yüksek performanslı </li></ul></ul><ul><ul><li>Dinamik, kanallı ve yorumlanan bir dil oluşturmak. </li></ul></ul>
    26. 26. Java <ul><li>http://en.wikipedia.org/wiki/File:JavaPlatform.png </li></ul>
    27. 27. Java Web Geliştirme <ul><li>Servlet barındırıcıları </li></ul><ul><ul><li>Tomcat </li></ul></ul><ul><ul><li>Jetty </li></ul></ul><ul><li>Uygulama sunucuları </li></ul><ul><ul><li>Sun Glassfish - Sun </li></ul></ul><ul><ul><li>JBoss - RedHat </li></ul></ul><ul><ul><li>Geronimo – ASF </li></ul></ul><ul><ul><li>WebLogic - Oracle </li></ul></ul>
    28. 28. Java - Maven <ul><li>Maven, proje ayarlarınızın düzgün bir şekilde tutularak bağımlılıklarınızın otomatik çözümlenmesi, sürüm takibi, repo takibi, geliştirme takibi, bakım, güncelleme ve yükleme gibi işlemleri düzgün bir şekilde yapmanızı sağlayan bir altyapı sunar. </li></ul>
    29. 29. Java - Spring <ul><li>Java kurumsal geliştirme için popüler ve kararlı bir uygulama çatısıdır. </li></ul><ul><li>Esas amacı, bağımlılıkların azaltılması hatta negatif bağımlılıklar oluşturularak, kod bakımının kolaylaştırılması ve karmaşıklığın azaltılmasıdır. </li></ul><ul><ul><li>Dependency Injection (IoC) </li></ul></ul><ul><ul><li>AOP </li></ul></ul><ul><ul><li>Taşınabilir servisler </li></ul></ul>
    30. 30. Java - JSF <ul><li>JSF bir standart(JSR-314) olup bu standartı uygulayan birçok API mevcuttur.Bu API’lar </li></ul><ul><ul><li>UI bileşenleri oluştururlar </li></ul></ul><ul><ul><li>UI bileşenlerinin durumlarını saklar </li></ul></ul><ul><ul><li>Olaylar işler </li></ul></ul><ul><ul><li>Girdi onaylaması yapar </li></ul></ul><ul><ul><li>Sayfalar arası yönlendirmeyi yapar </li></ul></ul><ul><ul><li>Erişilebilirlik ve yerelleştirme seçeneklerini sunarlar </li></ul></ul><ul><li>JSF, JSP sayfaları içerisinde kullanılmak üzere tasarlanan etiket kütüphaneleridir. </li></ul><ul><li>http://www.jsfmatrix.net/ </li></ul>
    31. 31. Java – Apache Wicket <ul><li>Apache Wicket ile amaçlanan diğer Java web geliştirme çatılarındaki eksiklik olarak görülen denetleyicideki (controller) kodun yeniden kullanımı yaygınlaştırmaktır. Bunu her sayfayı ve bileşeni SWING’deki gibi gerçek birer sınıf yaparak nesne tabanlı programlama yardımıyla gerçekleştirir. </li></ul><ul><li>Geliştirmesi kolaydır ve bir WYSIWYG editörü bulunmaktadır. </li></ul>
    32. 32. Java – Google Web Toolkit <ul><li>Java GWT ile tarayıcı tabanlı kararlı uygulamalar geliştirebilirsiniz. </li></ul><ul><li>Java GWT ile yazdığınız Java kodları, Javascripte döndürülür. Ayrıca uygulamanız için sunucu tarafı için GWT Servlet veya Web Servisleri oluşturabilirsiniz. </li></ul><ul><li>Google birçok servisi için GWT kullanmaktadır. </li></ul>
    33. 33. Java ve Linux <ul><li>Paket yöneticiniz ile Java JDK’yı kurun. </li></ul><ul><li>Paket yöneticiniz ile Apache Maven’ı kurun. </li></ul><ul><li>Sizin için uygun IDE’yi kurun </li></ul><ul><ul><li>Eclipse </li></ul></ul><ul><ul><li>Netbeans </li></ul></ul><ul><li>Kullanmak istediğiniz çatı ile ilgili Maven archetype’ı bulun. </li></ul><ul><li>IDE’niz üzerinden archtype’ı kurun. </li></ul><ul><li>Geliştirmenize başlayın. </li></ul><ul><li>http://github.com/bogus/Java-Spring-Examples </li></ul>
    34. 34. Python <ul><li>Python 1989 yılından bu yana geliştirilmekte olan üst seviye nesne tabanlı bir betik dilidir. Standart kütüphanesi geniş bir bileşen yelpazesi sunmakla birlikte özellikle masaüstü, web ve terminal uygulamalarında sık kullanırlır. </li></ul>
    35. 35. Python - Django <ul><li>Django, yüksek seviye bir Python web geliştirme çatısıdır. Özellikleri </li></ul><ul><ul><li>ORM </li></ul></ul><ul><ul><li>Otomatik oluşturulan yönetici arabirimi </li></ul></ul><ul><ul><li>URL tasarımı </li></ul></ul><ul><ul><ul><li>urlpatterns = patterns('', (r'^articles/2003/$', 'news.views.special_case_2003'), </li></ul></ul></ul><ul><ul><ul><ul><li>(r'^articles/(d{4})/$', 'news.views.year_archive'), </li></ul></ul></ul></ul><ul><ul><ul><ul><li>(r'^articles/(d{4})/(d{2})/$', 'news.views.month_archive'), (r'^articles/(d{4})/(d{2})/(d+)/$', 'news.views.article_detail'), ) </li></ul></ul></ul></ul><ul><ul><ul><ul><li>/articles/2005/03/ </li></ul></ul></ul></ul><ul><ul><ul><ul><li>news.views.month_archive(request, '2005', '03'). </li></ul></ul></ul></ul><ul><ul><li>Şablon sistemi / dili </li></ul></ul><ul><ul><li>Önbellekleme </li></ul></ul><ul><ul><li>Çoklu-dil desteği </li></ul></ul>
    36. 36. Ruby <ul><li>Ruby, 1990ların ortasında Japonya’da Perl, Smalltalk, Eiffel ve Lisp özelliklerinden esinlenerek oluşturuldu. Perl ve Smalltalk benzeri bir söz dizimi vardır. İçerisinde fonksiyonel, nesne tabanlı, imperative ve reflective özellikler barındırır. </li></ul><ul><li>Dilin herhangibir standartı olmadığı için orijinal hali de facto olarak kabul görmektedir. </li></ul>
    37. 37. Ruby – Ruby on Rails <ul><li>MVC altyapısı ile çevik geliştirme yöntemlerini birleştiren bir çatıdır. Kullanan web siteleri: </li></ul><ul><ul><li>Basecamp </li></ul></ul><ul><ul><li>Twitter </li></ul></ul><ul><ul><li>Shopify </li></ul></ul><ul><ul><li>Yellow Pages </li></ul></ul><ul><ul><li>Github </li></ul></ul><ul><ul><li>Lighthouse </li></ul></ul><ul><li>RoR genelde RubyGems ile kurulur ancak birçok paket yönetim sistemi RoR paketlerini depolarında barındırır. </li></ul>
    38. 38. Ruby – Ruby on Rails <ul><li>Ayarlar üzerinde anlaşma </li></ul><ul><ul><li>MVC yapınız içerisinde Sale adında bir modeliniz varsa bunun veritabanındaki tablo karşılığı sales olmalıdır. </li></ul></ul><ul><li>Kendini tekrarlaMA </li></ul><ul><ul><li>RoR, ActiveRecord modülü ile geliştiricinin veritabanı kolon isimlerini modelinin içerisine yazmasına gerek kalmaz. RoR onları veritabanı şemasından okuyarak kullanır. </li></ul></ul>
    39. 39. Karşılaştırma <ul><li>http://www.cmswire.com/cms/industry-news/php-vs-java-vs-ruby-000887.php </li></ul>
    40. 40. Karşılaştırma OS : Ubuntu Gutsy Gibbon 7.10 Kernel : 2.6.22-15-generic CPU : Intel(R) Core(TM) Duo CPU T2600 @ 2.16GHz RAM : 2GB http://blog.dhananjaynene.com/ Dil Sürüm Satır Sayısı İterasyon başına süre (mikrosaniye) Java Sun JDK 1.6.0.03 10186 1.6 Ruby ruby 1.9.0 (2008-04-14 revision 16006) [i686-linux] 63 89 ruby 1.8.6 (2007-06-07 patchlevel 36) [i486-linux] 380 jruby : ruby 1.8.6 (2008-05-28 rev 6586) [i386-jruby1.1.2] 80 Python 2.5.1 41 225 192 2.5.1 with psyco 33 Jython 2.2.1 on JRE 1.6.0.03 884 632 PHP PHP 5.2.3-1ubuntu6.3 (cli) 85 593
    41. 41. Mono – Linux ama değil gibi de <ul><li>.Net uygulamalarınızın Linux’ta derlenebilmesini ve kullanılabilmesini sağlar. Bileşenleri: </li></ul><ul><ul><li>C# derleyicisi </li></ul></ul><ul><ul><li>Mono çalışma zamanı </li></ul></ul><ul><ul><li>Temel sınıf kütüphanesi – MS .Net kütüphaneleri ile uyumlu </li></ul></ul><ul><ul><li>Mono sınıf kütüphanesi - Gtk+, Zip files, LDAP, OpenGL, Cairo, POSIX gibi uygulamalar için ek kütüphaneler </li></ul></ul>
    42. 42. Mono – Linux ama değil gibi de <ul><li>Faydaları </li></ul><ul><ul><li>Popüler bir yapı olan .Net dilleriyle oluşturulan uygulamalarının ve geliştiricilerinin uygulamalarını Linux’ta çalışmasını sağlar </li></ul></ul><ul><ul><li>Çapraz platform desteği </li></ul></ul><ul><ul><ul><li>Linux, Microsoft Windows, Mac OS X, BSD ve Sun Solaris, Nintendo Wii, Sony PlayStation 3, Apple iPhone. Ayrıca x86, x86-64, IA64, PowerPC, SPARC (32), ARM, Alpha, s390, s390x (32 ve 64 bit) </li></ul></ul></ul><ul><ul><li>Ortak Dil Çalışma Zamanı (Common Language Rumtime - CLR) </li></ul></ul>
    43. 43. Mono – ASP .NET <ul><li>ASP.NET uygulamalarınızı Apache ve mod_mono ile kolayca Linux sistemlere kurabilirsiniz. </li></ul><ul><ul><li>Ancak çoğu durumda bir sürü ayar ve kod dosyasını güncellemek zorunda kalabilirsiniz. </li></ul></ul><ul><li>Linux dağıtımınızdan, paket yöneticiniz üzerinden mono, mono-devel ve mod_mono paketlerini kurarak çalışmaya başlayabilirsiniz. </li></ul>
    44. 44. Bunların Dışında <ul><li>Perl – CGI </li></ul><ul><li>Erlang </li></ul><ul><li>ve hatta Bash ile web programlama yapabilirsiniz. </li></ul><ul><li>Ancak artık Linux’ta native ASP desteği bulunmamaktadır!!! </li></ul>
    45. 45. Dillerin ve IDElerin Kurulumu <ul><li>Kullandığınız Linux dağıtımının paket yöneticisi ile gerekli dil paketlerini kurun ve dilin web sayfasında yer alan yönergeleri izleyerek istediğiniz dil ile geliştirmeye başlayın. </li></ul><ul><li>Linux’ta geliştirme yapmak diğer platformlara göre daha kolaydır. </li></ul>
    46. 46. Teşekkürler Sorularınız? [email_address]

    ×