Bir apache sunucusunun kök dizinini nasıl değiştirebilirim? [kapalı]


241

Apache sunucusunun belge kökünü nasıl değiştireceğini bilen var mı? Temelde bunun yerine dizinden localhostgelmek istiyorum ./users/spencer/projects/var/www

Düzenle

Sonunda anladım. Bazı ı değiştirmek önerdi httpd.confdosyayı ama bir dosyayı bulma sona erdi /etc/apache2/sites-available/defaultve gelen kök dizini değişti /var/wwwetmek /home/myusername/projects_folderve çalıştı.


Stack Overflow, programlama ve geliştirme soruları için bir sitedir. Bu soru konu dışı gibi görünüyor çünkü programlama veya geliştirme ile ilgili değil. Yardım Merkezi'nde hangi konular hakkında soru sorabilirim konusuna bakın . Belki Sunucu Hatası veya Web Yöneticisi Stack Exchange sormak için daha iyi bir yer olabilir.
jww

Yanıtlar:


209

Dosyanızdaki DocumentRootayarı değiştirmeniz gerekir httpd.conf. Şansı gibi bir şey altında olacak/etc/apache2/conf/httpd.conf

En sevdiğiniz editörü kullanın ( Vim'i tavsiye ederim ) ve arayın DocumentRootve değiştirin /users/spencer/projects. Ayrıca, aşağıdaki gibi bir ayar için biraz daha aşağıya bakın:

<Directory "/var/www">

Tırnak içindeki bilgileri yeni dizininize de değiştirmek istersiniz. Bu, kullanıcı çağrıyı yapan bir istekte bulunduğunda Apache'nin bu dizinden okuma erişimi sağlar.

Şimdi apache servisinizi ( httpd -k restart) yeniden başlatın ve gitmek için iyi olmalısınız.

Düzenleme : Apache2 site yapılandırma dosyaları artık genellikle /etc/apache2/sites-available/ (Debian, Ubuntu vb.) İçinde tutulmaktadır .


6
/Etc/apache2/httpd.conf dosyasını açtım, ancak dosya boştu. Ben gedit ile açıyorum.
Spencer Cooley

3
Dosya, Linux lezzetinize bağlı olarak /etc/httpd/conf/httpd.conf dosyasında olabilir.
Chris Henry

3
httpd.conf dosyası boş ama etc / apache2 / sites-available / default adresinde bir dosya buldum ve orada kök dizini değiştirdim. Ben prob bunun gerçek bir sunucuda olmadığını söylemeliydim. Yerel bir kalkınma ortamı kuruyorum. Bunun bir fark
yaratıp yaratmadığından

3
/ Var / www ve / home / myusername / projects_folder öğelerini aynı anda etkinleştirmek mümkün müdür? Nasıl yapılandırmalıyım? Teşekkürler.
Paul Lo

3
"Cevap" gerçekten modası geçmiş. Ubuntu 18.x belgelerine göre doğru cevap Ya Apache'nin kök dizinini değiştirin ya da projeyi / var / www / html dosyasına taşıyın. Apache'nin kök dizinini değiştirmek için şunu çalıştırın: cd / etc / apache2 / sites-available. Sonra nano 000-default.conf komutunu kullanarak 000-default.conf dosyasını açın. DocumentRoot seçeneğini düzenleyin: DocumentRoot / path / to / my / project. (bkz. askubuntu.com/questions/337874/… )
deniz26.2

263

Bunun yalnızca Ubuntu 14.04 LTS ve daha yeni sürümler için geçerli olduğunu lütfen unutmayın.

Ubuntu 14.04 LTS'mde belge kökü olarak ayarlanmış /var/www/html. Aşağıdaki dosyada yapılandırıldı:

/etc/apache2/sites-available/000-default.conf

Yani sadece

sudo nano /etc/apache2/sites-available/000-default.conf

ve aşağıdaki satırı istediğiniz şekilde değiştirin:

DocumentRoot /var/www/html

Ayrıca bir

sudo nano /etc/apache2/apache2.conf

ve bunu bul

<Directory /var/www/html/>
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>

ve /var/www/htmltercih ettiğiniz dizine geçin

ve kaydedin.

Değişikliklerinizi kaydettikten sonra apache2 web sunucusunu yeniden başlatmanız yeterlidir.

sudo service apache2 restart


Eğer grafik bir metin tercih ederseniz, sadece yerini alabilecek sudo nanoa göregksu gedit .


1
@ Paul Lo: Bunu Ubuntu 13.10'da denemedim, sadece Ubuntu 14.04'te; (Ubuntu 12.04'te) ilk kez apache kurduğumdan emin olduğum için böyle bir dizin yoktu. Yani evet, sanırım bu sadece Ubuntu 14.04 LTS ve daha yeni modellerde mevcut. Ancak, diğer cevaplara bir göz atabilirsiniz. Upvotes, başkalarına yardım ettiklerini, belki de Ubuntu 13.10 ile çalıştıklarını gösteriyor.
mozzbozz

1
Ancak sorduğunuz için teşekkürler, ben sadece bu bilgiyi cevabın içinde düzenledim, böylece kimse eski Ubuntu sürümleriyle (y)
bunu denemenin tuzağına girmiyor

3
@mozzbozzm, haklısın. Sadece 14.04. Gerçekten garip bir seçim, şimdi aniden var/www/htmlvarsayılan kök olarak sahip . Aslında Are çalışırken halklar zaman harcamak? :)
davidkonrad

4
You don't have permission to access / on this server.Tarayıcımda localhost: 80'e bastığımda yasak bir hata alıyorum . Bağlantı noktasını değiştirmem gerekiyor mu?
Costa

3
@Costa Ben ekleyerek sorunu çözüldü <Directory path_to_directory> Options Indexes FollowSymLinks AllowOverride None Require all granted </Directory> /etc/apache2/apache2.conf içinde
Keenan Gebze

42

Düzenlemek zorunda kaldım /etc/apache2/sites-available/default. Çizgiler RDL tarafından belirtilenlerle aynıdır.


3
@Pabloab tarafından önerilen bir düzenleme şunları söylemiştir: "Apache 2.4 ve üstü için .confen sonunda gerekli ve varsayılan 000-olarak bir önek var". Sonuç /etc/apache2/sites-available/000-default.conf. Bunu test etmedim, ama bazı insanlara yardımcı olabilir.
Nick

^ ^ bu düzeltildi. Sitelerimdeki dosyalarımın sonunda .conf'a ihtiyaç duyduğum nerede belgeleniyor? Bir güncellemeden sonra devre dışı bırakılan ve çevrimdışı olan yaklaşık 20 sanal ana bilgisayarım var ve birkaç saat sonra bunu bulup sitelerimdeki dosyaları yeniden adlandırmak benim için düzeltti.
James Perih

23

Bu Ubunutu 14.04 içindir:

Dosyada /etc/apache2/apache2.confdizin adı olmadan aşağıdaki gibi olmalıdır:

<Directory /home/username>
    Options Indexes FollowSymLinks
    AllowOverride All
    Require all granted
</Directory>

ve dosyaya /etc/apache2/sites-available/000-default.confözel dizin adını eklemelisiniz, yani www:

DocumentRoot /home/username/www

Yukarıdaki gibi değilse, sunucuyu yüklerken size bir hata verecektir: Forbidden You don't have permission to access / on this server


Teşekkür ederim dostum :) Bu benim için Ubuntu'da çalıştı 16.04
Magesh Kumaar

2
Ayrıca Debian 8 üzerinde çalıştı
androsfat

15

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


4

LAMP ile çalışıyordum ve Belge Kökü klasörünü değiştirmek için / etc / apache2 / sites-available klasöründe bulunan varsayılan dosyayı düzenledim . Aynı şeyi yapmak istiyorsanız aşağıdaki gibi düzenleyin

DocumentRoot /home/username/new_root_folder
    <Directory />
        Options FollowSymLinks
        AllowOverride None
    </Directory>
    <Directory /home/username/new_root_folder>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride None
        Order allow,deny
        allow from all
    </Directory>

Bundan sonra tarayıcıda localhost yazarsanız * / home / username / new_root_folder * içeriği yüklenir .


4

Eğer http.confNick'in yolunu bulamaz ve takip edemezsen .

Kullanarak Apache'yi yeniden başlatın sudo service apache2 restart


4

İçin apache2 üzerinde Linux Mint 17.3 Tarçın aşağıdaki eserlerini 64-bit:

  1. In /etc/apache2/sites-available/açmak 000-default.confdosyası ve değiştirmek Belge Root Dizininizde mutlak yoluna.

    sudo vim /etc/apache2/sites-available/000-default.conf

  2. In /etc/apache2/açık httpd.confve ekleme <Directory>etiketi Dizininizin başvuran ve için etiketin tamamen aynı ayarları içeren var/www.

    sudo vim /etc/apache2/apache2.conf

    Makinemde şöyle görünüyordu:


<Directory /home/my_user_name/php/>
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
</Directory>

Not: muhtemelen değiştirmek istediğiniz ilk aşamada Belge Kök içinde default-ssl.confSSL amaçlı hem de dosyaya. Ancak anlayabildiğim kadarıyla genel bir geliştirme ortamının çalışması için gerekli değildir.


2

Apache 2.4.18 sürümünde (Ubuntu).

1. /etc/apache2/apache2.conf bu dosyaya gidin <Directory /var/www/>ve dizininizi değiştirin ......

2. /etc/apache2/sites-available/000-default.conf adresine gidin DocumentRoot /var/www/htmlve DocumentRoot'unuzu bulun ve değiştirin ....


Her ikisini de yaptım. Hala Yasak gösteriyor Bu sunucuda / hesabına erişim izniniz yok.
Programcı

ana dizininizde değilse klasör izninizi kontrol edin.
habibun

2

Ubuntu 16.04 kullanıyorsanız. Lütfen dizindeki 000-default.conf dosyasını güncelleyin / etc / apache2 / sites-available .

Burada -> ServerAdmin webmaster @ localhost DocumentRoot / var / www / html / YourFolder


1

Ben /var/wwwgerekli dizine (örn. /users/username/projects) Yumuşak bir bağlantı olmasını yapmıştı ve bundan sonra işler iyiydi.

Ancak, doğal olarak, orijinalin /var/wwwsilinmesi veya yeniden adlandırılması gerekir.


0

Birisi yüklü ise LAMPiçinde /opto klasörün /etc/apache2aradığınız şey değildir.

İçindeki httpd.confdosyayı ara/opt/lampp/etc/httpd.conf .

Bu klasördeki satırı değiştirin ve terminalden kaydedin.



0

Linux Mint kullanıyorsanız (kişisel fikir, tüm dağıtımlardan bu beni mutlu ediyor), takip edin:

1- / etc / apache2 / sites-available adresine gidin ve 000-default.conf dosyasını düzenleyin 2- DocumentRoot'u arayın, örneğin ilgili dizininize değiştirdiğiniz DocumentRoot / var / www / html; 3- Terminali açın ve sudo service apache2 restart yazın

DÜZENLENMİŞ ----- Mint'te /etc/apache2/apache.conf için, / var / www yerine sunucunuzu yeniden başlatmanız yerine kendi yolunuza gittiğinizi fark ediyorum (3. adım).

Bu kadar.


0

Geçerli Ubuntu 14.04 ve sonraki sürümleri. Herhangi bir değişiklik yapmadan önce aşağıdaki dosyaları yedeklediğinizden emin olun.

1. Yönerge'yi açın /etc/apache2/apache2.confve arayın <Directory /var/www/>ve yolu ile değiştirin /home/<USERNAME>/public_html. Bunun yerine * kullanabilirsiniz.

2.Open /etc/apache2/sites-available/000-default.confve yerine DocumentRootgelen değer özellik /var/www/htmliçin /home/<USERNAME>/public_html. Ayrıca <Directory /var/www/html>etmek <Directory /home/<USERNAME>/public_html.

3. açık /etc/mods-available/php7.1.conf. Aşağıdaki kodu bulun ve yorum yapın

<IfModule mod_userdir.c>
    <Directory /home/*/public_html>
        php_admin_flag engine Off
    </Directory>
</IfModule>

AÇMAYIN php_admin_flag engine OFF nedeni Yönergesi kodunun üzerindeki açıklamada belirtildiği gibi bayrak. Ayrıca php sürümü 5.0, 7.0 veya yüklediğiniz herhangi bir şey olabilir.

İçinde public_htmldizin oluştur home/<USERNAME>.

Komutu çalıştırarak apache servisini yeniden başlatın sudo service apache2 restart.

Sunucuda örnek komut dosyası çalıştırarak test edin.


-3

Bu yayını (benim gibi) Google üzerinden buluyorsanız:

/Etc/apache2/sites-available/000-default.conf adresinde buldum


4
lütfen ayrıntılı yanıtınızı harici bir dosyayı işaret etmek yerine gömülü kodla açıklayın.
Christian MICHON
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.