TeknoTR  

Geri Dön   TeknoTR > Webmasterler için > Webmaster Genel
Üye Ol SSS Sxe indir Sosyal Gruplar Takvim Resim Galerisi Etiketler Bütün Forumları okunmuş kabul et

Apache, Php, Mysql, ZendOptimizer, ArGoSoftMail Kurulumu !

Webmaster Genel bölümünde Apache, Php, Mysql, ZendOptimizer, ArGoSoftMail Kurulumu ! konusu , I. Gerekli Dosyalar 1. Apache ............... http://apache.bilkent.edu.tr/dist/httpd/binaries/win32/ 2. Php ..................... http://www.php.net/downloads.php 3. Zend Optimizer ... http://www.zend.com/store/ 4. MySQL ................. http://www.mysql.com/downloads/ 5. ArGoSoftMail ....... http://www.argosoft.com/files/apps/mspro.exe 1. Apache: Her ne kadar uzun zaman önce 2.x versiyonuna geçmiş ve de bu versiyonun stabil ...

Cevapla
 
LinkBack Konu Seçenekleri
Eski 18-03-2007, 19:18   #1 (permalink)
Co-Admin
 
Jedah - ait Avatar
 
Giriş: 16-05-2006
Mesajlar: 1.297
Rep Puanı: 1000
Jedah Rütbe Artı +3Jedah Rütbe Artı +3Jedah Rütbe Artı +3Jedah Rütbe Artı +3Jedah Rütbe Artı +3Jedah Rütbe Artı +3Jedah Rütbe Artı +3Jedah Rütbe Artı +3
Rep Gücü: 500
E-Güven: (0/0)

Exclamation Apache, Php, Mysql, ZendOptimizer, ArGoSoftMail Kurulumu !


I. Gerekli Dosyalar

1. Apache ............... http://apache.bilkent.edu.tr/dist/httpd/binaries/win32/
2. Php ..................... http://www.php.net/downloads.php
3. Zend Optimizer ... http://www.zend.com/store/
4. MySQL ................. http://www.mysql.com/downloads/
5. ArGoSoftMail ....... http://www.argosoft.com/files/apps/mspro.exe


1. Apache:

Her ne kadar uzun zaman önce 2.x versiyonuna geçmiş ve de bu versiyonun stabil olduğunu söylese de çevremdeki bir çok kişinin yaşadığı ve de 1.x versiyonunu kurunca ortadan kalkan sorunlara sahip. 2.x versiyonu bu yüzden sizlere de tavsiye etmiyorum şu an için. Özellikle, php+mysql ile olan işlemlerde eksik/fazla/tekrarlı veri alış-verişi yaşayanlar duydum. Bu sebepleri boş verip 2.0.42 versiyonunu anlatacağım; ancak sizler istediğiniz versiyonunu deneyebilirsiniz. Kurulum ve ayarlar açısından benzer yapıdalar.

http://apache.bilkent.edu.tr/dist/httpd/binaries/win32/ adresi türkiye mirror’u, buradan apache_2.0.42-win32-x86-no_src.msi dosyasını indirmeniz yeterli olacaktır. Download ederken dikkat etmeniz gerekenlerden biri no_src (no source) olarak indirmeniz, -src (with source) olanlar bir çok kişi tarafından gerek duyulmayan ancak geliştirici seviyesindeki insanların seçmesi gereken versiyonlar. Bir diğer husus ise msi olarak indirmeniz ve bu şekilde boyuttan tasarruf etmenizdir.


2. Php:

Php için gerekli olan dosyalara http://www.php.net/downloads.php adresinden ulaşabilirsiniz burada windows için gerekli olan dosyalar "Windows Binaries" adı altında geçmektedir. "PHP 4.3.1 zip package" şu an için bize gerekli olan dosya. Ancak zaman ilerledikçe versiyon farklılıkları olacaktır. Yine de sistem aynı şekilde işleyecektir. "PHP 4.3.1 installer" da isteğe bağlı olarak indirilebilir ancak bu yazı işlemleri görerek ve ne olduğunu bilerek yapmaya çalışanlara hitap ettiği için bunu indirmenize gerek yok.


3. Zend Optimizer:

Zend Optimizer adından da belli olduğu üzere php’nin işlemler üzerindeki kapasitesini arttırmakta ve de özellikle düşük işlemcili bilgisayarlarda büyük boyutlardaki php sayfalarının daha hızlı işlem yapabilmesini sağlamaktadır. Zend Optimizer'ehttp://www.zend.com/store/ den "Free Downloads" bölümünden ulaşabilirsiniz, şu an için mevcut link sizi başka bir sayfaya yönlendirmektedir. Burdaki kullanım sözleşmesini kabul etmek için en alttaki "I ACCEPT" yazılı butona basarsanız indirme işlemi başlayacaktır.


4. Mysql:

http://www.mysql.com/downloads/ adresinden "(recommended)" yazan versiyon her zaman daha iyidir aklınızda olsun ve de "Alpha" lar her zaman için sorun yaratabilecek olan sürümlerdir. Eğer denemek ve mysql'e izlenimlerinizi yada yaşadığınız sorunları aktarmak isterseniz alphalar da indirilebilir. http://www.mysql.com/downloads/ adresinden son versiyonuna ulaşabilirsiniz. "Windows downloads" bölümünden indirebilir, yada mirrorlardan daha hızlı indirebileceğiniz bir yer seçebilirsiniz.

5. ArGoSoftMail:



II. Kurulumlar

Kendi yaptığım kurulumu aynen aktaracağım. Kurulum sıram ve elimdeki sürümler aynen şöyle:

... Program .......... Sürüm ...................... Kurulum Yeri
1. Apache .............. 2.0.42 ....................... d:\webserver\apache2
2. php .................... 4.3.0-Win32 .............. d:\webserver\php
3. Zend Optimizer ... 2.1.0b-Windows-i386 .. d:\webserver\zend
4. Mysql ................. 4.0.8 gamma ............. d:\webserver\mysql
5. ArGoSoftMail ...... 1.8.3.5 for Windows ..... KURMADIM


1. Apache:

Öncelikle Apache'yi kuracağız. Çalıştırılabilir dosyayı çift tıklayarak çalıştırın. Ben apache’yi d:\webserver\apache2 dizinine kuruyorum. Kurulum esnasında, Network Domain bölümüne ve de Server Name bölümüne "localhost" (bütün önceki ve sonraki örneklerde olduğu gibi tırnaklar olmadan) yazıyoruz. Administrator's Email Address bölümüne de email adresinizi girebilirsiniz. Servis olarak kurulabilecek olan makinalarda (NT/2000/XP) "Run as a service for All Users" seçmeniz halinde makinenize bağlı tüm kullanıcılar Apache'yi çalıştırabileceğinden sizden başka insanların Apache çalıştırmasını istemiyorsanız "Run when started manually, only for me" seçmeniz daha yararlı olacaktır.

Kurulum bittikten sonra isterseniz DOS’tan isterseniz windows’tan apache’yi başlatıp durdurabilirsiniz. DOS için MS-DOS komut istemi'ni açın ve NET START APACHE yazın böylece apache sunucusu başlar. Bu işlemleri windows’tan yapmak daha pratik olduğu için windows’tan yapmanızı tavsiye ederiz. Bunu en kolay başlat menüsünden programlardan “apache web server” ın altındaki “control apache server” bölümünden yapabilirsiniz. Benim kurulumumda “Apache Monitor” ‘de kuruluyor ve system tray’daki yerini alıyor. Simgeye sol tuş ile tıklayıp “Apache2” yazısının üzerine gelince start, stop ve restart kontrolleri olduğu görülebilir.

Herhangi bir yoldan apache web server’ı başlatın ve herhangi bir browser’a http://localhost yazın eğer karşınıza Apache’nin index dosyası gelirse apache sorunsuz çalışıyor demektir.


2. Php:

d:\webserver\php altına, indirdiğimiz php-4.3.0-Win32.zip dosyasını "Extract Here" diyerek açın ve klasörün ismini "php" olarak değiştirin. Daha sonrasında kurulum ikiye ayrılmakta Apache üzerine modül olarak yada direk bir CGI işleyicisi olarak kurabilirsiniz. Ancak bunun öncesinde hangi tipi seçerseniz seçin yapmanız gereken, php.ini-dist dosyasını php.ini ye çevirmek (bunu yapabilmenin kolay yolu Klasör Özellikleri’nden dosya uzantılarını gösteri seçmektir.) ve php4ts.dll dosyası ile birlikte WINDOWS un yüklü olduğu klasöre atmaktır. php.ini üzerinde yapılacak olan işlemleri daha sonra detaylı olarak anlatacağım. Buna ek olarak modül olarak (SAPI) yükleyecek olanlar, d:\webserver\php\dlls ve de d:\webserver\php\extensions klasöründeki dosyaları, c:\Windows, c:\Windows\System yada c:\Windows\System32 gibi sisteminizin kolayca bulabileceği bir noktaya koyarsanız oluşabilecek bazı sorunları temelden çözmüş olursunuz. (Not: c:/Windows her sistemde aynı isimle geçmemektedir, c:\Winnt , c:\WinXp vb. de olabilir üzerine yüklemek istediğiniz Windows hangi klasörde çalışacaksa oraya yüklemeniz daha yararlı olacaktır.)


3. Zend Optimizer:

Kurulumu en sorunsuz olan sanırım Zend Optimizer. Kurulumun başında “do you want to completely remove the selected application and all of its components?” sorusunu tamam diyerek geçiyoruz. “To ensure the successful uninstallation of Zend Optimizer, please make sure that your web server is stopped.” Sorusunu da tamam diyerek geçiyoruz. Kurulum kısa olmasına rağmen olması gerekenden biraz fazla bekliyoruz.

Zend Optimizer, php.ini nin sonuna satır eklediğinden bütün işlemler bittikten sonra yüklenirse daha iyi olur.

(Zend ürünleri ile önbellekleme (caching) işlemi yapılabiliyor. Bu durumda PHP motoru sayfanızı bir kez okuyor ve sonuçta yeni bir istek geldiğinde işlenmiş kodlar o *bir nevi derlenmiş* hafızadan çalıştırılıyor. (Aynı sistem yazılımları gibi bir kez derleniyor ve olay bitiyor. Tekrardan satır satır her istek için okunmasına gerek kalmıyor böylece. Bu da büyük bir hız farkı sağlıyor.)


4. Mysql:

İndirdiğimiz zip dosyasını açtıktan sonra setup ile kurulumu yapıyoruz. Kurulum dizini olarak d:\webserver\mysql ‘i seçiyoruz. Beraberinde winmysqladmin de kuruluyorsa, kurulum sonunda size kullanıcı adı ve şifre sorulacaktır. Mysql kurulum esnasında şifre olmadan erişebileceğiniz "root" isimli bir kullanıcı yaratmaktadır. bu durumdan rahatsız iseniz, daha sonra kuracağımız phpmyadmin ve/ve ya konsol üzerinden değişiklik yapabilirsiniz.

Konsoldan şifre değiştirme:
Run > c:mysqlbinmysql.exe -u root GRANT ALL PRIVILEGES ON *.* TO root@localhost IDENTIFIED BY 'password' WITH GRANT OPTION; yazarak şifrenizi password olarak değiştirebilirsiniz, daha ayrıntılı bilgi için : http://www.mysql.com/doc/en/Adding_users.html


5. ArGoSoftMail: (yazılar: seyemek - seyemek@seyemek.ru)

Kurulumu yaptıktan sonra programı çalıştırın admin menüsünden administration modu seçin. Daha sonra file menusunde start'ı seçin. Kendi local domainimizi tanıtalım:




codeDivStart()
Kod:
domain name: 127.0.0.1
password: 1
confirim password:1

yazıp ok tıklayın..

Domain tanıtımı yaptık birde user tanıtalım; yine configuration daki beyaz kağıdın yanındaki okçuğa tıklayıp new user seçelim.




codeDivStart()
Kod:
username yerine tr karakter kullanmadan herhangi bir isim yazın.
Real name önemsiz ama doldurun
username:kullanici_adi
real nane: karalamaca
password:1
confirim password: 1
return address: kullanici_adi@127.0.0.1

olarak kendisi otomatik olarak dolmuş olması gerekmekte..


II. Ayarlar

1. Apache (d:\webserver\apache2\conf\httpd.conf)

Öncelikli olarak aklınızda olması gereken şey httpd konfigürasyonunda "\" yerine "/" kullanmanız gerektiğidir. Bunun haricinde, burada anlatacaklarım başlangıç ve biraz ilerisi seviye için gerekli olan ayarlardır.

Php yi ISAPI olarak yükleyeceğiz, "AddModule" lerin altına şu satırı giriyoruz:




codeDivStart()
Kod:
LoadModule php4_module d:/webserver/php/sapi/php4apache2.dll


AddType ‘lerin yer aldığı satırlarlarda biryere de şu satırlar eklenmelidir.




codeDivStart()
Kod:
AddType application/x-httpd-php .php .php3 .php4
AddType application/x-httpd-php-source .phps
AddType application/x-httpd-php .php .phtml



Benimki şu satırlardan hemen sonra: (Başka dokümanlarda anlatıldığı gibi AddModule satırlarından sonra koyduğumda apache hata veriyor ve çalışmıyordu.)




codeDivStart()
Kod:
#
# AddType allows you to add to or override the MIME configuration
# file mime.types for specific file types.
#


Önemli nokta modül olarak yüklendiğinde, php4apache.dll dosyasının doğru verilmesi;

Bunun yanısıra,




codeDivStart()
Kod:
DocumentRoot "d:/webserver/www"
<Directory " d:/webserver/www ">


satıları aynı yeri göstermelidir. Bu klasörler serverın dosyaları okuyacağı yeri tespit etmekte kullanılacağından sizin için erişimi kolay bir yere (örneğin "d:\htdocs" klasörü gibi) koymanızda yarar var.




codeDivStart()
Kod:
DirectoryIndex index.html


sizin klasörlerdeki direkt açılacak olan index sayfanızı vermenizi sağlar.


Kod:
DirectoryIndex index.html index.php index.php3 index.php4 default.html
şeklinde (gerekirse daha da çoğaltarak) değiştirilmesi faydalıdır.

.htaccess dosyalarını doğru çalıştırabilmek için ise şunu yapın:




codeDivStart()
Kod:
AllowOverride None --> AllowOverride All



2. Php : (c:\Windows\php.ini)

Aşağıdaki değişiklikleri yapıyoruz:




codeDivStart()
Kod:
register_globals = Off --> register_globals = On
;default_charset = "iso-8859-1" --> default_charset = "iso-8859-9"
extension_dir = ./ --> extension_dir = d:\webserver\php\extensions
doc_root = --> doc_root = "d:\webserver\www"


buna ek olarak çalıştırmak istediğiniz php modüllerini seçmelisiniz, ben sadece GD’yi çalıştıracağım için şöyle bir değişiklik yapıyorum:




codeDivStart()
Kod:
extension=php_gd.dll --> extension=php_gd2.dll


Aşağıdaki değişikliği yapmadığınız takdirde Windows'ta session düzgün çalışmayacaktır. c:\windows\temp yerine herhangi varolan bir klasörü de kullanabilirsiniz:




codeDivStart()
Kod:
session.save_path = /tmp --> session.save_path = c:\windows\temp



3. ArGoSoftMail: (yazılar: seyemek - seyemek@seyemek.ru)

Outlook Ayarları:
Outlook'u çalıştırın araçlar menüsünden hesapları seçin.. Yeni bir hesap oluşturun:




codeDivStart()
Kod:
görünen ad: kullanici_adi
ileri'ye basın
e-postadresi: kullanici_adi@127.0.0.1
ileri'ye basın
pop3 sunucusu: 127.0.0.1
smtp suncusu: 127.0.0.1
ileri'ye basın
hesap adı: kullanici_adi @127.0.0.1
parola: 1




III. Server’ın Test Edilmesi

Eğer apache çalışıyorsa durdurun ve yeniden başlatın (değişikliklerin geçerli olması için).

Şimdi bir text editörü açın ve <?php phpinfo(); ?> yazarak d:\webserver\www dizinine phpinfo.php olarak kaydedin. Daha sonra browser’ınıza http://localhost/phpinfo.php yazın. Karşınıza PHP ile bilgiler dökülecektir. Bu bilgilerden extension_dir ve session_path değerlerine bakın. Eğer değiştirdiğimiz değerler görünüyorsa kurulum sorunsuz yapıldı demektir. Ancak eski değerler gözüküyorsa PHP çalışıyor ancak php.ini olmasi gerektiği biçimde ya da yerde değil demektir, bu dosya ile ilgili yaptığınız işlemleri tekrar kontrol edin. Herşey yolunda gittiyse kurulumları tamamladınız demektir.

ArGoSoftMail: (yazılar: seyemek - seyemek@seyemek.ru)

Mail serverımızın doğru çalışıp çalışmadığını anlamak için aşağıdaki kodları not defterinde yazıp :\webserver\www klasörü içine mail.php olarak kayıt ediniz.




codeDivStart()
Kod:
<?php
$to_email = 'kullanici_adi@127.0.0.1';
$subject = "maraba";
$text = "hello";
$from_email = 'acrimony@arkidis.com';
@mail($to_email,$subject,$text,"From:$from_email\r \nReturn-Path:$from_email\r\nX-mailerhp");
?>



Internet Exolorer adres çubuğuna: http://127.0.0.1/mail.php yazınız.. Daha sonra Outlook’tan gönder/al'a tıklayınız.. Eğer ;




codeDivStart()
Kod:
gönderen: acrimony@arkidis.com
konu: maraba
içerik: hello

İçerikli bir mail almışsanız, mail server çalışıyor demektir.



IV. Özel İşlemler:

1. Apache'de Virtual Hosting:

Virtual Hosting Nedir ?

Apache web sunucusunda Virtual Hosting, tek bir Apache web sunucusu üzerinden birden fazla domain (web alanı) için hizmet vermek amacı ile kullanılır. Bu yzaıda isme göre (Name-based) virtual hosting konfigurasyon yapılacaktır. Tüm web alanları için web sunucusunda tek bir IP adresi kullanılacaktır. IP ye göre (IP-based) konfigurasyon da yapılar ama bunun için her web alanını (domain) için ayrı ayrı IP adresi tanımlanmalıdır. Bu durumda isme göre konfigurasyon yapmak daha mantıklıdır (en azından ben öyle düşünüyorum).

Virtual Hosting Konfigurasyonu:

Birden fazla site yapmak, subdomain tanımlaması yapmak, yada sadece localhost’a bağlı kalmak istemeyen kişiler için evde virtual host nasıl yapılır anlatalım:

Öncelikle bir text editörü ile "c:\WINDOWS\system32\drivers\etc\hosts" dosyasını açıyoruz. (Win 9x/Me kullanıcıları hosts dosyasını c:\windows altında bulabilirler.)




codeDivStart()
Kod:
127.0.0.1 localhost


satırının altına,




codeDivStart()
Kod:
127.0.0.1 site1
127.0.0.1 site2


ekleyelim. bu şekilde siz site1 yazıp enter’a basınca browserınız 127.0.0.1 adresine yönlenecektir.

En basit virtual hosting türü IP üzerinden yapıldığından sizlere bunu anlatacağım. httpd.conf dosyasının en aşağıya yazıyoruz:




codeDivStart()
Kod:
### Section 3: Virtual Hosts

NameVirtualHost 127.0.0.1:80

# site1 (http://site1)
<VirtualHost 127.0.0.1>
ServerAdmin admin@site1
DocumentRoot d:/webserver/www/site1
ServerName site1
ErrorLog logs/error_site1
TransferLog logs/access_log_site1
</VirtualHost>

# site2 (http://site1)
<VirtualHost 127.0.0.1>
ServerAdmin admin@site2
DocumentRoot d:/webserver/www/site2
ServerName site2
ErrorLog logs/error_site2
TransferLog logs/access_log_site2
</VirtualHost>


Şimdi Yukarıdaki ifadelerin ne demek oldugun açıklayalım.




codeDivStart()
Kod:
NameVirtualHost 127.0.0.1:80


İfadesindeki 127.0.0.1 Apache web sunucusunun ip adresi ve 80 ile de httpd port u belirtilmiştir.

# ile başlayan kısımlar sadece açıklama kısmıdır olup olmaması konfigurasyonu etkilemez.




codeDivStart()<
Kod:
VirtualHost 127.0.0.1>

Bu kısımdaki ip adresi web sunucusunun ip adresi olmalı ServerAdmin ifadesi admin@site1 ifadesi ile Bu web alanının yetkili kişisinin e-mail adresini belirtir.




codeDivStart()
Kod:
DocumentRoot d:/webserver/www/site1


İfadesi ile site1 adresinin dosyalarının bulunduğu yeri belirttik.




codeDivStart()
Kod:
ServerName site1


Adından da anlaşılacağı gibi Web alanın adı belirtildi.




codeDivStart()
Kod:
ErrorLog logs/error_site1


Bu ifade ilede bu web alanındaki hatalar (dosyaların bulunamaması, CGI hataları) logs dizini altindaki error_site1 dosyasına yazılır.




codeDivStart()
Kod:
TransferLog logs/access_site1


Bu ifade ilede bu web alanına hangi ip lerden erişildiği hangi dosyalara bakıldığı gibi bilgilerin logs dizini altindaki access_site1 dosyasına yazılacağını belirtir .




codeDivStart()
Kod:
</VirtulHost>


ifadesi ile bu alan için gerekli konfigurasyonun bittiğini belirttik .

Evet Virtual Hosting mizin sonuna geldik sayılır ama bir sorun var !!!

Bizim Apache Sunucumuzun IP adresi 127.0.0.1 idi. Bu IP localhost isimli makinaya ait ve bu adress localhost web sunucu.

Şu anki konfigurasyonla http://site1 adresine girmek isteyen birisi site1 yerine httpd.conf dosyasında en üstte bulunan web alanına gidecektir .Yani localhost adresine erişecektir.

Bu sorunu çözmek için localhost sunucunun adı olmasına rağmen, bu alan içinde Virtual Hosting kaydı yapılmalıdır. Aşağıdaki ifadeler yazılırsa bu sorun giderilmiş olur .




codeDivStart()
Kod:
# localhost
<VirtualHost 127.0.0.1>
ServerAdmin admin@localhost
DocumentRoot /www/htdocs
ServerName localhost
ErrorLog logs/error_localhost
TransferLog logs/access_localhost
</VirtualHost>



Benden Örnek:

hosts:
127.0.0.1 www.arkidis.com

httpd.conf:



codeDivStart()
Kod:
# www.arkidis.com (arkidis.com)
<VirtualHost 127.0.0.1>
ServerAdmin acrimony@arkidis.com
DocumentRoot d:\webserver\www\arkidis.com
ServerName www.arkidis.com
</VirtualHost>

Böylece local’de bulunan sitemin tüm ayarları host’um ile aynı olacağı için upload ettikten sonra hiçbir sorun ile karşılaşmayacağım. Yalnız host’taki siteye bağlanırken host dosyasının adını değiştirmek zorundayım.

Alıntıdır

__________________
Gezmeden Seyyah ,Okumadan Alim ,Ölmeden 'Aşık' Olunmaz!...

TeknoTR.Net

http://resim.teknotr.net/uploads/4d39f7ea6d.png
Jedah isimli üyemiz çevrimdışıdır. (Offline)  
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Alıntı ile Cevapla
Cevapla


Konuyu Toplam 1 üye okuyor. (0 Kayıtlı üye ve 1 Misafir)
 
Konu Seçenekleri

Yetkileriniz
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is Açık
Smileler Açık
[IMG] Kodları Açık
HTML-KodlarıKapalı
Trackbacks are Açık
Pingbacks are Açık
Refbacks are Açık
Gitmek istediğiniz klasörü seçiniz


Şu an saat 00:23 .
Tarih 16-10-2008


Powered by vBulletin Version 3.7.2
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd
Türkçe Çeviri : ach

eXTReMe Tracker


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191