Tôi cần biết gì về máy chủ trong vai trò phát triển web? [đóng cửa]


12

Tôi biết điều đó nghe có vẻ hơi mơ hồ, vì vậy tôi sẽ cố gắng giải thích thêm một chút ...

Sau khi tự làm chủ nhà phát triển trong nhiều năm, giờ tôi đang tìm kiếm vai trò nhà phát triển web thương mại. Kinh nghiệm duy nhất của tôi với máy chủ và lưu trữ là tải lên qua FTP và chơi xung quanh với CPanel / WHM một chút. Vai trò mà tôi sẽ thực hiện là vai trò phát triển web PHP, MySQL, HTML, CSS, nhưng trong các cuộc phỏng vấn gần đây tôi đã được hỏi về việc thiết lập mọi thứ trên máy chủ, rằng tôi không biết điều gì đang được nói ... Điều đó không lý tưởng!

Không biết nhiều hơn tôi, thật khó để giải thích chính xác những gì tôi đang tìm hiểu, nhưng về cơ bản, đó chỉ là các yếu tố máy chủ mà tôi nên biết khi là nhà phát triển web? Nếu bạn là nhà phát triển web, bạn có bất kỳ giao dịch nào với máy chủ ngoài việc tải lên các tệp không và nếu có thì sao? Có phải những thứ như Subversion (SVN) và các hệ thống kiểm soát phiên bản thường được thiết lập bởi nhóm phát triển web, đó có thể là những gì họ đang nói về không?



3
Tôi nghĩ rằng cái này cụ thể hơn về máy chủ mặc dù :)
Michael Durrant

2
Tôi ghét phải chia sẻ nó với bạn, nhưng nếu bạn không thể định cấu hình máy chủ web thì bạn không phải là nhà phát triển web rất có giá trị và đó không phải là thứ bạn có thể nhanh chóng tìm hiểu trong sách. Thay vì làm một công việc nửa mông trong việc học các thành phần máy chủ từ một cuốn sách. Tốt hơn hết là bạn nên hoàn thiện các kỹ năng PHP của mình và đăng ký làm lập trình viên PHP.
Phản ứng

@MathewFoscarini vì tôi không giỏi nên tôi nên tránh nó và chỉ hoàn hảo những gì tôi biết? Lời khuyên này có khiến thế giới bị đình trệ không? not a very valuable web developerlà những gì tôi đang cố gắng vượt qua, vì vậy tôi rất vui khi tìm hiểu về nó một cách đúng đắn, tôi chỉ không biết làm thế nào tốt nhất để học về điều này, và lĩnh vực nào cần tập trung vào đầu tiên.
John

@john Bạn đã hỏi trong bối cảnh được thuê làm nhà phát triển web. Một cái gì đó bạn không đủ điều kiện cho. Nếu đó là những gì bạn muốn được thuê, thì bằng mọi cách hãy làm điều đó nhưng đừng mong đợi một giải pháp ngắn hạn để trả lời các câu hỏi trong một cuộc phỏng vấn. Tôi hy vọng rằng nhà tuyển dụng đang cố gắng loại bỏ các ứng viên không có kinh nghiệm nghề nghiệp thực tế làm việc trên các máy chủ. Ấn tượng của tôi từ câu hỏi của bạn là bạn đang cố gắng để có được một công việc làm những gì bạn không thể làm như một freelancer. Bạn có thể thử tìm một khách hàng sẵn sàng trả tiền khi bạn học các kỹ năng máy chủ này.
Phản ứng

Câu trả lời:


10

Đây là một bộ câu hỏi lớn, nhưng tôi nghi ngờ một câu hỏi mà rất nhiều người cần phải giải quyết, đặc biệt khi họ bắt đầu thăng tiến trong sự nghiệp bắt đầu với sự tập trung từ phía trước.

Bạn đề cập rằng bạn sẽ có một vai trò bao gồm phát triển PHP và MySQL. Đây là những thứ cần phải thực thi trên máy chủ. Để có thể đưa ra những đánh giá kỹ thuật tốt với tư cách là một nhà phát triển đòi hỏi bạn phải hiểu được cách thức những thứ này hoạt động trên máy chủ và cách chúng tương tác với web front-end. Vì vậy, rõ ràng bạn cần phát triển sự hiểu biết về máy chủ.

Thay vì cố gắng tìm ra cơ thể kiến ​​thức chính xác mà bạn có thể cần về máy chủ, tôi khuyên bạn nên đi sâu vào và xây dựng một cái gì đó bao gồm tự mình cài đặt tất cả phần mềm phía máy chủ. Một cách tuyệt vời để làm ướt chân bạn là cài đặt Linux trên máy tính của bạn. Bạn có thể sử dụng một cái gì đó như VirtualBox để cho phép nó chạy cùng với hệ điều hành hiện tại của bạn. Cài đặt MySQL, cài đặt và thiết lập máy chủ cho PHP và cố gắng để mọi thứ hoạt động cùng nhau. Điều tuyệt vời là, những ngày này, một máy tính xách tay được trang bị tốt vừa phải có thể chạy tất cả những thứ này và là "máy chủ".Điều này có thể khó khăn ngay từ đầu, đặc biệt nếu bạn không có kinh nghiệm sử dụng Linux và dòng lệnh. Là một nhà phát triển, ít nhất bạn nên biết đủ để có thể vượt qua bài tập này và nó sẽ cho bạn một bước khởi đầu trong việc tìm ra cách nâng cao kiến ​​thức của bạn.

Có ba lĩnh vực mà bạn có thể sẽ cần để tăng tốc:

  1. Những điều cơ bản của hệ điều hành Linux. Có thể bắt đầu với một bản phân phối dễ cài đặt như Ubuntu.
  2. Thiết lập một máy chủ web và PHP. Cài đặt Apache là một nơi tốt để bắt đầu. Có những lựa chọn thay thế khác, nhưng đây là nơi hầu hết mọi người bắt đầu.
  3. Học những điều cơ bản về cài đặt và chạy MySQL. Ít nhất, là một nhà phát triển, có lẽ bạn sẽ cần có khả năng viết DDL để tạo các bảng và các cấu trúc khác trong cơ sở dữ liệu và bạn chắc chắn sẽ cần có thể truy vấn cơ sở dữ liệu trên máy chủ để khám phá dữ liệu và đảm bảo những gì của bạn ứng dụng đang phun ra phù hợp với những gì có trong cơ sở dữ liệu.

Nếu bạn đã đi với Ubuntu, bạn có thể làm theo các hướng dẫn cơ bản ở đây để tự đứng dậy và chạy. Lưu ý, bạn sẽ phải thực hiện khá nhiều điều cơ bản về Linux trước khi bắt đầu cài đặt và chơi với các thành phần cơ sở dữ liệu / máy chủ web.

Về cách các nhà phát triển cần tương tác với máy chủ, ngoài việc tải lên các tệp, tôi nghĩ rằng điều này thay đổi rất nhiều từ tổ chức này sang tổ chức khác.

  1. Các nhà phát triển thường giao dịch với chính quyền của ít nhất là môi trường phát triển. Đôi khi, chính các nhà phát triển đang thiết lập hệ thống kiểm soát sửa đổi (ví dụ SVN) và quy trình triển khai (di chuyển mã qua các môi trường).
  2. Theo quan điểm của bạn, ít nhất các nhà phát triển sẽ cần sử dụng hệ thống kiểm soát sửa đổi đang sống trên máy chủ.
  3. Bạn cũng sẽ cần phải làm những việc như xem nhật ký trên máy chủ để xem tin nhắn nào đang được tạo để giúp chẩn đoán và giải quyết vấn đề.
  4. Bạn có thể cần phải làm việc với một nhóm cơ sở hạ tầng để xác định những thứ như cấu hình mạng hoặc cấu hình lưu trữ của máy chủ. Thông thường, các vấn đề ứng dụng là sự kết hợp giữa cấu hình và mã.

Vấn đề là không có một câu trả lời duy nhất cho chính xác bạn sẽ cần chạm vào máy chủ như thế nào, nhưng trong quá trình sự nghiệp của bạn, nó chắc chắn sẽ vượt ra ngoài việc tải lên các tệp thông qua một cái gì đó như FTP. Bắt đầu bằng cách học những điều cơ bản bây giờ sẽ giúp.


Câu trả lời tuyệt vời, cảm ơn! Vì vậy, khi tôi thiết lập 'Mamp' cho công việc địa phương, điều đó có giống nhưng không có quyền truy cập vào thế giới bên ngoài không? Tôi đã cài đặt một vài hệ điều hành Linux và biết một số dòng lệnh nhỏ nhưng không có gì tôi dễ nhớ. Kiến thức về máy chủ của tôi là không tồn tại, nhưng tôi luôn nghĩ rằng chúng chỉ được truy cập bằng dòng lệnh và không giống như một hệ điều hành thân thiện với người dùng, có phải vậy không?
john

2
Tốt nhất là thoải mái khi sử dụng dòng lệnh. Hầu hết các máy chủ web 'thực' mà bạn sẽ xử lý sẽ là các máy từ xa và sẽ không cài đặt GUI.
GrandmasterB

2
Như @GrandmasterB đã viết, thật hữu ích khi bắt tay với dòng lệnh. Theo tôi, Linux là một nền tảng học tập tốt bởi vì nó buộc bạn phải "gần gũi với kim loại" trong việc tìm hiểu về những gì HĐH đang làm ngoài những gì bạn thấy trên màn hình. Nhìn vào tệp httpd.conf, hiểu máy chủ web thực sự đang làm gì và mô-đun PHP tích hợp với nó như thế nào. Có được sự hiểu biết cơ bản về nền tảng và nó sẽ giúp bạn trở thành một nhà phát triển tốt hơn.
DemetriKots

Tôi đã chuyển từ linux sang máy chủ Windows vài năm trước và không bao giờ nhìn lại. Linux rất tuyệt vời và mạnh mẽ nhưng bạn phải sử dụng các công cụ phù hợp nhất với yêu cầu của công việc.
Phản ứng

2

Lời khuyên đầu tiên của tôi là không giới hạn bản thân trong bất kỳ một vai trò nào. Thật tuyệt khi trở thành một chuyên gia và có kiến ​​thức sâu rộng trong một bộ kỹ năng cụ thể (ví dụ PHP). Tuy nhiên, điều quan trọng là phải có kiến ​​thức rộng rãi trải rộng trên phần còn lại của tên miền của bạn.

Theo kinh nghiệm của tôi, hầu hết các đội không tìm cách thuê một người có kiến ​​thức để viết lại chức năng cốt lõi của PHP, mà là ai đó có thể xử lý bất kỳ vấn đề nào được ném vào họ (mặc dù mức độ kiến ​​thức đó chắc chắn sẽ không bị tổn thương). Hoặc ít nhất là ai đó có thể giúp giải quyết bất kỳ vấn đề nào mà nhóm gặp phải. Ví dụ, hãy tưởng tượng một tình huống mà ứng dụng của bạn bị hỏng và khách hàng đang bị ảnh hưởng. Bạn có thể giơ tay và nói "Tôi không biết phải làm gì ..." hoặc bạn có thể SSH vào máy chủ, bắt đầu quét nhật ký, nhận thấy rằng không gian đĩa của một hệ thống tệp cụ thể đã đầy và tiến hành xóa sạch. Đây là một ví dụ nhỏ nhưng tôi nghĩ rằng điểm này là rõ ràng. Với kiến ​​thức cơ bản đó, là một nhà phát triển, bạn có thể viết một tập lệnh theo dõi hệ thống tập tin cụ thể đó và xóa nó đi khi nó đạt đến một ngưỡng nhất định. Bây giờ bạn đã trở nên có giá trị hơn nhiều đối với người quản lý của bạn.

Một điều khác tôi đã học được trong sự nghiệp của mình, đó là mọi thứ diễn ra nhanh chóng, và nếu bạn không theo kịp, bạn sẽ bị bỏ lại phía sau. Bạn càng biết nhiều về toàn bộ môi trường của mình (bao gồm các khía cạnh kinh doanh), bạn càng có lợi. Điều đó không có nghĩa là bạn cần phải là một chuyên gia trong mọi việc bạn làm, nhưng ít nhất phải có kiến ​​thức để không bị gắn mác là không biết gì. Bạn càng quen thuộc, bạn càng dễ thích nghi và tài sản của bạn càng có giá trị đối với công ty của bạn.

Để trả lời cụ thể câu hỏi của bạn ...

  • Những yếu tố máy chủ nào tôi nên biết khi là nhà phát triển?

Hãy làm quen với toàn bộ ngăn xếp ứng dụng. Biết những gì máy chủ web, cơ sở dữ liệu, cơ chế lưu trữ, vv đang được sử dụng. Và phiên bản nào cũng vậy. Có đủ sự quen thuộc để bạn có thể tạo lại môi trường trên máy chủ của riêng bạn. Mà, trong và của chính nó, là rất quan trọng. Bạn nên cố gắng ít nhiều có cùng môi trường trong phát triển và sản xuất, vì nó làm giảm những điều bất ngờ ( http://12factor.net/dev-prod-parity ).

  • Là một nhà phát triển, bạn có giao dịch gì với máy chủ?

Điều này thực sự phụ thuộc vào đội. Trong trường hợp cụ thể của tôi, các nhà phát triển đóng một vai trò rất lớn trong việc dàn dựng các môi trường. Chúng tôi quen thuộc nhất với các hoạt động bên trong của ứng dụng và do đó, ở vị trí tốt nhất để xác định công nghệ máy chủ nào được áp dụng để chạy nó. Tôi tưởng tượng không phải tất cả các đội đều có cách tiếp cận như vậy, nhưng để có đủ sự quen thuộc để có thể tham gia vào các cuộc thảo luận là một lợi thế lớn. Cụ thể, liên quan đến kiểm soát phiên bản, bạn là nhà phát triển bị ảnh hưởng rất nhiều bởi công nghệ nào được chọn (Git, Subversion, Mercurial, v.v.), và do đó nên cố gắng tham gia vào quá trình quyết định.

Thế bây giờ thì thế nào?

Đối với gợi ý của tôi là làm thế nào tốt nhất để tiếp cận việc học tất cả những điều này? Di chuyển bàn chân của bạn . Đừng lo lắng về việc cố gắng đọc mọi thứ bạn có thể về chủ đề này, hầu hết có thể sẽ bị rò rỉ ra khỏi não của bạn khi bạn kết thúc. Thay vào đó bắt đầu phát triển một cái gì đó từ mặt đất lên. Bắt đầu với Vagrant ; nó sẽ cho phép bạn dễ dàng tạo và quản lý một máy ảo mà bạn có thể sử dụng làm sân chơi mới. Sau đó, cài đặt một máy chủ web và cơ sở dữ liệu và bắt đầu tạo. Nếu bạn có ý tưởng cho một ứng dụng, hoàn hảo, hãy thực hiện nó ... nếu không, hãy tìm một hướng dẫn hoặc cố gắng tạo lại một ứng dụng hiện có. Vấn đề là chỉ cần làm quen với toàn bộ quá trình. Ngoài ra, là một nhà phát triển PHP, hãy chắc chắn kiểm tra PHP: The Right Way... Nó thực sự chứa rất nhiều thông tin tuyệt vời. Và quan trọng nhất, đừng căng thẳng quá. Tôi tưởng tượng bạn đã đi theo con đường của một nhà phát triển bởi vì đó là thứ bạn thích và đam mê ... đừng đánh mất điều đó!


1

Tập trung vào những gì bạn cần biết về máy chủ để trở thành một nhà phát triển web? ...

Thật ra ít ngạc nhiên. Các lĩnh vực kiến ​​thức chính của bạn nên là lập trình, html, php, v.v.

Những gì bạn cần biết là làm thế nào để chạy mọi thứ cục bộ và khi bạn làm điều này, bạn đang sử dụng hộp của mình như một 'máy chủ'. Vì vậy, khi chạy cục bộ, bạn sử dụng trình duyệt web để xem các trang, giống như với bất kỳ trang web internet nào ... ngoại trừ trang của bạn sẽ http://localhosthoặchttp://127.0.0.1

Đối với việc định cấu hình cgi, http, v.v. Tôi không mong đợi bạn cần biết điều đó. Bạn luôn có thể làm việc thông qua bất kỳ cuốn sách chung nào về việc thiết lập máy chủ web cho HĐH mà bạn làm việc và điều đó sẽ đủ để biết các điều khoản chung.

Để có bức tranh lớn hơn, tôi khuyên bạn nên truy cập Linux và tìm hiểu cách thiết lập và định cấu hình các máy như máy chủ web. Nhưng chỉ khi bạn thực sự có hứng thú với những thứ này. Không chỉ để gây ấn tượng trong các cuộc phỏng vấn.

Cuối cùng tôi sẽ khuyên bạn nên xem xét ghi chú trong các cuộc phỏng vấn về các lĩnh vực bạn không biết đủ. Sẽ có ích nếu câu hỏi của bạn cụ thể hơn về những điều khoản nào, v.v. bạn không biết.


Cảm ơn. Dù sao tôi cũng muốn học nếu thời gian cho phép. Một cuốn sách loại 'linux for dummies' sẽ giúp tôi ở đây. Tôi sẽ sớm chuyển máy chủ, Amazon AWS lưu trữ thứ gì đó có lợi cho tôi với một công việc nhỏ hay nó hoàn toàn khác?
john

1
Tôi sẽ không sử dụng một cuốn sách giả. Phần lớn có thể không liên quan. Tôi sẽ thử lướt qua một cái gì đó như Quản trị máy chủ web, ví dụ: cengagebrain.com/shop/en/US/storefront/ mẹo
Michael Durrant

có, chạy linux như máy devlopment của bạn và thiết lập một máy chủ web trên đó. Làm quen với việc chơi với nó và cấu hình nó. Bạn sẽ học đủ theo cách đó. Đó là cách cơ bản bạn học trong công việc. Một nửa công cụ nằm dưới sự kiểm soát của hệ thống, có thể tốt khi bắt đầu, nhưng khi bạn tiến bộ, bạn sẽ thích được cung cấp thêm conrtol của thiết lập.
wobbily_col

0

Bạn cần biết những điều dưới đây để hoàn thành chu trình phát triển web.

1) IDE (Netbeans và Eclipse, v.v.)

2) Bất kỳ ngôn ngữ lập trình cho mã hóa. (PHP, java, v.v.)

3) Công nghệ mặt trước để thiết kế trang (HTML, CSS, v.v.)

4) Sao lưu cơ sở dữ liệu để lưu trữ và truy xuất dữ liệu. (MySQL, v.v.)

3) Hệ thống kiểm soát phiên bản để kiểm tra và truy xuất kho lưu trữ mẫu mã của bạn.

4) xây dựng công cụ để biên dịch mã cho bạn với các tệp phụ thuộc. (Kiến, Maven)

6) Máy chủ web để triển khai và chạy mã của bạn.

7) Cần biết quy trình triển khai cơ bản trên các máy chủ để chạy và kiểm tra thành phần web và ejb của bạn. (Tomcat, máy chủ Web-Logic)


0

Ngoài câu trả lời của DemetriKots, tôi cũng thêm vào việc xem xét các giải pháp để triển khai tự động và tích hợp liên tục. Thiết lập máy chủ ban đầu chỉ là một bước và việc triển khai qua FTP rất khó khăn và dễ bị lỗi, không có giải pháp thích hợp nào để đẩy lùi các triển khai xấu.

  • Hudson - Máy chủ tích hợp liên tục
  • Phing - công cụ xây dựng tự động, đặc biệt dành cho PHP, dựa trên Ant
  • Ant - công cụ xây dựng tự động
  • Capistrano - tạo tập lệnh triển khai để tự động hóa và dễ dàng triển khai ứng dụng web của bạn.
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.