Trường hợp trong Apache 2 bạn đặt lệnh ServerName trên toàn cầu?


37

LƯU Ý: Điều này có liên quan đến câu hỏi của tôi: " Apache 2.4 sẽ không tải lại, có vấn đề gì với cấu hình của tôi không? ".

Tôi đang cố gắng kiểm tra một trang web địa phương, địa phương. Theo tôi hiểu thì Apache 2 (và có lẽ cả Apache cũng vậy) có một cái gì đó được gọi là VirtualHost. Một chút hiểu biết của tôi nói với tôi rằng virtualhosting là cách mà một địa chỉ máy chủ / IP có thể phục vụ nhiều tên miền.

Dù sao, tôi đang gặp lỗi sau khi chạy Apache 2 configtestđể xem tôi thất bại ở đâu. Tôi đang chạy Apache 2.4.10-1 và dường như có rất nhiều thay đổi đã xảy ra giữa Apache 2.2 và Apache 2.4 mà tôi không biết.

$ sudo apache2ctl configtest
[sudo] password for shirish:
AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set the 'ServerName' directive globally to suppress this message
Syntax OK

Đây là /etc/hoststập tin:

 $ cat /etc/hosts
127.0.0.1    localhost
127.0.1.1    debian mini

Tôi cũng thấy một /etc/hosts.conftập tin trống . Có lẽ dữ liệu trong /etc/hostscần phải được sao chép để /etc/hosts.confmáy chủ nhận thức?

Tên máy chủ của tôi:

$ hostname
debian

Đây là tập tin cấu hình của trang web:

$ cat /etc/apache2/sites-available/minidebconfindia.conf
<VirtualHost mini:80>
    ServerAdmin webmaster@localhost

    DocumentRoot /var/www/html/in2014.mini/website

    <Directory />
        Options +FollowSymLinks +Includes
        Require all granted
    </Directory>

    <Directory /var/www/html/in2014.mini/website/>
        Options +Indexes +FollowSymLinks +MultiViews +Includes
        Require all granted
    </Directory>
</VirtualHost>

Tôi cũng đọc về ràng buộc với địa chỉ và cổng , nhưng tôi không hiểu điều đó vì nhiều lý do. Nó không đưa ra / chia sẻ một ví dụ về việc những dòng nào cần được đặt và những gì sẽ đến trước và sau. Một ví dụ sẽ tốt hơn nhiều.

Tôi đã làm điều đó và khởi động lại máy chủ, nhưng tôi vẫn nhận được lỗi tương tự.

~$ sudo apache2ctl configtest
AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set the 'ServerName' directive globally to suppress this message
Syntax OK

Dường như có ba tệp cấu hình trong Debian mà tôi cần biết và hiểu.

/etc/apache2$ ls *.conf
apache2.conf  ports.conf

/etc/apache2/conf.d$ ls *.conf
httpd.conf

Rõ ràng, apache2.conf là tệp cấu hình toàn cầu trong khi httpd.conf là tệp cấu hình người dùng. Ngoài ra còn có port.conf. Cả apache2.conf và port.conf đều ở mặc định ngoại trừ tôi đã thay đổi loglevel của Apache từ warnsang debug.

Tôi đã thử một điều khác:

$ sudo apache2ctl -S
AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set the 'ServerName' directive globally to suppress this message
VirtualHost configuration:
127.0.1.1:80           debian (/etc/apache2/sites-enabled/minidebconfindia.conf:1)
*:80                   127.0.1.1 (/etc/apache2/sites-enabled/000-default.conf:1)
ServerRoot: "/etc/apache2"
Main DocumentRoot: "/var/www/html"
Main ErrorLog: "/var/log/apache2/error.log"
Mutex watchdog-callback: using_defaults
Mutex default: dir="/var/lock/apache2" mechanism=fcntl
Mutex mpm-accept: using_defaults
PidFile: "/var/run/apache2/apache2.pid"
Define: DUMP_VHOSTS
Define: DUMP_RUN_CFG
User: name="www-data" id=33
Group: name="www-data" id=33

Có lẽ ai đó có cái nhìn sâu sắc hơn.

Câu trả lời:


43

Các tập tin để chỉnh sửa:

/etc/apache2/apache2.conf

Lệnh chỉnh sửa tập tin:

sudo nano /etc/apache2/apache2.conf

Đối với tên máy chủ toàn cầu, bạn có thể đặt nó ở đầu tệp (bên ngoài thẻ máy chủ ảo).

Dòng đầu tiên trông như:

ServerName myserver.mydomain.com

Sau đó lưu và kiểm tra cấu hình bằng lệnh sau:

apachectl configtest

Bạn sẽ nhận được:

Cú pháp OK

Sau đó, bạn có thể khởi động lại máy chủ và kiểm tra xem bạn không nhận được thông báo lỗi:

sudo service apache2 restart

2
Đây là câu trả lời đúng của Debian. Tôi cố gắng /etc/apache2/conf-available/fqdn.conf, hoặc servername.confhoặc httpd.confkhông có kết quả. Debian Jessieapache 2.4.10
Tiến sĩ Beco

2
Nếu bạn có conf-available/conf-enabled/, hãy tạo một tệp trong conf-available/và sử dụng lệnh a2enconfđể kích hoạt nó. Bằng cách này, dpkg sẽ không làm phiền bạn về những thay đổi không được theo dõi khi / nếu apache2-commongói cập nhậtapache2.conf
Kevin

Tệp conf-availablesau này và một bản chỉnh sửa có thể /etc/apache2/conf-available/servername.confcó nội dung ServerName myserver.mydomain.com(đã thử trên Raspberry Pi, Apache 2.4.10, Debian 8 (Jessie), Linux kernel 4.4.34).
Peter Mortensen

@PeterMortensen bạn có thể sử dụng ví dụ được chia sẻ để tôi có thể hiểu ý của bạn.
shirish

Các tập tin không tồn tại
Black

5

Bạn phải đặt lệnh ServerName :

ServerName localhost

Trong Debian, bạn có thể đặt nó vào /etc/apache2/conf.d/httpd.conf.

Trên macOS, bạn có thể thiết lập nó /private/etc/apache2/httpd.conf.


5
Trong Ubuntu, đặt nó trong /etc/apache2/apache2.conf
macki

1
Debian cũng vậy : apache2.conf.
Bác sĩ Beco

1
Phiên bản nào của Apache / Debian không hoạt động? Tôi không nghĩ rằng nó hoạt động cho Apache 2.4. Nó có thể được /etc/apache2/apache2.confthay thế.
Peter Mortensen

nó hoạt động, Apache 2.4 trên Debian 8
agejuan

2

Để xác định vị trí tệp cấu hình Apache của bạn, hãy thử chạy lệnh sau:

apachectl -t -D DUMP_INCLUDES

Sau đó chỉnh sửa tệp đó và xác định vị trí dòng ServerNamevà bỏ ghi chú, để nó trông giống như:

ServerName localhost

0

Trong tập tin cấu hình apache24, bạn sẽ thấy dòng ServerName:80:

  1. Để trống.
  2. Sau đó, bên dưới dòng đó trong không gian trống viết:
    ServerName www.name (of your official domain or website.com:80)
  3. Lưu tập tin cấu hình.
  4. Đi tới cmd, mở nó khi quản trị viên thay đổi dirthành nơi apache24
  5. Sau đó, cd apache24sau cd binđó httpd.exe

Bạn sẽ thấy vấn đề được giải quyết.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.