Tại sao Apache của tôi không hoạt động sau khi nâng cấp lên Ubuntu 14.04?


36
[aman@aman-Inspiron-1440:~$ apache2
[Mon Apr 21 17:36:38.019213 2014] [core:warn] [pid 4134] AH00111: Config variable ${APACHE_LOCK_DIR} is not defined
[Mon Apr 21 17:36:38.019345 2014] [core:warn] [pid 4134] AH00111: Config variable ${APACHE_PID_FILE} is not defined
[Mon Apr 21 17:36:38.019370 2014] [core:warn] [pid 4134] AH00111: Config variable ${APACHE_RUN_USER} is not defined
[Mon Apr 21 17:36:38.019385 2014] [core:warn] [pid 4134] AH00111: Config variable ${APACHE_RUN_GROUP} is not defined
[Mon Apr 21 17:36:38.019414 2014] [core:warn] [pid 4134] AH00111: Config variable ${APACHE_LOG_DIR} is not defined
[Mon Apr 21 17:36:38.028756 2014] [core:warn] [pid 4134] AH00111: Config variable ${APACHE_LOG_DIR} is not defined
[Mon Apr 21 17:36:38.029032 2014] [core:warn] [pid 4134] AH00111: Config variable ${APACHE_LOG_DIR} is not defined
[Mon Apr 21 17:36:38.029056 2014] [core:warn] [pid 4134] AH00111: Config variable ${APACHE_LOG_DIR} is not defined
AH00526: Syntax error on line 74 of /etc/apache2/apache2.conf:
Invalid Mutex directory in argument file:${APACHE_LOCK_DIR}

Đây là nội dung của /etc/apache2/apache2.conftập tin.


3
Nó không hoạt động vì bạn có lỗi Cú pháp trên dòng 74 của /etc/apache2/apache2.conf . Xin vui lòng, tải lên nội dung của tập tin đó để xem những gì sai.
Lucio

2
Tìm kiếm google từ hôm qua,
Amandeep Singh

đã tải lên tệp tại: pastebin.ubfox.com/7298873
Amandeep Singh


Tôi có cần di chuyển / var / www sang / var / www / html không ??
Amandeep Singh

Câu trả lời:


31

Tôi đã có vấn đề này: Nguyên nhân là trong tập tin

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

nơi gốc đã thay đổi:

trước khi nâng cấp = /var/www
sau khi nâng cấp =/var/www/html

Vì vậy, chỉnh sửa để sửa đổi tập tin này

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

Và khởi động lại apache

sudo service apache2 restart

Vì đây là vấn đề mà OP có thể gặp phải, đây không phải là vấn đề anh ấy đang gặp phải vào lúc này. Dù là trường hợp nào, như tôi đã giải thích trong câu trả lời này , tôi không khuyên bạn nên chỉnh sửa 000-default.conftệp.
Dan

Nó hoạt động sau khi chuyển sang / var / www / html
Amandeep Singh

2
+1 Tôi cũng không thể hiểu điều này. Bạn là đàn ông!
gion_13

2
Trong trường hợp của tôi, tôi vẫn gặp sự cố này và htmlthư mục con đã tồn tại, trong trường hợp của tôi thực sự không liên quan vì tất cả các trang web của tôi đều sử dụng
Virtualhosts

4
Đây không thể là câu trả lời! Lỗi ở trên không liên quan đến DocumentRootcài đặt.
Rebier Post

50

Tôi đã có vấn đề này mặc dù apache đã làm việc cho tôi. Tôi chỉ đơn giản là muốn làm nhanh

$ /usr/sbin/apache2 -V

để tìm giá trị của SERVER_CONFIG_FILE. Bởi vì đó không phải là cách để bắt đầu apache2 nữa nên nó không thành công với các lỗi mà OP đăng. Cách giải quyết nhanh và bẩn chỉ đơn giản là đặt các envvar bị thiếu trước:

$ source /etc/apache2/envvars
$ /usr/sbin/apache2 -V

Điều này đặt biến APACHE_LOCK_DIR và tất cả đều tốt ( -D SERVER_CONFIG_FILE="apache2.conf").


1
Điều này làm việc cho tôi. Vấn đề tương tự, Apache đã chạy và vận hành, nhưng chạy apache2 -Skhông thành công. Tất cả đều cố định.
Twisty

Lạ thật. Điều này dường như không làm việc cho tôi. Nó có ý nghĩa như tại sao nó nên mặc dù.
Tyler Crompton

@TylerCrompton - Làm thế nào mà nó thất bại? Lỗi là gì?
làn đường

Nó không làm cho bất kỳ sự khác biệt. Tôi vẫn đang gặp vấn đề mà OP có. Chạy apache2như root đã khắc phục vấn đề mặc dù.
Tyler Crompton

4
Một cách khác dễ dàng hơn:apache2ctl -V
Rebier Post

14

Triệu chứng và giải pháp

Trong nhiều trang web hoặc diễn đàn hỏi đáp, mọi người nhầm lẫn giữa các triệu chứng và nguyên nhân thực tế. Tôi vừa nâng cấp máy chủ Ubuntu từ 13.10 lên 14.04.1 và gặp phải các triệu chứng chính xác giống như mô tả của OP, bao gồm:
1- apache dường như không hoạt động. 2- biến cấu hình apache không xác định. 3- lỗi cú pháp được đề cập bởi OP.

Vấn đề là không phải tất cả các triệu chứng này đều thực sự gây ra vấn đề thực sự và chúng chỉ đóng vai trò làm phiền cho những người cố gắng hết sức để giúp đỡ.

Các vấn đề gốc khác nhau có thể khiến quản trị viên đến các trang web như thế này với mô tả gần giống nhau: "Tôi đã nâng cấp HĐH và hiện tại apache không hoạt động ..."

Một nguyên nhân cụ thể

Có tất cả các triệu chứng rõ ràng giống hệt như OP, tôi bị thu hút bởi câu hỏi này. Thật không may, câu trả lời duy nhất có một gợi ý hợp lệ cho nguyên nhân gốc thực sự của vấn đề của tôi đã bị hạ cấp (-1), được đăng bởi user1469291 với đại diện là 1 !! Vì vậy, tôi đã tìm kiếm thêm các trang web khác cho đến khi tôi tìm thấy một lời giải thích rõ ràng về vấn đề (và qua đó là giải pháp).

Giải pháp tiếp theo có thể không giải quyết được vấn đề thực sự của OP, nhưng tôi chắc chắn rằng nó sẽ giúp những người khác có thể bị thu hút bởi câu hỏi này vì những lý do tương tự như tôi.

/etc/apache2/apache2.conf chứa:

# Include generic snippets of statements
IncludeOptional conf-enabled/*.conf

# Include the virtual host configurations:
IncludeOptional sites-enabled/*.conf

điều đó có nghĩa là chỉ các tệp cấu hình trang web trong / etc / apache2 / sites-enable / end in .conf mới được tải. Symlink cũ hơn trong thư mục đó sẽ bị bỏ qua.

Nó được sử dụng để chỉ đơn giản là kích hoạt trang web / *. Đó là lý do tại sao tất cả các tệp cấu hình máy chủ ảo mà tôi đặt tên đơn giản là ww1.example.com, ww2.example.com, v.v., được sử dụng để hoạt động nhưng đột nhiên và ban đầu không thể hoạt động được sau khi nâng cấp.

Vì vậy, hoặc thay đổi chỉ thị ở trên và tải lại apache, hoặc, như tôi đã làm, xóa thủ công tất cả các liên kết cũ trong trang web được kích hoạt /, đổi tên tất cả các tệp trong trang web có sẵn / để thêm hậu tố. trang web cá nhân.

Ngoài ra, chỉ thị mặc định trong apache.conf nghiêm ngặt hơn:

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

Vì vậy, nếu bạn lưu trữ các trang web ảo của bạn trong / home / user / where, hãy đảm bảo ghi đè chỉ thị một cách thích hợp.


1
Đây là một câu trả lời tốt. Tốt nhất để hiểu những thay đổi trước khi vội vã và phàn nàn rằng mọi thứ không hoạt động đúng.
MikeNGarrett

1
Cảm ơn vì điều này, tôi đã không nhận ra việc đổi tên tệp đã không xóa symlink khỏi các trang web được kích hoạt.
Benno

Điều này không cung cấp một giải pháp.
Tăng cường bài

6

Nhìn kỹ vào vấn đề của bạn, bạn chỉ đang chạy apache2. Để bắt đầu apache trong Ubuntu, hãy chạy lệnh sau:

sudo apache2ctl start

Cấu hình Apache được chia thành nhiều tệp, một trong những tệp đó là các biến môi trường. Khi bạn đang chạy apache2, các biến này không được đặt.

Kịch bản apache2ctl sẽ tải các biến (và thực hiện một số nội dung khác khi cần) trước khi bắt đầu apache với apache2 -k start.


1
#sudo apache2ctl bắt đầu httpd (pid 1390) đã chạy
Amandeep Singh

Vì vậy, vấn đề bạn đang gặp phải là gì?
Dan

@AmandeepSingh: thử sudo apache2ctl restartthay thế.
scheffield

1
@scheffield Đã thử lệnh này nhiều lần. Vấn đề là do sự thay đổi vị trí thư mục gốc trong phiên bản mới của Apache từ / var / www thành / var / www / html. Tôi đã chuyển tất cả các tệp sang thư mục con / html và nó đã hoạt động.
Amandeep Singh

4

Chỉnh sửa cấu hình sudo leafpad /etc/apache2/apache2.conf::

# Include the virtual host configurations:

#before upgrade = 
IncludeOptional sites-enabled/*
#after upgrade = 
/IncludeOptional sites-enabled/*.conf

hoặc loại bỏ tập tin.


+1. Câu trả lời đã bị bỏ qua nhưng nó chứa giải pháp cho vấn đề của nhiều quản trị viên có thể truy cập câu hỏi này.
augustin

2

Câu trả lời của augustin đã có tác dụng với tôi khi tất cả các máy chủ ảo của tôi biến mất sau khi nâng cấp máy chủ từ 12.04 LTS lên 14.04 LTS. Tôi sẽ nâng cao nó nếu tôi có danh tiếng để làm như vậy.

Lệnh sau sẽ thêm .confhậu tố vào tất cả các liên kết tượng trưng trong /etc/apache2/sites-enabledđó chưa có:

sudo find /etc/apache2/sites-enabled -type l ! -name '*.conf' -exec rename 's/$/.conf/' {} \;

Ngoài ra, đã có một sự thay đổi từ việc sử dụng cú pháp Allow from/ trong mô-đun mod_authz_host ( đây là liên kết cho tài liệu 2.2).Deny fromRequire

Lệnh sau sẽ chỉnh sửa cách sử dụng phổ biến Order allow, denytheo sau Allow from allđể Require all grantedthay thế:

perl -0777 -pi.bak -e 's/Order\s+allow\s*,\s*deny\s*\n\s*Allow\s+from\s+all/Require all granted/sg' /etc/apache2/sites-available/* 

1

Trong thực tế, docroot không thay đổi giữa chính xác và đáng tin cậy từ / var / www sang / var / www / html. Thật tệ khi kịch bản nâng cấp do phát hành không hồi quy lại docroot.

A) Hoặc là hợp lệ, nhưng html là thông thường hơn. CentOS có ảnh hưởng trong vấn đề này. Trang "nó hoạt động" giờ cũng trưởng thành hơn.

B) Bạn không phải sử dụng / var / www / html, nhưng nếu bạn ...

  • bạn cần di chuyển nội dung hoặc bí danh của nó (không được khuyến nghị).
  • bạn cần cập nhật bất cứ nơi nào vị trí cũ được tham chiếu.
  • đặc biệt là các kịch bản sao lưu / khôi phục / tùy biến.

C) Và có thể dễ dàng hơn để xây dựng từ mặt đất lên và di chuyển.

D) Triệu chứng này sẽ xảy ra nếu bạn "sudo apache2 -k duyên dáng" ra khỏi hộp trên Trusty, nâng cấp hay không do envvars không nằm trong phạm vi? Thay vào đó, sử dụng "sudo apache2ctl start / stop / restart".


0

Trong trường hợp của tôi:

  • Thư htmlmục con /var/www/đã tồn tại nhưng tôi vẫn nhận được lỗi:AH00526: Syntax error on line 74 of /etc/apache2/apache2.conf
  • Tôi đã quyết định lưu trữ các trang web của mình trong thư mục gốc của người dùng, /home/{user}/sites/thay vì mặc định/var/www/html
  • Tôi đang sử dụng Apache 2.4.7 (Bạn có thể kiểm tra phiên bản của mình với apache2 -v)

Làm thế nào tôi giải quyết vấn đề trong năm bước dễ dàng:

  1. Trong /etc/apache2/apache2.conftôi đã thêm vào sau dòng 169:

    <Directory /home/{user}/sites/>
        Options Indexes FollowSymLinks
        AllowOverride None
        Require all granted
    </Directory>
    
  2. Tôi đã đảm bảo rằng cấu hình máy chủ ảo của tôi tên là website.conftại /etc/apache2/sites-availableđã được sao chép từ mặc định 000-default.conf, và trông giống như:

    <VirtualHost *:80>
        ServerAdmin webmaster@localhost
        ServerName website.dev
        ServerAlias www.website.dev
        DocumentRoot /home/{user}/sites/website
    </VirtualHost>
    
  3. Tôi đã tải lại trang web của mình ( sudo a2dissite website && sudo a2ensite website) và máy chủ của tôi và lỗi ban đầu đã biến mất. CHÀO MỪNG! Nhưng một cái mới đã xuất hiện: "AH00035: quyền truy cập / bị từ chối (đường dẫn hệ thống tập tin '/ home / {user} / site') vì quyền tìm kiếm bị thiếu trên một thành phần của đường dẫn". Điều này tôi đã giải quyết ở bước 4.

  4. Vấn đề mới là do quyền, vì vậy tôi chỉ đặt từng thư mục dẫn đến websitethư mục chmod 755. Từng người một! Các homethư mục, {user} thư mục, thư mục các trang web, và thậm chí cả thư mục trang web của tôi

  5. Sau khi làm mới trình duyệt của tôi ở website.devmọi thứ được tải tốt!

PS tôi đã thiết lập website.devtrong /etc/hoststập tin của tôi .

Tiền thưởng: Để kiểm tra quyền của một thư mục cụ thể, bạn có thể sử dụng lệnh stat -c %a /path/to/file/or/folder. Để kiểm tra quyền của mọi phần của một thư mục sử dụng namei -m /path/to/final/folder.

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.