Cách thiết lập máy chủ ảo để phát triển cục bộ


10

Ubuntu 11.04 được cài đặt với apache2 và tất cả các gói có liên quan được cài đặt. Tôi đã thử hầu hết các blog và biến google và các diễn đàn khác thành những người bạn tốt nhất của tôi, nhưng tôi không thể giải quyết vấn đề này.

Tôi cần thiết lập một máy chủ ảo có tên trên hệ thống cục bộ của mình để phát triển.

Tôi đã tạo thư mục "vivek" trong /var/wwwvà sao chép index.html mặc định và chỉnh sửa một số thành phần.

Tôi được thêm vào tập tin vivek.comtrong /etc/apache2/sites-availablenhư sau:

# Ensure that Apache listens on port 80
Listen 80

# Listen for virtual host requests on all IP addresses
NameVirtualHost *:80

<VirtualHost *:80>
ServerName www.vivek.com
DocumentRoot /var/www/vivek

# Other directives here
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/vivek/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>

</VirtualHost>



<VirtualHost *:80>
ServerAdmin webmaster@localhost

DocumentRoot /var/www
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>

ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>

ErrorLog ${APACHE_LOG_DIR}/error.log

# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn

CustomLog ${APACHE_LOG_DIR}/access.log combined

Alias /doc/ "/usr/share/doc/"
<Directory "/usr/share/doc/">
Options Indexes MultiViews FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
Allow from 127.0.0.0/255.0.0.0 ::1/128
</Directory>

</VirtualHost>

Tức là tôi đã thêm những dòng sau

# Ensure that Apache listens on port 80
Listen 80

# Listen for virtual host requests on all IP addresses
NameVirtualHost *:80

<VirtualHost *:80>
ServerName www.vivek.com
DocumentRoot /var/www/vivek

# Other directives here
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/vivek/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>

</VirtualHost>

Đến tệp mặc định đã có trong thư mục "trang web khả dụng" (đã sao lưu tệp mặc định trước khi chỉnh sửa tệp)

Đã thêm phần này vào tệp máy chủ có trong / etc / hosts

127.0.0.1 localhost
127.0.1.1 vivek-PC
127.0.0.1 www.vivek.com

Thực hiện các thao tác sau không có lỗi:

root@vivek-PC:~# a2ensite vivek.com
Enabling site vivek.com.
Run '/etc/init.d/apache2 reload' to activate new configuration!
root@vivek-PC:~# /etc/init.d/apache2 reload
* Reloading web server config apache2

Khi tôi nhập www.vivek.com, nó đưa cho tôi index.html mặc định /var/wwwnhưng không có trong thư mục / var / www / vivek được chỉnh sửa.

Sau đó, tôi đã chỉnh sửa index.html từ /var/wwwnhưng tôi vẫn nhận được cùng một index.html (mặc định - trước khi chỉnh sửa). Tất cả các index.html đã được chỉnh sửa nhưng dường như Apache có một số ẩn nào đó xuất hiện khi tôi yêu cầuwww.vivek.com

Và điều trớ trêu là sau khi tôi khởi động lại - Apache đã hoạt động tốt nhưng trang web của tôi - www.vivek.comkhông hiển thị (ngay cả với index.html, vị thần bị ẩn cũng biết ở đâu !!) .. Bây giờ trình duyệt của tôi đang hiển thị "Không thể kết nối "

Xin hãy giúp đỡ. Tôi đã cố gắng thiết lập điều này kể từ một tuần mà không có kết quả thành công.

Câu trả lời:


6

Sau đó, tôi đã chỉnh sửa index.html từ / var / www nhưng tôi vẫn nhận được cùng một index.html (mặc định trước khi chỉnh sửa). Tất cả các index.html đã được chỉnh sửa nhưng dường như Apache có một số ẩn nào đó sẽ xuất hiện khi tôi yêu cầu www.vivek.com

Bằng cách đọc này, tôi đoán rằng bạn đang xem một tập tin lưu trữ. Thay vì nhấn F5hoặc nhấn nút Làm mới, hãy bỏ qua bộ đệm khi làm mới bằng cách nhấn Ctrl+ F5.

Cách khác, sử dụng chương trình dòng lệnh curl(không được cài đặt theo mặc định). Ví dụ sử dụng:

$ curl -i http://localhost/
HTTP/1.1 200 OK
Date: Sat, 02 Jul 2011 00:42:01 GMT
Server: Apache/2.2.17 (Ubuntu)
Last-Modified: Fri, 01 Jul 2011 04:12:49 GMT
ETag: "4507-b1-4a6fa3b114149"
Accept-Ranges: bytes
Content-Length: 177
Vary: Accept-Encoding
Content-Type: text/html

<html><body><h1>It works!</h1>
<p>This is the default web page for this server.</p>
<p>The web server software is running but no content has been added, yet.</p>
</body></html>

Một lưu ý: Tôi đã làm như sau khi cài đặt apache sạch:

  • Thêm tệp cấu hình đầu tiên của bạn vào /etc/apache2/sites-available/vivek.com
  • ( /etc/apache2/sites-available/default không bị ảnh hưởng )
  • Chạy sudo a2ensite vivek.com
  • Chạy sudo /etc/init.d/apache reload

Tôi nhận được tin nhắn tương tự như bạn. Tuy nhiên, máy chủ không khởi động được. Khi dừng máy chủ bằng cách sử dụng sudo /etc/init.d/apache2 stopvà bắt đầu lại bằng cách sử dụng sudo /etc/init.d/apache2 start, nó đã từ chối bắt đầu. Nhìn vào nhật ký lỗi /var/log/apache2/error.logcho thấy một số lỗi:

[Sat Jul 02 00:48:09 2011] [notice] Graceful restart requested, doing restart
apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName
[Sat Jul 02 00:48:09 2011] [warn] NameVirtualHost *:80 has no VirtualHosts
(98)Address already in use: make_sock: could not bind to address 0.0.0.0:80
no listening sockets available, shutting down
Unable to open logs

Vì vậy, cổng 80 dường như đang được sử dụng. Nhưng nếu Apache chưa được khởi động, tôi có thể xác nhận rằng không có gì lắng nghe trên cổng 80 bằng cách chạy sudo netstat -tpln. Tôi đã xem lại cấu hình và kết luận rằng dòng Listen 80này sẽ bị xóa khỏi tệp cấu hình của bạn /etc/apache2/sites-available/vivek.com. Sau đó, tôi có thể khởi động lại máy chủ và sử dụng curl, tôi xác nhận rằng máy chủ đang phản hồi chính xác các yêu cầu.

KISS , khối vhost thứ hai của bạn là dự phòng vì nó được bao phủ bởi /etc/apache2/sites-available/default. Tệp cấu hình tiếp theo là /etc/apache2/sites-available/vivek.com:

<VirtualHost *:80>
    ServerName www.vivek.com
    DocumentRoot /var/www/vivek

    # Other directives here
    <Directory />
        Options FollowSymLinks
        AllowOverride None
    </Directory>
    <Directory /var/www/vivek/>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride None
        Order allow,deny
        allow from all
    </Directory>
</VirtualHost>

1

Có một tập lệnh làm cho điều này trở nên đơn giản cho bạn - https://github.com/RoverWire/virtualhost

Điều này cuối cùng thực hiện cùng một câu như được giải thích bởi các câu trả lời được đưa ra nhưng thực hiện nó chỉ trong một lệnh, ví dụ. -

sudo virtualhost create mysite.local my_site

Nó cũng cho phép bạn xóa một máy chủ bạn đã tạo

sudo virtualhost delete mysite.local my_site

Chỉ cần lưu ý rằng "my_dir" giả định rằng nó bắt đầu sau / var / www

Vì vậy, nếu thư mục trang web của bạn nằm trong / var / www / my_site

Bạn nên chạy cái này (vượt qua đường dẫn thư mục không có / var / www) -

sudo virtualhost create mysite.local my_site

Bạn cũng có thể sửa đổi tệp tập lệnh và xóa đường dẫn mặc định "/ var / www" để bạn có thể chuyển một đường dẫn tuyệt đối đến thư mục trang web

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.