Что мне нужно знать о серверах в роли веб-разработки? [закрыто]

12

Я знаю, что это может звучать немного расплывчато, поэтому я попытаюсь объяснить немного подробнее ...

После долгих лет самостоятельной работы разработчиком я нахожусь в поиске коммерческой роли веб-разработчика. Мой единственный опыт работы с серверами и хостингом - загрузка через FTP и немного поиграть с CPanel / WHM. Роль, которую я выберу, - это веб-разработка PHP, MySQL, HTML, CSS-роли, но в недавних интервью мне задавали вопросы о настройке вещей на сервере, о которых я понятия не имел, что говорится ... который не был идеальным!

Не зная больше, чем я, трудно объяснить, что именно я хочу изучать, но это в основном только элементы сервера, которые я должен знать как веб-разработчик? Если вы веб-разработчик, имеете ли вы какое-либо отношение к серверу, кроме загрузки файлов, и если да, то что? Являются ли такие вещи, как Subversion (SVN) и системы контроля версий, часто настраиваемые командой веб-разработчиков, о чем они говорили?

Джон
источник
3
Я думаю, что этот более конкретно о серверах, хотя :)
Майкл Даррант
2
Я не хочу рассказывать вам об этом, но если вы не можете настроить веб-сервер, вы не очень ценный веб-разработчик, и это не то, что вы можете быстро изучить в книге. Вместо того, чтобы делать наполовину задницу в изучении серверных компонентов из книги. Вам лучше совершенствовать свои навыки PHP и применять в качестве программиста PHP.
Reactgular
@ MathewFoscarini, потому что я не очень хорош в этом, я должен избегать этого и совершенствовать только то, что я знаю? Разве этот совет не остановит мир? not a very valuable web developerэто то, что я пытаюсь преодолеть, поэтому я рад узнать об этом должным образом, я просто не знаю, как лучше всего изучить это, и на каких направлениях сосредоточиться в первую очередь.
Джон
@john Вы спросили в контексте найма в качестве веб-разработчика. То, на что ты не способен. Если это то, что вы хотите нанять, то во что бы то ни стало сделайте это, но не ожидайте краткосрочного решения вопросов на собеседовании. Я ожидаю, что работодатель пытается отсеять кандидатов, которые не имеют практического опыта работы на серверах. По твоему вопросу у меня сложилось впечатление, что ты пытаешься получить работу, занимаясь тем, что не можешь сделать фрилансером. Вы можете попытаться найти клиента, готового заплатить, изучив эти навыки работы на сервере.
Reactgular

Ответы:

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. Начать с изучения основ сейчас поможет.

DemetriKots
источник
Отличный ответ, спасибо! Итак, когда я настраиваю «Mamp» для местной работы, это то же самое, но без доступа к внешнему миру? Я установил несколько ОС Linux и немного разбираюсь в командной строке, но ничего не запомню. Мои знания о серверах отсутствуют, но я всегда думаю о них как о доступе только из командной строки, а не как об удобной для пользователя ОС, так ли это?
Джон
2
Лучше всего, чтобы было удобно использовать командную строку. Большинство «настоящих» веб-серверов, с которыми вы будете иметь дело, будут удаленными компьютерами, и на них не будет установлен графический интерфейс.
GrandmasterB
2
Как писал @GrandmasterB, полезно разобраться с командной строкой. На мой взгляд, Linux является хорошей платформой для обучения, потому что она заставляет вас «приблизиться к цели», узнавая о том, что делает ОС, помимо того, что вы видите на экране. Посмотрите на файл httpd.conf, поймите, что на самом деле делает веб-сервер и как модуль PHP интегрируется с ним. Получите фундаментальное представление о платформе, и она сделает вас лучшим разработчиком.
DemetriKots
Я перешел с Linux на серверы Windows несколько лет назад и никогда не оглядывался назад. Linux великолепен и мощен, но вы должны использовать инструменты, которые наилучшим образом соответствуют требованиям работы.
Reactgular
2

Мой первый совет - не ограничиваться только одной ролью. Здорово быть специалистом и иметь глубокие знания в определенном наборе навыков (например, PHP). Однако столь же важно иметь широкие знания, которые распространяются на остальную часть вашего домена.

По моему опыту, большинство команд не хотят нанимать кого-то, кто обладает знаниями для переписывания основных функций PHP, а скорее того, кто может справиться с любой проблемой, которая им брошена (хотя наличие такого уровня знаний, безусловно, не повредит). Или, по крайней мере, кто-то, кто может помочь решить любые проблемы, с которыми сталкивается команда. Например, представьте себе ситуацию, когда ваше приложение выходит из строя и это влияет на клиентов. Вы можете либо поднять руки и сказать: «Я понятия не имею, что делать ...», или вы можете подключиться по SSH к серверу, запустить сканирование журналов, заметить, что дисковое пространство определенной файловой системы заполнено, и приступить к его очистке. Это небольшой пример, но я думаю, что суть ясна. С этими базовыми знаниями, как разработчик, Вы могли бы написать скрипт, который отслеживает эту конкретную файловую систему и очищает ее, как только она достигает определенного порога. Теперь вы стали гораздо более ценным для своего менеджера.

Еще одна вещь, которую я узнал за свою карьеру, это то, что все движется быстро, и если вы не поспеваете, вас оставят позади. Чем больше вы знаете обо всей своей среде (включая аспекты бизнеса), тем лучше для вас. Это не значит, что вам нужно быть экспертом во всем, что вы делаете, но, по крайней мере, иметь знания, чтобы не быть помеченными как невежественные. Чем больше вы знакомы, тем более адаптируемы вы и тем более ценный актив для вашей компании.

Чтобы конкретно ответить на ваши вопросы ...

  • Какие элементы сервера я должен знать как разработчик?

Быть знакомым со всем стеком приложений. Узнайте, какой веб-сервер, база данных, механизмы кэширования и т. Д. Используются. И какие версии тоже. Имейте достаточно знаний, чтобы вы могли воссоздать среду на своем собственном сервере. Что само по себе жизненно важно. Вы должны стремиться к тому, чтобы более или менее иметь одинаковые среды в разработке и производстве, так как это уменьшает количество сюрпризов ( http://12factor.net/dev-prod-parity ).

  • Как разработчик, какие у вас отношения с сервером?

Это действительно зависит от команды. В моем конкретном случае разработчики играют огромную роль в организации среды. Мы наиболее знакомы с внутренней работой приложения и поэтому можем определить, какие серверные технологии используются для его запуска. Я полагаю, что не у всех команд есть такой практический подход, но иметь достаточную осведомленность, чтобы иметь возможность участвовать в обсуждениях, является большим преимуществом. В частности, что касается контроля версий, вы, как разработчик, очень сильно зависите от того, какая технология выбрана (Git, Subversion, Mercurial и т. Д.), И поэтому должны стремиться вовлечь себя в процесс принятия решений.

Ну что теперь?

Что касается моего предложения о том, как лучше всего подойти к изучению всего этого? Двигай ногами . Не беспокойтесь о попытках прочитать все, что вы можете по этому вопросу, большинство из них, вероятно, просто вытечет из вашего мозга к тому времени, когда вы закончите. Вместо этого начните разрабатывать что-то с нуля. Начать с бродяги ; это позволит вам легко создавать и управлять виртуальной машиной, которую вы можете использовать в качестве новой игровой площадки. Затем установите веб-сервер и базу данных и начните создавать. Если у вас есть идея для приложения, идеально, пойти на это ... если нет, найдите учебник или попробуйте воссоздать существующее приложение. Дело в том, чтобы просто ознакомиться со всем процессом. Кроме того, как разработчик PHP, обязательно ознакомьтесь с PHP: правильный путь... это действительно содержит много отличной информации. И самое главное, не напрягайте себя. Я предполагаю, что вы пошли по пути разработчика, потому что это то, что вам нравится и вы увлечены ... не упускайте это из виду!

JC Yamokoski
источник
1

Сосредоточение внимания на том, что вам нужно знать о серверах, чтобы стать веб-разработчиком? ...

На самом деле удивительно мало. Ваши основные области знаний должны быть программирование, HTML, PHP и т. Д.

То, что вам нужно знать, это то, как запускать вещи локально, и когда вы делаете это, вы используете свой ящик в качестве «сервера». Таким образом, при локальном запуске вы используете веб-браузер для просмотра страниц, как и на любом интернет-сайте ... кроме вашего http://localhostилиhttp://127.0.0.1

Что касается настройки cgi, http и т. Д. Я не ожидаю, что вам нужно это знать. Вы всегда можете изучить любую общую книгу по настройке веб-сервера для операционной системы, в которой вы работаете, и этого будет достаточно, чтобы знать общие термины.

Для большей картины я рекомендую войти в Linux и узнать, как настраивать и настраивать такие машины, как веб-серверы. Но только если вы действительно заинтересованы в этом. Не только чтобы произвести впечатление на интервью.

Наконец, я бы порекомендовал вам сделать заметки во время интервью по тем областям, о которых вы недостаточно знаете. Было бы полезно, если бы ваш вопрос был более конкретным о том, какие именно термины и т. Д. Вы не знаете.

Майкл Даррант
источник
Благодарю. В любом случае, я бы хотел узнать, если позволит время. Поможет ли мне здесь книга типа «linux для чайников»? Я скоро перееду на хостинг. Облако Amazon AWS поможет мне немного поработать, или это совсем другое дело?
Джон
1
Я бы не стал использовать манекен. Многое из этого может не относиться к делу. Я бы попробовал сделать что-то вроде администрирования веб-серверов, например cengagebrain.com/shop/en/US/storefront/…
Майкл Даррант,
да, запустите linux в качестве своего компьютера разработчика и настройте на нем веб-сервер. Привыкайте играть с ним и настраивать его. Вы достаточно научитесь таким образом. Вот в основном, как вы учитесь на работе. Половина всего находится под контролем системных администраторов, что может быть полезно для начала, но по мере продвижения вы предпочтете получить больше контроля над настройками самостоятельно.
wobbily_col
0

Для завершения цикла веб-разработки вам необходимо знать следующее.

1) IDE (Netbeans, Eclipse и т. Д.)

2) Любой язык программирования для кодирования. (PHP, Java и т. Д.)

3) Фронтальная технология оформления страниц (HTML, CSS и т. Д.)

4) Резервная база данных для хранения и извлечения данных. (MySQL и т. Д.)

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

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

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

7) Необходимо знать базовый процесс развертывания на серверах для запуска и тестирования веб-компонентов и компонентов ejb. (Tomcat, сервер Web-Logic)

Ратнеш Дубей
источник
0

В дополнение к ответу DemetriKots, я бы также добавил, глядя на решения для автоматического развертывания и непрерывной интеграции. Первоначальная настройка сервера - это только один шаг, и развертывание по FTP является болезненным и подверженным ошибкам, без надлежащего решения для отмены неудачных развертываний.

  • Hudson - Сервер непрерывной интеграции
  • Phing - инструмент для автоматической сборки, специально для PHP, на основе Ant
  • Муравей - инструмент для автоматической сборки
  • Capistrano - создайте сценарии развертывания, чтобы автоматизировать и упростить развертывание вашего веб-приложения.
Kikimac
источник