Що мені потрібно знати про сервери в ролі веб-розробки? [зачинено]


12

Я знаю, що це може здатися трохи невиразним, тому я спробую пояснити трохи далі ...

Будучи самозайнятим розробником протягом багатьох років, я зараз шукаю роль комерційного веб-розробника. Єдиний мій досвід роботи з серверами та хостингом - це завантаження через FTP та невелика гра з CPanel / WHM. Ролі, на які я збираюся, - це ролі типу PHP, MySQL, HTML, CSS в Інтернеті, але в останніх інтерв'ю мені задавали питання щодо налаштування речей на сервері, що я не мав уявлення про те, що говорили ... що не було ідеальним!

Не знаючи більше, ніж я, важко пояснити, що саме я хочу дізнатися, але в основному це лише серверні елементи, які я повинен знати як веб-розробник? Якщо ви веб-розробник, чи маєте ви справу з сервером, крім завантаження файлів, і якщо так, то що? Чи можуть такі речі, як Subversion (SVN) та системи контролю версій, створені командою веб-розробників?



3
Думаю, цей сервер більш конкретний щодо серверів :)
Michael Durrant

2
Мені не хочеться порушувати це, але якщо ви не можете налаштувати веб-сервер, ви не дуже цінний веб-розробник, і це не те, що ви можете швидко дізнатися в книзі. Замість того, щоб зайняти половину дупи в навчанні компонентів сервера з книги. Вам краще вдосконалити свої навички PHP та подати заявку як програміст PHP.
Реакційний

@MathewFoscarini, тому що я не добрий у цьому, я повинен уникати цього і вдосконалювати лише те, що знаю? Невже ця порада не призведе до того, що світ загрожує? not a very valuable web developerце те, що я намагаюся подолати, тому я радий дізнатися про це належним чином, я просто не знаю, як найкраще займатися цим навчанням та на яких напрямках зосередити увагу на першому.
Джон

@john Ви запитували в контексті того, як вас прийняли на роботу в якості веб-розробника. Щось, до чого ти не кваліфікований. Якщо ви так хочете прийняти на роботу, тоді будьте готові, але не сподівайтесь на короткострокове рішення відповідей на запитання в інтерв'ю. Я б очікував, що роботодавець намагається відлучити кандидатів, які не мають практичного кар'єрного досвіду роботи на серверах. Моє враження від вашого запитання - ви намагаєтеся влаштуватися на роботу, роблячи те, чого не могли зробити як позаштатний діяч. Ви можете спробувати знайти клієнта, готового платити, коли ви засвоїте ці серверні навички.
Реакційний

Відповіді:


10

Це великий набір питань, але я підозрюю, що багато людей потребують вирішення, тим більше, що вони починають просуватися в кар'єрі, яка почалася з важкого передового фокусу.

Ви згадуєте, що збираєтесь виконувати роль, яка включає розробку PHP та MySQL. Це речі, які потрібно виконати на сервері. Уміння робити хороші технічні судження як розробника вимагає, щоб ви зрозуміли, як ці речі працюють на сервері та як вони взаємодіють з веб-інтерфейсом. Отже, вам чітко потрібно розвивати розуміння сервера.

Замість того, щоб намагатися розібратися в точній частині знань, яка вам може знадобитися про сервер, я б рекомендував зануритися і створити щось, включаючи інсталяцію всього програмного забезпечення на стороні сервера самостійно. Прекрасний спосіб змочити ноги - це встановити Linux на комп’ютер. Ви можете використовувати щось на зразок VirtualBox, щоб дозволити його працювати поруч із вашою поточною ОС. Встановіть MySQL, встановіть і налаштуйте сервер для PHP і спробуйте змусити все працювати разом. Чудова річ, що в ці дні помірно добре обладнаний ноутбук може запустити все це і бути «сервером».На початку це може бути важко, особливо якщо у вас немає досвіду використання Linux та командного рядка. Як розробник, ви повинні принаймні знати достатньо, щоб мати змогу пройти цю вправу, і це дасть вам почати стрибок у розробці способів подальшого розвитку своїх знань.

Є три області, в яких вам, ймовірно, потрібно буде набрати швидкість:

  1. Основи операційної системи Linux. Можливо, почніть з простого встановлення дистрибутива, як Ubuntu.
  2. Налаштування веб-сервера та PHP. Встановлення Apache - хороше місце для початку. Є й інші альтернативи, але саме з цього починається більшість людей.
  3. Вивчення основ встановлення та запуску MySQL. Принаймні, як розробник, ймовірно, вам потрібно буде мати змогу писати DDL для створення таблиць та інших структур у базі даних, і вам обов'язково потрібно мати можливість запитувати базу даних на сервері, щоб вивчити дані та переконатися, що додаток випльовує відповідність тому, що є в базі даних.

Якщо ви збираєтеся їхати з Ubuntu, ви можете дотримуватися основних інструкцій тут, щоб отримати себе та працювати. Зауважте, що вам доведеться зробити трохи розгорнути основи Linux, перш ніж починати встановлювати та грати з веб-серверами / компонентами бази даних.

З точки зору того, як розробникам потрібно взаємодіяти з сервером, крім завантаження файлів, я думаю, що це багато в чому залежить від організації до організації.

  1. Розробники часто мають справу з адміністрацією принаймні середовища розвитку. Іноді саме розробники налаштовують систему контролю ревізії (наприклад, SVN) та процес розгортання (переміщення коду в різних середовищах).
  2. На ваш погляд, розробникам, як мінімум, потрібно буде використовувати систему контролю версій, яка живе на сервері.
  3. Вам також потрібно виконати такі дії, як переглянути журнали на сервері, щоб побачити, які повідомлення створюються для діагностики та вирішення проблем.
  4. Можливо, вам доведеться співпрацювати з командою з інфраструктури, щоб визначити такі речі, як конфігурація мережі або конфігурація зберігання сервера. Найчастіше проблеми із додатком - це поєднання конфігурації та коду.

Справа в тому, що не існує єдиної відповіді на те, як саме вам потрібно буде торкнутися сервера, але в ході вашої кар’єри це, безумовно, вийде за рамки просто завантаження файлів через щось на зразок FTP. Початок роботи з вивченням основ допоможе зараз.


Чудова відповідь, дякую! Тож коли я налаштовую «Мампа» для місцевої роботи, це те саме, але без доступу до зовнішнього світу? Я встановив кілька ОС Linux і знаю невеликий вміст командного рядка, але нічого не запам'ятав би легко. Мої знання серверів відсутні, але я завжди вважаю, що до них звертаються лише командний рядок, а не як зручна ОС, це так?
Джон

2
Найкраще комфортно користуватися командним рядком. Більшість "справжніх" веб-серверів, з якими ви будете мати справу, будуть віддаленими машинами, і звичайно не встановлено графічний інтерфейс.
GrandmasterB

2
Як писав @GrandmasterB, корисно впоратися з командним рядком. На мою думку, Linux - це хороша платформа для навчання, тому що вона змушує вас "наблизитися до металу", дізнавшись про те, що робить ОС поза тим, що ви бачите на екрані. Подивіться на файл httpd.conf, зрозумійте, що насправді робить веб-сервер і як модуль PHP інтегрується в нього. Отримайте фундаментальне розуміння платформи, і це зробить вас кращим розробником.
DemetriKots

Я перейшов з Linux на сервери Windows кілька років тому і ніколи не оглядався. Linux чудовий і потужний, але вам потрібно використовувати інструменти, які найкраще відповідають вимогам роботи.
Реакційний

2

Перша моя порада - не обмежуватися виключно однією роллю. Чудово бути спеціалістом і глибоко володіти знаннями в певному наборі навичок (наприклад, PHP). Однак так само важливо мати широкі знання, що охоплюють решту вашого домену.

На мій досвід, більшість команд не прагнуть найняти когось, хто має знання, щоб переписати основні функціональні можливості PHP, а скоріше того, хто може впоратися з будь-якою проблемою, яка кидається на них (хоча, якщо такий рівень знань, звичайно, не зашкодить). Або хоча б хтось, хто може допомогти вирішити будь-які проблеми, з якими стикається команда. Наприклад, уявіть собі ситуацію, коли ваша заявка знижується і на них впливають клієнти. Ви можете кинути руки вгору і сказати: "Я не маю уявлення, що робити ..." або ви можете запустити SSH на сервер, почати сканувати журнали, помітити, що дисковий простір певної файлової системи заповнений, і приступайте до його очищення. Це другорядний приклад, але я думаю, що це зрозуміло. Завдяки цим базовим знанням, як розробник, Ви можете написати сценарій, який відстежує цю конкретну файлову систему та очищає її, як тільки вона досягне певного порогу. Тепер ви стали набагато ціннішими для свого менеджера.

Ще одна річ, яку я навчився за свою кар’єру, - це те, що справи швидко рухаються, і якщо ви не будете продовжувати, ви будете залишені позаду. Чим більше ви знаєте про все своє оточення (включаючи бізнес-аспекти), тим краще ви. Це не означає, що вам потрібно бути експертом у всьому, що ви робите, але, принаймні, маєте знання, щоб не бути позначеними як незрозумілі. Чим ви більше знайомі, тим більш пристосовані ви, і тим цінніший актив ви для своєї компанії.

Щоб спеціально відповісти на ваші запитання ...

  • Які елементи сервера я повинен знати як розробник?

Будьте знайомі з усім стеком додатків. Знайте, що використовуються веб-сервер, база даних, механізми кешування тощо. І які версії теж. Майте достатньо знайомства, щоб ви могли відтворити середовище на власному сервері. Що саме по собі є життєво важливим. Ви повинні прагнути більш-менш мати однакові середовища в розробці та виробництві, оскільки це зменшує сюрпризи ( http://12factor.net/dev-prod-parity ).

  • Як розробник, які у вас справи з сервером?

Це дійсно залежить від команди. У моєму конкретному випадку розробники відіграють величезну роль у постановці середовищ. Ми найбільше знайомі з внутрішньою роботою програми і тому можемо найкраще визначити, які серверні технології існують для її запуску. Я гадаю, що не всі команди мають такі підходи, але мати достатньо знайомих, щоб можна було залучати себе до обговорень - велика перевага. Зокрема, стосовно контролю версій, ви як розробник сильно впливаєте на те, яка технологія вибирається (Git, Subversion, Mercurial тощо), і тому ви повинні прагнути залучити себе до процесу прийняття рішень.

Отже, що тепер?

Що стосується моєї пропозиції щодо того, як найкраще підійти до вивчення всього цього? Рухайте ногами . Не хвилюйтеся, намагаючись прочитати все, що ви можете на цю тему, більша частина цього, ймовірно, просто витече з вашого мозку до того часу, коли ви закінчите. Замість цього починайте щось розробляти з нуля. Почніть з Vagrant ; це дозволить вам легко створити та керувати віртуальною машиною, яку ви можете використовувати як новий ігровий майданчик. Потім встановіть веб-сервер і базу даних і починайте створювати. Якщо у вас є ідея про додаток, ідеально, займіться цим ... якщо ні, знайдіть підручник або спробуйте відтворити наявний додаток. Сенс полягає лише в тому, щоб ознайомитися з усім процесом. Також, як розробник PHP, обов'язково перевіряйте PHP: Правильний шлях... він дійсно містить багато чудової інформації. І найголовніше, не напружуйте себе. Я думаю, ви пішли шляхом розробника, тому що це щось, що вам подобається і пристрасне ... не втрачайте з цього погляду!


1

Зосередження уваги на тому, що вам потрібно знати про сервери, щоб бути веб-розробником? ...

Насправді напрочуд мало. Ваші основні сфери знань повинні бути програмування, html, php тощо.

Що вам потрібно знати, це як запускати речі локально, і коли ви це робите, ви використовуєте свій ящик як "сервер". Тому при локальному запуску ви використовуєте веб-браузер для перегляду сторінок, як і будь-який веб-сайт ... крім вашого буде http://localhostабоhttp://127.0.0.1

Що стосується налаштування cgi, http тощо. Я не сподіваюся, що вам це потрібно знати. Ви завжди можете працювати з будь-якою загальною книгою щодо налаштування веб-сервера для ОС, в якій працюєте, і це було б достатньо покриття, щоб знати загальні умови.

Для більшої картини я рекомендую зайти в Linux та навчитися налаштовувати та налаштовувати машини, такі як веб-сервери. Але тільки якщо ви насправді маєте інтерес до цього матеріалу. Не просто вражати в інтерв'ю.

Нарешті, я б рекомендував вам розглянути записки під час інтерв'ю про сфери, про які ви мало знаєте. Це допоможе, якби ваше питання було більш конкретним щодо того, які саме терміни тощо ви не знали.


Дякую. Я хотів би все-таки навчитися, якщо дозволяє час. Чи допоможе мені книга типу "linux для манекенів". Невдовзі я переїжджаю до хоста, чи хмара Amazon AWS розміщує щось, що допоможе мені трохи попрацювати, чи це зовсім інше?
Джон

1
Я б не користувався книгою муляжів. Багато чого може не бути актуальним. Я б спробував зняти щось на кшталт адміністрування веб-серверів, наприклад cengagebrain.com/shop/en/US/storefront/…
Michael Durrant

так, запустіть Linux як вашу машину розробки та встановіть на ньому веб-сервер. Звикайте грати з ним і конфігурувати його. Ви досить навчитеся саме тому. Це в основному, як ти вчишся на роботі. Половина речей перебуває під контролем sysadmins, що може бути непогано почати з початку, але, коли ви просунетесь, ви віддасте перевагу, щоб вам було надано більше констатувань налаштування.
wobbily_col

0

Вам потрібно знати нижче, щоб завершити цикл розробки веб-сторінок.

1) IDE (Netbeans та Eclipse тощо)

2) Будь-яка мова програмування для кодування. (PHP, java тощо)

3) Техніка фронту для розробки сторінок (HTML, CSS тощо)

4) Резервна база даних для зберігання та отримання даних. (MySQL тощо)

3) Система контролю версій для перевірки та отримання сховища форми коду.

4) побудувати інструмент для компіляції коду із залежними файлами. (Мурашка, Мейвен)

6) Веб-сервер для розгортання та запуску коду.

7) Потрібно знати базовий процес розгортання на серверах, щоб запустити та перевірити ваш веб-та ejb компонент. (Tomcat, веб-логічний сервер)


0

На додаток до відповіді DemetriKots, я також додав би розгляд рішень для автоматизованого розгортання та постійної інтеграції. Налаштування сервера спочатку - лише один крок, а розгортання через FTP - болісне та схильне до помилок, не маючи належного рішення для відкочування поганих розробок.

  • Хадсон - сервер безперервної інтеграції
  • Phing - автоматизований інструмент побудови, спеціально для PHP, заснований на Ant
  • Мураш - автоматизований інструмент побудови
  • Capistrano - створити сценарії розгортання для автоматизації та полегшення розгортання веб-програми.
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.