Bagaimana cara mengubah direktori root dari server apache? [Tutup]

241

Adakah yang tahu cara mengubah root dokumen dari server Apache? Saya pada dasarnya ingin localhostdatang dari /users/spencer/projectsdirektori bukan /var/www.

Edit

Saya akhirnya mencari tahu. Beberapa menyarankan saya mengubah httpd.conffile, tetapi saya akhirnya menemukan file di /etc/apache2/sites-available/defaultdan mengubah direktori root dari /var/wwwke /home/myusername/projects_folderdan itu berhasil.

Spencer Cooley
sumber
Stack Overflow adalah situs untuk pertanyaan pemrograman dan pengembangan. Pertanyaan ini tampaknya di luar topik karena ini bukan tentang pemrograman atau pengembangan. Lihat Topik apa yang bisa saya tanyakan di sini di Pusat Bantuan. Mungkin Server Fault atau Webmaster Stack Exchange akan menjadi tempat yang lebih baik untuk bertanya.
jww

Jawaban:

209

Anda perlu mengubah DocumentRootpengaturan di httpd.conffile Anda . Kemungkinannya adalah akan berada di bawah sesuatu seperti/etc/apache2/conf/httpd.conf

Gunakan editor favorit Anda (saya sarankan Vim ) dan cari DocumentRootdan ubah ke /users/spencer/projects. Juga lihat sedikit lebih jauh ke bawah untuk pengaturan yang terlihat seperti ini:

<Directory "/var/www">

Anda juga ingin mengubah apa yang ada dalam tanda kutip ke direktori baru Anda. Ini memberi Apache akses untuk membaca dari direktori itu ketika seorang pengguna membuat permintaan yang memanggilnya.

Sekarang restart layanan apache Anda ( httpd -k restart) dan Anda harus siap.

Sunting : File konfigurasi situs Apache2 sekarang biasanya disimpan di /etc/apache2/sites-available/ (Debian, Ubuntu, dll).

RDL
sumber
6
Saya membuka /etc/apache2/httpd.conf, tetapi file itu kosong. Saya membukanya dengan gedit.
Spencer Cooley
3
File tersebut mungkin ada di /etc/httpd/conf/httpd.conf, tergantung pada selera Linux Anda.
Chris Henry
3
file httpd.conf kosong tetapi saya menemukan file di etc / apache2 / sites-available / default dan mengubah direktori root di sana. Saya prob seharusnya menyebutkan bahwa ini bukan pada server yang sebenarnya. Saya sedang menyiapkan lingkungan pengembangan lokal. Tidak yakin apakah itu akan membuat perbedaan
Spencer Cooley
3
Apakah mungkin untuk mengaktifkan / var / www dan / home / myusername / projects_folder secara bersamaan? Dan bagaimana saya harus mengkonfigurasi? Terima kasih.
Paul Lo
3
"Jawaban" itu benar-benar usang. Jawaban yang benar menurut Ubuntu 18.x docs adalah Baik mengubah direktori root Apache atau memindahkan proyek ke / var / www / html. Untuk mengubah direktori root Apache, jalankan: cd / etc / apache2 / sites-available. Kemudian buka file 000-default.conf menggunakan perintah: nano 000-default.conf. Edit opsi DocumentRoot: DocumentRoot / path / ke / my / project. (lihat askubuntu.com/questions/337874/… )
sea26.2
263

Harap dicatat, bahwa ini hanya berlaku untuk Ubuntu 14.04 LTS dan rilis yang lebih baru.

Di Ubuntu 14.04 LTS saya, root dokumen disetel ke /var/www/html. Itu dikonfigurasi dalam file berikut:

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

Jadi lakukan saja

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

dan ubah baris berikut ke apa yang Anda inginkan:

DocumentRoot /var/www/html

Juga lakukan a

sudo nano /etc/apache2/apache2.conf

dan temukan ini

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

dan ubah /var/www/htmlke direktori pilihan Anda

dan simpan itu.

Setelah Anda menyimpan perubahan Anda, cukup restart server web apache2 dan Anda akan selesai :)

sudo service apache2 restart


Jika Anda lebih suka editor teks grafis, Anda bisa mengganti sudo nanodengan a gksu gedit.

katze_sonne
sumber
1
@ Paul Lo: Saya belum mencoba ini di Ubuntu 13.10, hanya di Ubuntu 14.04; Karena saya cukup yakin bahwa pertama kali saya mengatur apache (yang ada di Ubuntu 12.04), tidak ada direktori seperti itu. Jadi ya, saya kira ini hanya tersedia di Ubuntu 14,04 LTS dan yang lebih baru. Namun, Anda dapat melihat jawaban lainnya. Suara positif menyarankan bahwa mereka membantu orang lain, mungkin mereka juga bekerja dengan Ubuntu 13.10.
mozzbozz
1
Namun terima kasih telah bertanya, saya baru saja mengedit informasi ini menjadi jawaban sehingga tidak ada orang lain yang masuk perangkap mencoba ini dengan versi Ubuntu yang lebih lama (y)
mozzbozz
3
@mozzbozzm, Anda benar. Hanya 14,04. Benar-benar pilihan yang aneh, sekarang tiba-tiba memiliki var/www/htmlsebagai root default. Apakah mereka benar-benar berusaha membuang waktu orang? :)
davidkonrad
4
Saya mendapatkan kesalahan terlarang You don't have permission to access / on this server.ketika saya menekan localhost: 80 di browser saya. Apakah saya perlu mengubah port?
Costa
3
@Costa Saya memecahkan masalah dengan menambahkan <Directory path_to_directory> Options Indexes FollowSymLinks AllowOverride None Require all granted </Directory> /etc/apache2/apache2.conf
Keenan Gebze
42

Saya harus mengedit /etc/apache2/sites-available/default. Garis-garisnya sama dengan yang disebutkan oleh RDL.

Nick
sumber
3
Suntingan yang disarankan oleh @pabloab membuat ini untuk mengatakan: "Apache 2.4 dan di atasnya memerlukan .confdi akhir, dan secara default memiliki 000-awalan sebagai". Hasilnya adalah /etc/apache2/sites-available/000-default.conf. Saya belum menguji ini, tetapi mungkin membantu beberapa orang.
Nick
^^ ini memperbaikinya. Di mana didokumentasikan bahwa saya memerlukan .conf di akhir file yang tersedia di situs saya?!? Saya memiliki sekitar 20 host virtual yang dinonaktifkan dan offline setelah pembaruan, dan setelah beberapa jam, menemukan ini dan mengganti nama file yang tersedia di situs saya memperbaikinya untuk saya.
James Perih
23

Ini untuk Ubunutu 14.04:

Dalam file /etc/apache2/apache2.confseharusnya seperti di bawah ini tanpa nama direktori:

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

dan dalam file /etc/apache2/sites-available/000-default.confAnda harus memasukkan nama direktori kustom yaitu www:

DocumentRoot /home/username/www

Jika tidak seperti di atas, itu akan memberi Anda kesalahan saat memuat server: Forbidden You don't have permission to access / on this server

androsfat
sumber
Terima kasih sobat :) Ini bekerja untuk saya di Ubuntu 16.04
Magesh Kumaar
2
Ini juga bekerja pada Debian 8
androsfat
15

Cara yang tepat untuk mengubah direktori atau menjalankan dari banyak direktori di bawah port yang berbeda untuk apache2 adalah sebagai berikut:

Untuk apache2 file konfigurasi terletak di bawah /etc/apache2dan tidak menggunakan file konfigurasi tunggal seperti dalam versi yang lebih lama tetapi dibagi menjadi file konfigurasi yang lebih kecil, dengan /etc/apache2/apache2.confmenjadi file konfigurasi utama. Untuk melayani file dari direktori yang berbeda, kami memerlukan file conf virtualhost baru. File conf virtualhost berada di /etc/apache2/sites-available(jangan mengedit file dalam situs yang diaktifkan). Instalasi apache default menggunakan file conf virtualhost000-default.conf .

Mulailah dengan membuat file virtualhost baru dengan menyalin file virtualhost default yang digunakan oleh instalasi default apache (yang berjalan di localhost pada port 80). Ubah ke direktori /etc/apache2/sites-availabledan kemudian salin dengan sudo cp 000-default.conf example.com.conf, sekarang edit file dengan sudo gedit example.com.confke:

<VirtualHost *:80>
    ServerAdmin example@localhost
    DocumentRoot /home/ubuntu/example.com    
</VirtualHost>

Saya telah menghapus baris yang tidak penting dari file di atas untuk singkatnya. Berikut DocumentRootadalah jalur ke direktori tempat file situs web akan dilayani seperti index.html.

Buat direktori dari mana Anda ingin melayani file, untuk misalnya; mkdir example.comdan ubah pemilik dan grup default direktori, misalnya misalnya jika nama pengguna Anda yang login adalah ubuntuubah izin sudo chown ubuntu:www-data example.com. Ini memberikan akses penuh ke pengguna ubuntudan memungkinkan membaca dan mengeksekusi akses ke grup www-data.

Sekarang edit file conf apache /etc/apache2/apache2.confdengan mengeluarkan perintah sudo gedit apache2.confdan temukan baris <Directory /var/www/>dan di bawah tag penutup </Directory>, tambahkan yang berikut di bawah ini:

<Directory /home/ubuntu/example.com>
    Options Indexes FollowSymLinks Includes ExecCGI
    AllowOverride All
    Require all granted
</Directory>

Sekarang ada dua perintah untuk mengaktifkan atau menonaktifkan file konfigurasi virtualhost, yaitu a2ensitedan a2dissitemasing - masing. Sekarang karena example.com.conffile kita menggunakan port yang sama ( 80) seperti yang digunakan oleh file konfigurasi default ( 000-default.conf), kita harus menonaktifkan file konfigurasi default dengan mengeluarkan perintah sudo a2dissite 000-default.confdan mengaktifkan file conf virtualhost kami dengansudo a2ensite example.com.conf

Sekarang restart atau muat ulang server dengan perintah sudo service apache2 restart. Sekarang apache melayani file dari direktori example.compada localhostpada port default80 .

Itu a2ensite perintah pada dasarnya menciptakan link simbolik ke file conf di bawah direktori situs-diaktifkan

Jangan mengedit file di dalam pengarahan situs-situs yang diaktifkan (atau * -diaktifkan), seperti yang ditunjukkan dalam jawaban ini https://stackoverflow.com/a/41568701/2532763

Untuk mengubah port dan menjalankan dari banyak direktori pada port yang berbeda:

Sekarang jika Anda perlu menjalankan direktori pada port yang berbeda, ubah nomor port dari 80 menjadi 8080 dengan mengedit file virtualhost sebagai:

<VirtualHost *:8080>
    ServerAdmin user@localhost
    DocumentRoot /home/ubuntu/work
</VirtualHost>

dan mengedit /etc/apache2/ports.confdan menambahkan Listen 8080tepat di bawah garisListen 80

Sekarang kita dapat mengaktifkan file conf virtualhost default yang berjalan pada port 80 karena direktori example.com menggunakan port 8080, sebagai sudo a2ensite 000-default.conf

Sekarang restart atau muat ulang server dengan perintah sudo service apache2 restart. Sekarang kedua direktori dapat diakses dari localhostdanlocalhost:8080

lordvcs
sumber
4

Saya bekerja dengan LAMP dan Untuk mengubah folder Root Dokumen saya telah mengedit file default yang ada di folder / etc / apache2 / sites-available . Jika Anda ingin melakukan hal yang sama, edit saja seperti berikut

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>

Setelah ini, jika Anda mengetik localhost di browser, ia akan memuat konten * / home / username / new_root_folder * .

Shashidhara
sumber
4

Jika Anda tidak dapat menemukannya http.conf dan mengikuti cara Nick.

Mulai ulang Apache menggunakan sudo service apache2 restart

Nitin
sumber
4

Untuk apache2 di Linux Mint 17.3 Cinnamon 64-bit, karya-karya berikut:

  1. Dalam /etc/apache2/sites-available/membuka 000-default.conffile, dan ubah Root Dokumen ke jalur absolut dari direktori Anda.

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

  2. Secara /etc/apache2/terbuka httpd.conf, dan tambahkan <Directory>tag yang merujuk ke direktori Anda dan berisi pengaturan yang sama persis dengan tag untuk var/www.

    sudo vim /etc/apache2/apache2.conf

    Di mesin saya itu terlihat seperti ini:


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

Catatan: Pada langkah pertama Anda mungkin ingin mengubah Root Dokumen di default-ssl.conffile juga untuk keperluan SSL. Tapi sejauh yang saya tahu ini tidak diperlukan untuk menjalankan lingkungan pengembangan umum.

stackato
sumber
2

Di apache versi 2.4.18 (Ubuntu).

1. pergi ke file ini /etc/apache2/apache2.conf cari <Directory /var/www/>dan ganti ke direktori Anda ......

2. pergi ke /etc/apache2/sites-available/000-default.conf cari DocumentRoot /var/www/htmldan ganti ke DocumentRoot Anda ....

habibun
sumber
Saya telah melakukan keduanya. Itu masih menunjukkan Terlarang Anda tidak memiliki izin untuk mengakses / di server ini.
Programmer
periksa izin folder Anda jika tidak ada di direktori home Anda.
habibun
2

Jika Anda menggunakan Ubuntu 16.04. Harap perbarui 000-default.conf di direktori / etc / apache2 / sites-available.

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

Shashank Saxena
sumber
1

Saya telah menjadikannya /var/wwwsebagai tautan lunak ke direktori yang diperlukan (mis./users/username/projects ) Dan semuanya baik-baik saja setelah itu.

Namun, tentu saja, dokumen asli /var/wwwperlu dihapus - atau diganti namanya.

maan81
sumber
0

Jika seseorang telah menginstal LAMPdi /optfolder itu maka/etc/apache2 itu bukan apa yang Anda cari.

Cari httpd.conffile di/opt/lampp/etc/httpd.conf .

Ubah baris di folder ini dan simpan dari terminal.

Yogesh Gupta
sumber
0

Di RedHat 7.0: /etc/httpd/conf/httpd.conf

ehacinom
sumber
0

Jika Anda menggunakan Linux Mint (pendapat pribadi, dari semua distro yang satu ini membuat saya bahagia), ikuti ini:

1- Buka / etc / apache2 / sites-available dan edit 000-default.conf 2- Cari DocumentRoot, contoh DocumentRoot / var / www / html yang Anda ubah ke direktori Anda masing-masing; 3 - Buka terminal dan ketik: sudo service apache2 restart

DIedit ----- Saya menyadari bahwa di Mint Anda menggunakan /etc/apache2/apache.conf, ganti / var / www ke jalur Anda masing-masing, daripada restart server (langkah 3).

Itu dia.

Marcelo Agimóvel
sumber
0

Berlaku untuk Ubuntu 14.04 dan rilis yang lebih baru. Pastikan untuk membuat cadangan file berikut sebelum melakukan perubahan.

1. Buka /etc/apache2/apache2.confdan cari <Directory /var/www/>arahan dan ganti jalur dengan /home/<USERNAME>/public_html. Anda dapat menggunakan * alih-alih.

2. Buka /etc/apache2/sites-available/000-default.confdan ganti DocumentRootproperti nilai dari /var/www/htmlhingga /home/<USERNAME>/public_html. Juga <Directory /var/www/html>untuk <Directory /home/<USERNAME>/public_html.

3. Buka /etc/mods-available/php7.1.conf. Temukan dan komentari kode berikut

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

Jangan nyalakan php_admin_flag engine OFF bendera karena alasan disebutkan dalam komentar di atas kode Directive. Juga versi php dapat 5.0, 7.0 atau apa pun yang telah Anda instal.

Buat public_htmldirektori di home/<USERNAME>.

Mulai ulang layanan apache dengan menjalankan perintah sudo service apache2 restart.

Uji dengan menjalankan skrip sampel di server.

pengguna1184294
sumber
-3

Jika Anda (seperti saya) menemukan posting ini melalui Google:

Saya menemukannya di /etc/apache2/sites-available/000-default.conf

Borkee
sumber
4
tolong jelaskan jawaban terperinci Anda dengan kode yang disematkan daripada menunjuk ke file eksternal.
Christian MICHON