Windows'ta Apache, PHP ve MySQL'i manuel olarak nasıl kurarım?


48

Nasıl PHP desteği ve Windows üzerinde MySQL sunucusu ile Apache kurarım olmadan WAMPServer veya XAMPP gibi herhangi hazır kullanımlı paketler kullanan?

Yanıtlar:


65

Apaçi

Öncelikle, Windows için Apache Platformuna Özel Notlarını okumanızı öneririm - bu, diğer işletim sistemlerinde bulunmayan ve muhtemelen daha önce hiç kullanmadığınız bir hizmet olarak çalışmak gibi Windows'a özgü bazı özellikleri açıklar.

Bu platforma özel notlarda bahsedildiği gibi, Apache Windows için ikili dosyalar sağlamamaktadır, ancak ikili dosyalar sağlayan birkaç üçüncü taraf siteye, örneğin Apache Lounge'a bağlantıları bulunmaktadır .

Bu web sitesinden 32-bit sürümünü (win32) veya 64-Bit sürümünü (Win64) indirebiliriz - işletim sisteminiz 64-Bit ise, daima 64-Bit yazılım sürümünü yüklemeyi denemelisiniz, ancak not edin 64-bit modülleri de kullanmanız gerekir, yani yalnızca 32-bit bir modülünüz varsa 32-bit Apache'yi indirin.

İşte bunu yazarken kullandığım sürüm: Apache 2.4.10 Win64 . Bu cevap en son güncellendiğinde en son versiyon: Apache 2.4.38 Win64 (gönderinin altındaki düzenleme tarihine bakın).

Bir kere indirildikten sonra, Apache24klasörü sabit sürücünüzün kök dizinine çıkartın , böylelikle böyle bir yolunuz olur C:\Apache24\bin.

Bir komut satırı penceresi açın (Windows + R ve cmdardından Enter tuşuna basın), dizini değiştirin C:\Apache24\binve çalıştırın httpd.exe, normalde herhangi bir hata yazdırmaz.

MSVCR110.dllSisteminizde eksik olduğunu belirten bir hata mesajı alırsanız , Visual Studio 2012 için Visual C ++ Yeniden Dağıtılabilir Kodunu yüklemeniz gerekir - istendiğinde her zaman olduğu gibi uygun bit sürümünü seçin: vcredist_x86.exe32 Bit sistemler için ve vcredist_x64.exe64 -Bit olanlar.

80 numaralı bağlantı noktasına bağlanamadığını söyleyen bir hata alırsanız, başka bir uygulamanın bu bağlantı noktasını kullanıp kullanmadığını kontrol edin; ayrıca Skype'ın varsayılan olarak 80 ve 443 numaralı bağlantı noktalarını kullandığı biliniyor; Gelişmiş bağlantı ayarlarında "80 ve 443 numaralı bağlantı noktalarını gelen bağlantıların alternatifi olarak kullan" seçeneğinin işaretini kaldırın , değişiklikleri uygulamak için Skype'ı yeniden başlatın ve ardından Apache'yi sorunsuz şekilde açabilmelisiniz.

Could not reliably determine the server's fully qualified domain nameŞimdilik bir uyarı göz ardı edilebilir.

Windows Güvenlik Duvarı, Apache'nin belirli ağlarda iletişim kurmasına izin vermenizi isteyebilir, varsayılan ayarları kullanmanızı öneririz: ev ve iş ağlarında izin verin, ancak genel / güvenilmeyen ağlarda değil.

Ardından, bir tarayıcı açın ve http://localhostbir sayfaya bakın It works !ve Apache kurulumunuzun çalıştığı anlamına gelir.

Komut isteminde Ctrl + C tuşlarına basarak şu anda çalışan Apache'yi durdurabilirsiniz.

Sistemin tam etki alanı adını belirleyemediğiniz konusunda bir uyarı aldıysanız C:\Apache24\conf\httpd.conf, ServerNamedeğişkeni düzenleyerek ve düzenleyerek düzeltin (bir yorumda zaten bulunmalıdır, sadece uncomment ve değiştirin):

ServerName <yourhostname>

Değiştir <yourhostname>sistem konak ismi veya ikisinden biri ile localhost.

Son olarak, sistem başladığında sunucuyu otomatik olarak çalıştırmak istiyorsanız (kimse giriş yapmasa bile), bir servis olarak çalıştırmanız gerekir - yeni bir yükseltilmiş (yönetici olarak) komut isteminde şunu yazın:

httpd.exe -k install

İşte bu, şimdi Hizmetler’de yeni bir hizmetiniz var (Windows + R sonra "services.msc" yazıp Enter tuşuna basın) "Apache2.4" adlı bir Windows hizmetinde olduğu gibi kontrol edebilirsiniz.

Apache erişimini localhostsadece kısıtlama - isteğe bağlı

Bunu geliştirme amaçları için kuruyorsanız, erişebilmeniz dışında kimsenin erişemeyeceğinden emin olmak istiyorsanız, güvenlik duvarınızın bunu çoktan halletmesi gerekir ancak, Apache'ye yerelden istekleri kabul etmesini söyleyerek başka bir güvenlik katmanı ekleyelim. sadece makine.

Apache'nin yapılandırma dosyasını açın C:\Apache24\conf\httpd.conf, varsayılan dizin bloğunu arayın <Directory "c:/Apache24/htdocs">.

Sonunda, bir satır olması gerekir Require all granted, bu, herhangi birinin bu sunucuya erişebileceği anlamına gelir. Require localSadece yerel makineden erişime izin veren şeyi yapalım .

Ayrıca, Apache'ye yalnızca geridöngü arabirimine bağlanmasını söyleyebilirsiniz, bu şekilde hem güvenlik duvarınız hem de yukarıda belirtilen erişim denetimi yönergeleri başarısız olsa da, sunucu hala tüm internete açık olmayacaktır.

Bunun için Listenyönergeyi bulun (varsayılan olarak ayarlanmıştır 80) ve aşağıdakine değiştirin:

Listen 127.0.0.1:80
Listen [::1]:80

İlk satır kendi kendini açıklayıcı, ikincisi IPv6 eşdeğeri, parantez IPv6 notasyonunda adres ve portu ayırmak için kullanılır.

Dosyayı kaydedin, sunucuyu zaten çalıştırıyorsanız, değişikliklerimizi hesaba katmak için yeniden başlatın ve şimdi yalnızca localhosterişime sahipse, diğerleri a 403 Forbidden.

PHP

Windows sistemlerine kurmakla ilgili resmi PHP belgelerini okumanızı öneririm .

En son PHP ikili dosyalarını resmi PHP for Windows indirme sayfasından indirin , Apache kurulumunuzun bit sürümüne uygun iş parçacığı güvenli sürümünü seçin (32-Bit için x86, 64-Bit için x64).

İş parçacığı güvenli olmayan sürümü yalnızca bir CGI ikili olarak çalışırken - burada daha fazla bilgi .

Kullandığım sürüm: PHP 5.6.2 VC11 x64 Thread Safe . Bu cevap en son güncellendiğinde en son sürüm: PHP 7.3.3 VC15 x64 Thread Safe (yayının altındaki düzenleme tarihine bakınız).

PHPSabit sürücünüzün kökünde boş bir klasör oluşturun ve önceden indirilmiş arşivi buraya çıkartın C:\PHP\ext, aksi halde yanlış bir şey yaptığınız gibi bir yola sahip olmalısınız .

İçinde C:\PHP, ( php.ini-productionveya php.ini-developmentne istediğinizi bağlı olarak) olarak yeniden adlandırın php.ini.

Bu php.inidosyayı açın, extension_dir = "ext"bu satırı arayın ve uncomment edin (ilkini kaldırın ;). Bu, varsayılan uzantı dir'ine ayarlanır ext(bu C:\PHP\ext, bu yazının ext/önceki sürümlerinde olduğu gibi tüm uzantıların yollarını manuel olarak hazırlamak zorunda kalır ve bunu önler) .

Şimdi Apache'yi bu PHP'yi kullanacak şekilde düzenleyerek, düzenleyerek C:\Apache24\conf\httpd.conf- tüm LoadModulesatırlardan sonra , aşağıdakileri ekleyin:

(Aşağıdaki yalnızca PHP 7 içindir )

LoadModule php7_module "c:\php\php7apache2_4.dll"

<IfModule php7_module>

    AddHandler application/x-httpd-php .php
    AddType application/x-httpd-php .php .html
    PHPIniDir "c:\php"
</IfModule>

(Aşağıdaki sadece PHP 5 içindir )

LoadModule php5_module C:/PHP/php5apache2_4.dll

<IfModule php5_module>
    DirectoryIndex index.html index.php
    AddHandler application/x-httpd-php .php
    PHPIniDir "C:/PHP"
</IfModule>

Şimdi de istemi bir komut açarak elle Apache başlatmaya çalıştığınızda C:\Apache24\binve çalışır httpd.exe- sen hiç hata görürseniz, bu yapılandırma dosyası geçerli olduğu anlamına gelir ve PHP olduğunu büyük olasılıkla çalışma .

Sen gibi bir dosya oluşturarak PHP kurulumunu test edebilirsiniz info.phpile <?php phpinfo();iç ve gidiş http://localhost/info.php- Eğer sistem ve PHP kurulumu ve tüm modülleri hakkında bilgi biraz görmelisiniz. "Dahili sunucu hatası" gibi bir şey alırsanız, bu bir sorun olduğu anlamına gelir.

Şimdi mevcut Apache işleminizi öldürebilir (konsolda Ctrl + C) ve servisi başlatabilirsiniz - aşağıdaki bölüm Apache ile etkileşime girmez ve daha önce başlatılmış olan sunucu ile yapılabilir.

Besteci - isteğe bağlı

Besteci, bir paket yöneticisi gibi PHP'de bağımlılık yönetimi için bir araçtır. PHP paketlerini ve hatta çerçevelerin tamamını kolayca yüklemenizi sağlar.

Besteci, PHP OpenSSL uzantısının etkin olmasını gerektirir, bu yüzden onu etkinleştirelim C:\PHP\php.ini.

Metin editörünüzün arama işlevini aramak için kullanın php_openssl.dll, bunun için zaten yorumlanmış bir satır olmalı, sadece bu satırdakileri yorumlamalısınız.

Şimdi, Besteci'nin Windows yükleyicisini indirme sayfalarından indirin - veya yalnızca bu doğrudan bağlantıyı kullanın .

PHP'ye gitmeniz istendiğinde talimatları izleyin, göz atın C:\PHPve seçin php.exe.

İşte bu, Composer şimdi sistem genelinde kurulmuş ve herhangi bir yerden kullanılabilir - deneyebilirsiniz, sadece yeni bir komut istemi açın ( PATHComposer's tarafından ayarlanan yeni değişkeni okumak için ihtiyaç duyduğu için zaten açık olanları kullanamazsınız. yükleyici) ve yazın composer.

Güzel bir ASCII sanat logosu ve bunun gibi bir şey edinmelisin:

Composer version e87bc894daf8d5f8e77a01dd7ae5f0446ae30b14 2014-05-01 15:40:28

PHP MySQL uzantıları - isteğe bağlı

MySQL veritabanınıza PHP'den erişmek istiyorsanız, bunu yapmanıza izin veren uzantıları etkinleştirmeniz gerekir, örneğin php_mysqliveya php_pdo_mysql- Her ikisini de etkinleştirmenizi öneririm.

PHP’nin yapılandırma dosyasını C:\PHP\php.inimetin düzenleyicinizde açın ve php_mysqliveya php_pdo_mysql- orada olmalılar, onları aralarında bulunmalıdır.

Tamam, şimdi ya mysqlida tuşlarını kullanarak herhangi bir MySQL veritabanına erişebilirsiniz PDO.

MySQL

On MySQL Installer indirme sayfasına web yükleyici indirmek mysql-installer-web-community-xxxxx.msi.

Mysql-installer-web-community-5.6.21.1.msi dosyasını kullandım. Bu cevap en son güncellendiğinde en son sürüm: mysql-installer-web-community-8.0.15.0.msi (gönderinin altındaki düzenleme tarihine bakın).

Yükleyici, sisteminize bağlı olarak uygun sürümü (32-Bit veya 64-Bit) otomatik olarak kuracaktır, ancak MySQL'in bit sürümü Apache'nin ve PHP'ninkiyle eşleşmek zorunda kalmasa da, yine de bilgisayarınızın 64-bit sürümünü kullanmak faydalı olacaktır. Sistem, 3 GB'tan daha fazla RAM'den yararlanmasını desteklemektedir , bu da veritabanı sunucuları çok RAM kullanmaya meyillidir.

Yükleyicideki adımları izleyin, bunu geliştirme için yüklüyorsanız Developer default, en iyi seçeneğiniz olacak, yerel bir GUI istemcisi olan MySQL Workbench'i de yükleyecektir; PHPMyAdmin komut satırı istemcisi kullanmakta rahat değilseniz.

Her şey kurulduktan sonra, yükleyici sizden bazı temel yapılandırma değerlerini isteyecektir, veritabanına ağdaki başka bir makineden erişmek istemediğiniz sürece, "Ağ erişimi için güvenlik duvarı portunu aç" seçeneğini devre dışı bırakmanızı tavsiye ederim.

Kök şifresini ayarlayın - yalnızca geliştirme amaçlıysa ve güvenlik duvarınız ağdan gelen bağlantıları engelliyorsa, güçlü bir şifre gerekmez.

Son olarak, gereksiz MySQL Notifier’ı tepsi simgesine sağ tıklayarak, Eylemler -> Seçenekler’e gidip Run at Windows Startuponay kutusunu işaretleyip uygulayarak devre dışı bırakabilirsiniz . Bu size birkaç MB RAM kazandırır ve önyükleme yaparken makinenizi yavaşlatmaz.

İşte bu, artık bir servis olarak çalışan ve herhangi bir kullanıcıya bağlı olmayan (hiç kimse giriş yapmamış olsa bile erişilebilir) tamamen işlevsel bir WAMP sunucunuz var.

Bunun güvenliği hakkında hiçbir fikrim olmadığını unutmayın, geliştirme amaçları için, güvenlik duvarınızın hem Apache (80 ve 443 portları) hem de MySQL (326 port) için gelen bağlantıları engellemesi gerektiği için oldukça güvenli olduğunu söyleyebilirim.

Bu bir Windows 7 kurulumunda test edildi, ayrıca Vista, Windows 8 ve muhtemelen Windows Server 2008/2012'de de iyi çalışması gerekiyor - bu durumda değilse yorum yapmaktan ve / veya oy kullanmaktan çekinmeyin.


3
Ben sadece php.ini içinde Windows için extension_dir = "ext" satırını açmak gerekebileceğini unutmayın.
chivvijim

@jaffamcneill gerçekten de haklıydınız, cevabımı hesaplamak için güncelledim.

Ypu hayatımı kurtardı. Geçen bir hafta boyunca bununla mücadele ediyordum, ancak mysql phpinfo'da etkin olmayacaktı. Senin yardımınla hallettim. Bir ton teşekkürler.
clever_bassi

Mod_fcgid modülünü ne zaman kullanmalıyız? Bir sorunum var, sistemde aynı anda birden fazla istek yapan sayısız kullanıcım vardı. 32 bit bellek bittiği için 64bit sürümüne ihtiyacım var (VFP ODBC raporları için yoğun talep görüyor). Yukarıdaki kurulumunuz iyi çalışıyor mu, yoksa php_fcgid modülünü kullanmalı ve PHP'yi cgi moodule olarak yüklemeli miyim? Bu her zaman beni şaşırtıyor ... Herhangi bir fikir için teşekkürler.
Jeremy,

1
Ne zaman MSVCR110.dllhatası (şimdiki Apache sürümü) geldi ben Visual C ++ Yeniden 2010 SP1 yüklemeden sona erdi. Daha sonra VCRUNTIME140.dllVisual Studio 2015 için Visual C ++ Yeniden Dağıtılabilir'i yüklememi gerektiren dosya hakkında başka bir hata aldım .
Kodlu Maymun

8

PHP 7

Yukarıdaki cevaptaki talimatlar Temmuz 2017’den itibaren mükemmel şekilde çalışır, ancak PHP 7 kullanmak istiyorsanız C:\Apache24\conf\httpd.conf, bu cevaptakiler yerine aşağıdaki satırları eklemelisiniz (yalnızca PHP 5 için geçerlidir) [Aşağıdakileri ekleyinLoadModule ) tüm satırlardan sonra ] :

LoadModule php7_module C:/PHP/php7apache2_4.dll

<IfModule php7_module>
    DirectoryIndex index.html index.php
    AddHandler application/x-httpd-php .php
    PHPIniDir "C:/PHP"
</IfModule>

Tüm yolların doğru olduğundan emin olun. Eğer yoksa php7apache2_4.dllPHP dizininde, muhtemelen yanlış paketi indirdim.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.