2008-08-13 37 views
8

Có ai có thể chạy xinc để chạy đúng theo Apache mặc định của OpenBSD không? Tôi muốn giữ cho máy chủ phát triển của chúng tôi chạy hoàn toàn chroot giống như máy chủ sản xuất của chúng tôi để chúng tôi đảm bảo rằng mã của chúng tôi chạy tốt chroot.Chạy xinc trên Máy chủ Apache của OpenBSD

Trả lời

2

Bạn đã đăng sự cố trên Xinc bug tracker chưa? Xinc chính nó sẽ chạy tốt vì nó chạy cả như một daemon và như một ứng dụng web. Như bạn đã ám chỉ, vấn đề có thể là daemon không chạy trong môi trường chroot'ed nơi mà giao diện web là, dẫn đến hai bên không lấy các tập tin.

0

Không bao giờ sử dụng xinc bản thân mình, tôi chỉ có thể gợi ý như thế nào tôi thường nhận được để chroot ứng dụng.

Bước đầu tiên là thu thập thông tin về mọi thứ mà ứng dụng cần chạy; điều này tôi thường thực hiện bằng cách chạy systrace(1)ldd(1) để tìm hiểu những gì cần thiết để chạy phần mềm.

Đi qua đầu ra của

systrace -A -d. <app> 
ldd <app> 

và chắc chắn rằng tất cả những gì chạm ứng dụng và nhu cầu (khá nhiều ứng dụng chạm vào những thứ nó không thực sự cần) có sẵn trong môi trường chroot. Bạn có thể cần phải tinh chỉnh các cấu hình và biến môi trường một chút. Ngoài ra, nếu có một tùy chọn để có nhật ký ứng dụng cho syslog, tôi thường làm điều đó và tạo một ổ cắm syslog (xem tùy chọn -a của syslogd(8)) để giảm các địa điểm mà ứng dụng cần quyền truy cập ghi vào.

Những gì tôi vừa mô tả là cách chung để làm bất kỳ chương trình nào chạy trong môi trường chroot (tuy nhiên, nếu bạn cần nhập một nửa vùng người dùng và một số lệnh suid, bạn có thể không muốn chroot :). Đối với các ứng dụng chạy dưới Apache (Tôi chắc rằng bạn biết rằng OpenBSD httpd(8) hơi khác một chút), bạn có tùy chọn (khi chương trình đã bắt đầu; bất kỳ thư viện động nào vẫn cần phải có mặt trong nhà tù) bằng cách sử dụng apache để truy cập các tệp, cho phép sử dụng httpd.conf để nhập tài nguyên trong môi trường chroot mà không thực sự sao chép chúng.

Cũng hữu ích (nếu hơi lỗi thời) là liên kết this, phác thảo một số gotchas trong chroot PHP trên OpenBSD.

0

Bước đầu tiên là thu thập thông tin về mọi thứ mà ứng dụng cần chạy; điều này tôi thường thực hiện bằng cách chạy systrace (1) và ldd (1) để tìm ra những gì cần thiết để chạy phần mềm.

Tôi sẽ dùng thử. Vấn đề lớn mà tôi tìm thấy với xinc là trong khi nó là một ứng dụng PHP, nó muốn biết các đường dẫn cài đặt ứng dụng (nhưng nó vẫn lan truyền các thứ vào các thư mục khác) và chạy một số kịch bản lệnh PHP trong chế độ daemon. chạy). Vì vậy, ví dụ, tôi nói với nó để cài đặt vào thư mục/var/www/xinc và sau đó thực hiện một liên kết tượng trưng của

/var/www/var/www/xinc ->/var/www/xinc

và nó làm việc một phần. Tôi có GUI để đi lên bit nó từ chối nhận ra bất kỳ dự án mà tôi đã thiết lập. Tôi nghĩ rằng vấn đề lớn nhất là một phần của nó đang chạy một chroot và một nửa khác đang chạy bên ngoài.

Nếu mọi thứ khác không thành công, tôi sẽ chỉ phải xây dựng một cái gì đó khi chúng tôi lập trình bên trong môi trường chroot kể từ khi sản xuất của chúng tôi bị chroot. Chúng tôi đã gặp phải các vấn đề mà chúng tôi viết bên ngoài một chroot và sau đó phải quay lại để tìm ra những gì chúng tôi cần để làm cho nó hoạt động bên trong một chroot.

1

@dragonmantank

Trong trường hợp của Xinc, tôi hy vọng bạn đã sử dụng PEAR để cài đặt.

pear list-files xinc/Xinc 

Điều này nên thực hiện và chỉ cho bạn nơi cài đặt Xinc của bạn đặt tệp của nó. Vì vậy, mặc dù Xinc là "chỉ" một kịch bản PHP lớn, nó vẫn lan rộng ra thành các tập lệnh rc và tất cả những thứ khác cần thiết để làm cho một ứng dụng chạy. Tôi chắc rằng bạn không cần phải thêm tất cả các đường dẫn được liệt kê ở đó, nhưng có lẽ một số để làm cho nó chạy.

Ngoài Xinc bản thân, tôi nghĩ rằng nó cũng cần phpUnit và một loạt các libs PEAR khác để chạy, vì vậy những gì tôi muốn đề xuất này là:

pear config-get php_dir 

Và sau đó bạn cần phải thêm con đường đó (như Henrik gợi ý) cho môi trường chroot.

Các vấn đề liên quan