Apache2 için farklı bağlantı noktası altında dizin değiştirmenin veya birden çok dizinten çalıştırmanın doğru yolu aşağıdaki gibidir:
Apache2 için yapılandırma dosyaları altında bulunur /etc/apache2ve eski sürümlerde olduğu gibi tek bir yapılandırma dosyası kullanmaz, ancak /etc/apache2/apache2.confana yapılandırma dosyası olarak daha küçük yapılandırma dosyalarına bölünür . Farklı bir dizindeki dosyaları sunmak için yeni bir sanal ana bilgisayar conf dosyasına ihtiyacımız var. Virtualhost conf dosyaları içinde bulunur /etc/apache2/sites-available(siteler etkin olan dosyaları düzenlemeyin). Varsayılan apache kurulumu virtualhost conf dosyasını kullanır 000-default.conf.
Varsayılan olarak, apache'nin (80 numaralı bağlantı noktasındaki localhost üzerinde çalışan) varsayılan kurulum tarafından kullanılan varsayılan sanal ana dosyayı kopyalayarak yeni bir sanal ana dosya oluşturarak başlayın. Dizine geçin /etc/apache2/sites-availableve ardından kopyalayın sudo cp 000-default.conf example.com.conf, şimdi dosyayı şu şekilde düzenleyin sudo gedit example.com.conf:
<VirtualHost *:80>
ServerAdmin example@localhost
DocumentRoot /home/ubuntu/example.com
</VirtualHost>
Kısalık için yukarıdaki dosyadan önemli olmayan satırları sildim. İşte DocumentRootweb sitesi dosyaları gibi sunulmasına hangi gelen dizinin yoludurindex.html .
Dosyaları sunmak istediğiniz dizini oluşturun, örneğin; mkdir example.comve dizinin sahibini ve varsayılan grubunu değiştirin; örneğin, oturum açmış olduğunuz kullanıcı adınız ubuntuizinleri olarak değiştirin sudo chown ubuntu:www-data example.com. Bu kullanıcıya tam erişim ubuntusağlar ve gruba okuma ve yürütme erişimi sağlarwww-data .
Şimdi /etc/apache2/apache2.confkomut vererek apache conf dosyasını düzenleyin sudo gedit apache2.confve satırı bulun <Directory /var/www/>ve kapanış etiketinin </Directory>altına aşağıdakileri ekleyin:
<Directory /home/ubuntu/example.com>
Options Indexes FollowSymLinks Includes ExecCGI
AllowOverride All
Require all granted
</Directory>
Şimdi olan sanal ana yapılandırma dosyaları, etkinleştirmek veya devre dışı bırakmak için iki komut vardır a2ensiteve a2dissitesırasıyla. Artık example.com.confdosyamız 80, varsayılan yapılandırma dosyası ( 000-default.conf) tarafından kullanılanla aynı bağlantı noktasını ( ) kullandığından , şu komutu vererek varsayılan yapılandırma dosyasını devre dışı bırakmamız gerekir.sudo a2dissite 000-default.conf ve virtualhost conf dosyamızısudo a2ensite example.com.conf
Şimdi sunucuyu komutla yeniden başlatın veya yeniden yükleyin sudo service apache2 restart. Şimdi apache dizinden dosyaları vermektedir example.comaz localhostvarsayılan bağlantı noktası üzerinde80 .
a2ensiteKomut temelde site özellikli dizin altında conf dosyasına sembolik bir bağlantı oluşturur
Bu yanıtta belirtildiği gibi, siteler etkin (veya * etkin) dizin içindeki dosyaları düzenlemeyin https://stackoverflow.com/a/41568701/2532763
Bağlantı noktasını değiştirmek ve farklı bağlantı noktalarındaki birden çok dizinden çalıştırmak için:
Şimdi dizini farklı bir bağlantı noktasında çalıştırmanız gerekiyorsa, sanal ana dosyayı şu şekilde düzenleyerek bağlantı noktası numarasını 80'den 8080'e değiştirin:
<VirtualHost *:8080>
ServerAdmin user@localhost
DocumentRoot /home/ubuntu/work
</VirtualHost>
ve satırın hemen altına düzenleme /etc/apache2/ports.confve eklemeListen 8080Listen 80
Şimdi example.com dizini 8080 numaralı bağlantı noktasını kullandığından, bağlantı noktası 80'de çalışan varsayılan sanal ana bilgisayar conf dosyasını etkinleştirebiliriz. sudo a2ensite 000-default.conf
Şimdi sunucuyu komutla yeniden başlatın veya yeniden yükleyin sudo service apache2 restart. Şimdi her iki dizinleri erişilebilir localhostvelocalhost:8080