Cách chạy hai phiên bản apache trên cùng một hệ thống (Ubuntu)


14

Làm thế nào tôi có thể chạy hai trường hợp apache trên cùng một hệ thống và bắt đầu và dừng chúng độc lập với nhau. Bất kỳ trợ giúp hoặc dẫn đều được đánh giá cao.

Câu trả lời:


11

Tôi nghĩ rằng đây có thể là những gì bạn đang tìm kiếm http://wiki.apache.org/httpd/RastyMult MônApacheInstances

Để tham khảo nội dung trong liên kết trên

1) Cài đặt Apache trên máy chủ của bạn

sudo apt-get install apache2
sudo apt-get install libapache2-mod-perl2
sudo apt-get install other-lib-mods-needed

2) Định cấu hình các cấu hình apache riêng cho từng phiên bản bạn muốn chạy

Đối với Ubuntu, điều này nên có trong / etc / apache2 Về cơ bản cho từng trường hợp bạn cần nghe trên một cổng khác nhau.

# httpd-proxy.conf
Listen 80
ErrorLog /var/log/httpd-proxy-error.log
LoadModule proxy_module                 libexec/apache22/mod_proxy.so
LoadModule proxy_http_module            libexec/apache22/mod_proxy_http.so

# httpd-perl.conf
Listen 81
ErrorLog /var/log/httpd-perl-error.log
LoadModule perl_module                  libexec/apache22/mod_perl.so

# httpd-python.conf
Listen 82
ErrorLog /var/log/httpd-python-error.log
LoadModule python_module                libexec/apache22/mod_python.so

# httpd-php.conf
Listen 83
ErrorLog /var/log/httpd-php-error.log
LoadModule php5_module                        libexec/apache22/libphp5.so

Trong ví dụ này, sẽ có 4 trường hợp khác nhau đang chạy, mỗi trường hợp xử lý một loại mô-đun khác nhau, tức là một cho perl, một cho python, v.v.

Bây giờ, bạn cũng cần định cấu hình máy chủ ảo trong phiên bản proxy, để bất cứ khi nào có yêu cầu đến máy chủ DAV lật đổ, nó sẽ được chuyển đến apache 'python-dav' của bạn, trong khi các yêu cầu cho blog wordpress của bạn được chuyển đến ' Ví dụ apache của php. Hãy chỉnh sửa lại 'httpd-proxy.conf':

# httpd-proxy.conf
NameVirtualHost *:80
<VirtualHost *:80>
 DocumentRoot /www/wordpress
 ServerName blog.company.com
 ProxyPass / http://localhost:83/
 ProxyPassReverse / http://localhost:83/
 [... additional directives here ... ]
</VirtualHost>
<VirtualHost *:80>
 DocumentRoot /www/svn
 ServerName svn.company.com
 ProxyPass / http://localhost:82/
 ProxyPassReverse / http://localhost:82/
 [... additional directives here ... ]
</VirtualHost>
# you get the idea ...  

2b) kiểm tra mọi thứ Vì vậy, chúng tôi đã hoàn tất cấu hình và bây giờ chúng tôi cần khởi chạy tất cả các phiên bản apache và kiểm tra xem mọi thứ có hoạt động như mong đợi không. Tất nhiên bạn có thể làm điều này bằng cách sử dụng 'apachectl', vd

 /usr/local/sbin/apachectl -f /usr/local/etc/apache22/proxy-httpd.conf configtest
 /usr/local/sbin/apachectl -f /usr/local/etc/apache22/proxy-httpd.conf start
 /usr/local/sbin/apachectl -f /usr/local/etc/apache22/perl-httpd.conf configtest
 /usr/local/sbin/apachectl -f /usr/local/etc/apache22/perl-httpd.conf start
 # and so on ...

3) Định cấu hình tập lệnh init để bắt đầu apache với tệp cấu hình phù hợp

Tài nguyên được liên kết có nhiều chi tiết hơn về chỉnh sửa tệp RC.conf cho việc này nhưng đặc biệt là liên quan đến việc xử lý Ubuntu, vì vậy cả hai phần này tôi sẽ nhấn mạnh bên dưới.

'/Etc/rc.conf' trong FreeBSD là tệp chính chứa thông tin cấu hình hệ thống>. Tệp này được đọc sau khi khởi động kernel và phục vụ để khởi chạy các dịch vụ,> trình nền, thiết lập giao diện mạng, v.v. > thông báo cho FreeBSD những thứ này cần được chạy (kích hoạt) sau khi khởi động hệ thống.

# /etc/rc.conf
apache22_enable="YES"
apache22_profiles="proxy perl python php"

# the apache proxy instance
apache22_proxy_configfile="/usr/local/etc/apache22/httpd-proxy.conf"
apache22_proxy_enable="YES"

# the apache perl instance
apache22_perl_configfile="/usr/local/etc/apache22/httpd-perl.conf"
apache22_perl_enable="YES"

# the apache python instance
apache22_python_configfile="/usr/local/etc/apache22/httpd-python.conf"
apache22_python_enable="YES"

# the apache php instance
apache22_php_configfile="/usr/local/etc/apache22/httpd-php.conf"
apache22_php_enable="YES"

Khi các cấu hình này được định cấu hình trong /etc/rc.conf và được bật, chúng sẽ được khởi động> sau khi khởi động thành công hệ thống. Nếu bạn muốn khai báo một hồ sơ nhưng bạn chỉ muốn> bắt đầu cá thể apache tương ứng theo cách thủ công, bạn chỉ cần chỉnh sửa '/etc/rc.conf' và> say, ví dụ:

 # the apache php instance
 apache22_php_configfile="/usr/local/etc/apache22/httpd-php.conf"
 apache22_php_enable="NO"

Sau đó, bạn có thể bắt đầu / dừng bất kỳ trường hợp apache nào bằng tay chỉ bằng tên hồ sơ> (proxy, perl, python, php), như thế này:

 /usr/local/etc/rc.d/apache22 start php
 /usr/local/etc/rc.d/apache22 stop perl
 ...

3b) cho Ubuntu

Tôi không chắc chắn điều này sẽ tương tự (và không gây đau đớn) như trong trường hợp FreeBSD (xem phần trên RC.conf ở trên). Các tập lệnh RC apache được cài đặt với cổng apache trong FreeBSD đã nhận thức được khả năng của các cấu hình khác nhau trong nhiều năm nay.

Gần đây, các tập lệnh init Ubuntu / Debian (ví dụ /etc/init.d/apache2) đã được cập nhật để hỗ trợ nhiều phiên bản apache (ví dụ: nhiều cấu hình, được đặt tên / etc / apache2- $ SUFFIX). Tùy thuộc vào việc phát hành Ubuntu / Debian mà bạn đang sử dụng, bạn có thể may mắn ... hoặc không.

Tính năng này đã xuất hiện trong Debian trong phiên bản 2.2.14-6 vào tháng 2 năm 2010: http://lists.alioth.debian.org/pipermail/pkg-apache-commits/2010-F/2/000295.html

Trong Ubuntu, các gói apache2 trong Maverick (10.10) có chứa các bản vá này: http : //changelogs.ub Ubuntu.com/changelogs/pool/main/a/apache2/apache2_2.2.16-1ubfox3.1/changelog

Tuy nhiên, apache2 (10.04, Phát hành hỗ trợ dài hạn) dường như không: http://changelogs.ubfox.com/changelogs/pool/main/a/apache2/apache2_2.2.14-5ubfox8.4/changelog

Tài liệu có thể được tìm thấy trong /usr/share/doc/apache2/README.multipl-instances


Thật là một mớ hỗn độn lớn. Không xúc phạm bạn, tôi chỉ muốn nói rằng thật khó khăn khi làm S như vậy với linux.
Sliq

Không chắc chắn tôi thấy quá trình cài đặt được đề cập thứ hai là dễ dàng hơn ... vì vậy, tham khảo trả lời ban đầu ... Tại sao chúng ta cần proxy? Là mỗi cấu hình riêng lẻ không đủ để chỉ liên kết với các cổng khác nhau?
Alex.Barylski

5

Cảm ơn câu trả lời chi tiết của bạn nhưng sau đó tôi đã tìm thấy liên kết này http://someofmylearnings.wordpress.com/2011/07/02/multipl-apache2-instances-on-ub Ubuntu / Thủ tục hiển thị trong điều này rất đơn giản.

Khi chúng tôi cài đặt Apache, có một /usr/share/doc/apache2.2-common/README.multiple-instancestệp mà bạn đưa ra ý tưởng về chính xác những gì cần phải được thực hiện để tạo một cá thể Apache.

Trong cùng một thư mục có một examplesthư mục chứa một tập lệnh có tên setup-instancemà chúng ta có thể sử dụng để tạo một cá thể Apache. Vì vậy, để tạo một cá thể Apache khác, tất cả những gì cần làm là:

sh /usr/share/doc/apache2.2-common/examples/setup-instance web-server1

nơi web-server1là một hậu tố. Đó là, nó gắn thêm apache2- nghiêm trọng theo mặc định vào tên dụ của bạn.

Điều đó sẽ tạo một thư mục mới /etc/apache-web-server1chứa tất cả các tệp cấu hình. Nó cũng sẽ tạo ra /etc/init.d/apache-web-server1cái mà bạn có thể sử dụng để bắt đầu cá thể Apache mới.


Trên Ubuntu 14.04 LTS, thư mục doc là / usr / share / doc / apache2 /
Josip Rodin

Trên thực tế tôi nghĩ rằng đây là một giải pháp tốt hơn bởi vì nó cho phép bắt đầu / dừng riêng biệt thông qua cách tiếp cận dịch vụ hệ thống và các trường hợp có tính độc lập cao.
bfrguci
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.