2008-09-22 37 views
10

Tôi đã luôn luôn chỉ tập tin FTP xuống từ các trang web, chỉnh sửa chúng và đặt chúng sao lưu khi tạo trang web, nhưng cảm thấy nó có giá trị học tập để làm những việc đúng.Cách tốt nhất để sử dụng SVN để kiểm soát phiên bản trang web PHP là gì?

Tôi vừa cam kết mọi thứ vào một repo SVN, và đã thử sshing vào máy chủ và kiểm tra xây dựng được gắn thẻ, cũng như cập nhật bản dựng đó bằng cách sử dụng nút chuyển.

Tất cả đều tốt, nhưng chậm hơn rất nhiều so với quy trình hiện tại của tôi.

Cách tốt nhất để thiết lập điều gì đó như thế này? Hầu hết thời gian của tôi chỉ là sửa lỗi hoặc thay đổi nhỏ thay vì viết lại lớn, vì vậy tôi thường xuyên cập nhật mọi thứ.

+1

Các câu hỏi của nó như thế khiến tôi yêu trang web này. Tôi đã có cùng một câu hỏi và Google đã tìm thấy câu trả lời trên trang web yêu thích của tôi :) –

Trả lời

7

Bạn không nhất thiết phải sử dụng SVN để triển khai tệp cho máy chủ. Tiếp tục sử dụng FTP cho điều đó và chỉ sử dụng SVN cho lịch sử sửa đổi.

+0

Không, đây là một ý tưởng tồi. Triển khai của bạn cần phải là 1 cú nhấp chuột; chỉ với FTP, bạn sẽ không có thiết lập cơ sở dữ liệu phụ trợ. –

+0

Đối với công việc tư vấn, đây là một giải pháp hoàn toàn có thể chấp nhận được. –

2

Để cập nhật nhanh, tôi chỉ chạy svn update từ máy chủ.

Đôi khi để cập nhật thực sự nhanh chóng, tôi chỉnh sửa các tệp bằng cách sử dụng vim và cam kết chúng từ máy chủ.

Nó không phải là rất phù hợp, nhưng nhanh chóng và khá đáng tin cậy.

1

Nếu bạn muốn làm điều này đúng cách, bạn chắc chắn nên xem xét việc thiết lập một kho lưu trữ SVN cục bộ. Tôi cũng khuyên bạn nên thiết lập một máy chủ tích hợp liên tục (CI) như kiểm soát hành trình, sẽ tự động chạy bất kỳ kiểm tra nào đối với mã PHP của bạn khi bạn đăng nhập vào svn. Máy chủ CI của bạn cũng có thể được sử dụng để xuất bản các tệp của bạn qua FTP tới máy chủ của bạn chỉ bằng một lần bấm nút, một khi nó đã vượt qua các bài kiểm tra.

Mặc dù điều này nghe có vẻ như rất nhiều công việc, nó thực sự không phải là và lợi ích của một quá trình triển khai trơn tru sẽ nhiều hơn trả tiền cho chính nó trong thời gian dài.

1

Đối với các dự án của tôi, tôi thường có repo. Trên máy tính xách tay của tôi là một bản sao làm việc, và trang web trực tiếp là một bản sao làm việc. Tôi thực hiện các thay đổi trên bản sao cục bộ, sử dụng máy chủ web cục bộ của tôi. Khi tất cả mọi thứ được kiểm tra và sẵn sàng để đi, tôi cam kết những thay đổi, sau đó tôi ssh vào máy chủ từ xa và cập nhật svn.

Tôi cũng giữ một thư mục trong kho lưu trữ này chứa các tệp sql của bất kỳ thay đổi nào tôi đã thực hiện cho cấu trúc cơ sở dữ liệu, được gắn nhãn theo số sửa đổi của chúng. Ví dụ, khi tôi cam kết sửa đổi 74 và nó có thêm một vài cột trong một trong các bảng, được bao gồm trong cam kết sẽ là dbupdates/rev74.sql. Bằng cách đó, sau khi tôi cập nhật svn của tôi, tất cả tôi chỉ cần chạy tập tin sql của tôi (mysql db_name -p -u tên người dùng < dbupdates/rev74.sql) và tôi tốt để đi.

0

Những gì tôi làm tại nơi làm việc, là sử dụng FTP để tải các thay đổi lên máy chủ thử nghiệm. Sau đó, khi tôi kết thúc với phần của trang web mà tôi đang làm việc, tôi cam kết các thay đổi và cập nhật cả hai. Đôi khi, nếu tôi đang làm việc trên một cái gì đó và tôi thay đổi rất nhiều tập tin trong thư mục khác nhau, tôi cam kết nó và cập nhật các máy chủ thử nghiệm. Nhưng tôi không cập nhật máy chủ sản xuất. Nhưng tôi là lập trình duy nhất ở đây, tôi sẽ không khuyên bạn nên thực hiện mã buggy sở hữu nếu có nhiều hơn một lập trình viên.

1

Nếu bạn muốn thực sự sôi nổi với nó, bạn có thể sử dụng tập lệnh xây dựng để lấy phiên bản hiện tại từ SVN, sau đó compile mã PHP của bạn, sau đó xây dựng thành công, tự động đẩy các thay đổi vào máy chủ của bạn.

Điều này sẽ giúp gỡ lỗi và có thể làm cho mã của bạn chạy nhanh hơn.Ngoài ra, việc xây dựng thói quen xây dựng đã thực sự cải thiện việc viết mã của tôi qua việc đẩy PHP thẳng vào máy chủ và gỡ lỗi thông qua Firefox.

+0

tôi tự hỏi ai đã nói gì về "biên dịch php" ?? – Qchmqs

+0

@Qchmqs không ai làm. Nhưng việc thêm một bước biên dịch cho bạn cơ hội để kiểm tra tự động và phát hiện lỗi trước khi đẩy nó vào máy chủ. –

+0

vẫn không nhận được nó, tại sao bạn muốn compille php ?? – Qchmqs

1

Lợi ích của kiểm soát nguồn cho thấy bản thân họ là sự phức tạp của dự án và số lượng nhà phát triển tăng lên. Nếu bạn đang làm việc trực tiếp trên máy chủ từ xa và chỉ thực hiện các bản vá nhanh hầu hết thời gian, kiểm soát nguồn có thể không đáng để bạn nỗ lực.

Tốt hơn là bạn nên làm việc từ bản sao lưu trữ cục bộ của kho lưu trữ (nghĩa là bạn cũng nên thiết lập máy chủ cục bộ). Làm việc với một máy chủ từ xa bằng cách sử dụng SVN như là phương tiện duy nhất để cập nhật nó sẽ làm chậm bạn xuống khá đáng kể. Có nói rằng, làm việc với SVN (hoặc bất kỳ điều khiển nguồn khác) sẽ mang lại nhiều lợi ích trong thời gian dài - bạn có toàn bộ lịch sử thay đổi, bạn luôn có thể đảm bảo máy chủ được cập nhật (nếu bạn chạy cập nhật) và nếu bạn thêm nhiều nhà phát triển vào dự án, bạn có thể tránh được các nguồn tốn kém ghi đè từ nhau.

0

Tôi sử dụng ZendStudio cho Eclipse (phiên bản hiện tại 6.1). Và tôi sử dụng SVN để giữ mã nguồn của tôi có sẵn. Ban đầu tôi nghĩ rằng quá trình này hơi chậm do quá trình cam kết (và nhập nhận xét cam kết) và chờ cho đến khi nó dừng lại.

Tuy nhiên sau khi biết rằng Ctrl + Alt + C để Cam kết và chọn 'Luôn chạy trong nền', quá trình này không hề chậm.

Ngoài ra, tôi chạy mọi thứ cục bộ, sau đó chỉ có SSH sau một thời gian.

2

Bạn nên xem cài đặt rsync để tải các thay đổi lên máy chủ của mình.

Rsync rất tuyệt vì nó so sánh bản sao cục bộ của bạn với bản sao hiện đang có trên máy chủ và sau đó chỉ gửi các tệp đã thay đổi.

Điều này giúp bạn nhớ mọi tệp mà bạn đã thay đổi và chọn chúng theo cách thủ công sang FTP hoặc phải tải toàn bộ bản sao cục bộ lên máy chủ một lần nữa (và để FTP thực hiện so sánh).

Rsync cũng cho phép bạn loại trừ tệp/thư mục (ví dụ: .vn/thư mục) khi đồng bộ hóa giữa các máy chủ của bạn.

0

Tôi đã thực hiện một móc hậu cam kết tự động cập nhật web của mình. Nó nhanh nhưng bạn có thể phạm sai lầm.

2

Tôi khuyên bạn nên tiếp tục sử dụng Subversion để theo dõi tất cả thay đổi, ngay cả sửa lỗi. Khi bạn muốn triển khai đến máy chủ sản xuất của mình, bạn nên sử dụng SSH và gọi svn update. Quá trình này có thể được tự động sử dụng Capistrano, có nghĩa là bạn có thể ngồi ở hộp địa phương của bạn và gọi cap deploy - Capistrano sẽ SSH vào máy chủ của bạn và thực hiện cập nhật Subversion. Tiết kiệm rất nhiều lao động thủ công tẻ nhạt.

0

NẾU trên máy chủ * nix bạn có quyền truy cập SSH thích hợp bạn có không gian để giữ nhiều bản sao của trang web, THEN đĩa đơn kỹ thuật phiên bản hữu ích nhất mà tôi đã tìm thấy là sử dụng một liên kết tượng trưng để trỏ đến phiên bản "hiện tại" của trang web. (Bạn vẫn có thể sử dụng SVN cho mã nguồn phiên bản - đây là cách dễ dàng/ngay lập tức chuyển đổi giữa các phiên bản của trang web trên máy chủ.)

  1. Thiết lập máy chủ web để trỏ đến /whatever.com là gốc của trang web.

  2. Có một thư mục như/trang web/r1v00 mà bạn FTP các tập tin trang web, sau đó tạo ra một liên kết tượng trưng gọi là "whatever.com" trỏ đến/trang web/r1v00

  3. Khi bạn có một phiên bản cập nhật của trang web, tạo một thư mục khác có tên/website/r1v001, FTP tất cả các tệp cho trang web được cập nhật, sau đó thay đổi liên kết tượng trưng cho "whatever.com" để trỏ đến/website/r1v01. Nếu có bất kỳ vấn đề với các trang web mới, bạn có thể sao lưu nó ra ngay lập tức bằng cách đơn giản chỉ là "whatever.com" liên kết tượng trưng trở lại/trang web/r1v00

Tất nhiên, bạn có thể/nên thiết lập các kịch bản để tự động tạo và chuyển đổi liên kết tượng trưng. Trong trường hợp của tôi, tôi có một trang "quản trị" được viết bằng PHP liệt kê tất cả các phiên bản có sẵn và cho phép tôi chuyển sang bất kỳ phiên bản nào. Kỹ thuật này đã tiết kiệm thịt xông khói của tôi nhiều lần ...!

Rõ ràng điều này không giải quyết bất kỳ vấn đề nào với các lược đồ cơ sở dữ liệu phiên bản hoặc nội dung cơ sở dữ liệu.

+0

Đây không phải là một giải pháp thanh lịch, tất cả sức mạnh vũ phu của nó = / – qodeninja

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