2011-08-01 43 views
8

Vấn đề là tôi chỉ có một tên miền mà trên đó 3 sản phẩm khác nhau cần phải chạy (2 trong số đó dựa trên PHP, 1 trăn). Vì vậy, những gì tôi cần làm là để điều trị đường dẫn trong url như máy chủ ảo khác nhau; tức là:Apache - xử lý đường dẫn url là máy chủ ảo

www.domain.com/first_url/ 
www.domain.com/second_url/ 
www.domain.com/third_url/ 

Nơi đầu tiên thứ ba sẽ hoạt động như máy chủ ảo riêng biệt.

Bất kỳ đầu mối nào để thực hiện việc này?

Trả lời

1

Bạn có thể muốn làm điều gì đó với các chỉ thị apache-config, vì bạn đang yêu cầu một giải pháp lưu trữ ảo. Apache chỉ có thể làm việc với virtualHosts như các miền thực tế, như @cweiske giải thích.

Giải pháp trong trường hợp này là sử dụng tệp .htaccess trong thư mục con bạn đang làm việc hoặc thiết lập khối <Directory "/web/root/subdir">..</Directory> trong cấu hình máy chủ (ảo) hiện tại của bạn.

Bạn cũng có thể chọn để lưu trữ chúng trên tiểu lĩnh vực khác nhau nếu bạn mỗi se muốn chạy chúng như VirtualHosts ('app1.domain.org')

+0

Vâng vấn đề là tôi chỉ có 1 tên miền không có khả năng để thêm bất kỳ tên miền phụ hơn. Và tôi cần chạy 3 ứng dụng khác nhau trên đó. Chỉ thị thư mục không phải là một tùy chọn vì tôi không thể đặt các init scrpits WSGI vào nó. – Ruslan

+0

@Ruslan: Nếu không có bất kỳ kinh nghiệm nào từ WSGI, một tài liệu nhanh cho thấy rằng bạn có thể 'WSGIScriptAlias ​​/ app1/usr/local/wsgi/scripts/app1.wsgi' theo sau là' WSGIScriptAlias ​​/ app2/usr/local/wsgi/scripts/app2.wsgi', v.v. Không chắc là đủ chưa? – PtPazuzu

+0

Vâng tôi kết thúc với WSGIScriptAlias ​​không được phép ở đây lỗi – Ruslan

2

Một "máy chủ ảo" trong apache chỉ hoạt động trên các tên miền, không phải trên các phần của đường dẫn. Bạn không thể đạt được những gì bạn muốn.

16

Nó được một lúc kể từ khi câu hỏi này được hỏi nhưng vì tôi đang tìm một giải pháp cho một loại vấn đề tương tự, tôi sẽ thêm giải pháp.

Điều này có thể đạt được bằng cách sử dụng lệnh Alias ​​hoặc AliasMatch. Thông tin chi tiết có thể được tìm thấy ở đây:

http://httpd.apache.org/docs/2.2/mod/mod_alias.html

Alias /first_url/ /var/www/first_url_resources 
+0

câu trả lời cũ và thậm chí cả câu hỏi cũ hơn, tôi biết, nhưng điều này đã được chính xác các loại giải pháp một dòng tôi đã sau. Việc tìm kiếm điều gì đó không dễ dàng khi bạn không chắc về cú pháp hoặc ngữ cảnh của những gì bạn đang tìm kiếm. Cảm ơn! –

+0

Một điều nữa cần lưu ý: chỉ thị 'Alias ​​/ url/path/to/dir' có thể được theo sau bởi chỉ thị' 'để cho phép ghi đè cho thư mục cụ thể đó. –

0

Ví dụ này giải thích làm thế nào để gán phiên bản PHP khác nhau cho mỗi thư mục, nó cũng có thể được điều chỉnh để hỗ trợ thêm Python bằng cách chạy Python thông dịch như fast_cgi trên đặc biệt cổng

Với mục đích của ví dụ, tôi giả sử có thư mục riêng biệt cho mỗi phiên bản PHP và chúng được đặt tên theo phiên bản PHP chạy chúng, nhưng điều này có thể được điều chỉnh

mkdir /home/user/www 
mkdir /home/user/www/5.6.5 
mkdir /home/user/www/7.0.2 
mkdir /home/user/www/7.0.4 
mkdir /home/user/www/7.0.6 

tạo liên kết tượng trưng đến thư mục cần được xử lý bởi các phiên bản PHP khác nhau

sudo ln -s /home/user/www/7.0.2/ /var/www/html/7.0.2 
sudo ln -s /home/user/www/7.0.4/ /var/www/html/7.0.4 
sudo ln -s /home/user/www/7.0.6/ /var/www/html/7.0.6 

sau đó thêm dòng sau vào /etc/apache2/sites-enabled/000-default.conf trong mặc định máy chủ ảo *:80

(đối với nhu cầu của bạn, bạn có thể thiết lập thêm một handler cgi nhanh vào đây để trang web đòi hỏi Python), tôi giả sử php 5.6.5 chạy trên cổng 9999, 7.0.2 chạy trên cổng 9998 vv ...

DirectoryIndex index.html index.php 
ProxyPassMatch ^/5.6.5/(.*\.php(/.*)?)$ fcgi://127.0.0.1:9999/var/www/html/ 
ProxyPassMatch ^/7.0.2/(.*\.php(/.*)?)$ fcgi://127.0.0.1:9998/var/www/html/ 
ProxyPassMatch ^/7.0.4/(.*\.php(/.*)?)$ fcgi://127.0.0.1:9997/var/www/html/ 
ProxyPassMatch ^/7.0.6/(.*\.php(/.*)?)$ fcgi://127.0.0.1:9996/var/www/html/ 

giả sử máy chủ của bạn được trỏ bởi example.com bạn có thể thử nghiệm nó trên

http://example.com/5.6.5/ 
http://example.com/7.0.2/ 
http://example.com/7.0.4/ 
http://example.com/7.0.6/ 
Các vấn đề liên quan