Bir Web Geliştirme Rolü Sunucular Hakkında Bilmem Gerekenler Nelerdir? [kapalı]


12

Bunun biraz belirsiz gelebileceğini biliyorum, bu yüzden biraz daha açıklamaya çalışacağım ...

Uzun yıllar kendi hesabına çalışan geliştirici olduktan sonra şimdi ticari bir web geliştirici rolü arıyorum. Sunucular ve barındırma ile tek deneyimim FTP üzerinden yükleme ve CPanel / WHM ile biraz oynamak. Rol için kullanacağım web geliştirme PHP, MySQL, HTML, CSS türü rollerdir, ancak son röportajlarda sunucuda bir şeyler ayarlamayla ilgili sorular soruldu, ne söylendiğine dair hiçbir fikrim yoktu ... ki bu ideal değildi!

Benden daha fazlasını bilmeden, tam olarak ne öğrenmek istediğimi açıklamak zor, ama temelde bir web geliştiricisi olarak bilmem gereken sunucu öğeleri mi? Bir web geliştiricisiyseniz, sunucuyla dosya yüklemek dışında herhangi bir işleminiz var mı? Subversion (SVN) ve sürüm kontrol sistemleri gibi şeyler genellikle web geliştirme ekibi tarafından mı kuruluyor?



3
Sanırım bu sunucuları hakkında daha spesifik olsa :)
Michael Durrant

2
Bunu kırmaktan nefret ediyorum, ancak bir web sunucusunu yapılandıramazsanız çok değerli bir web geliştiricisi değilsiniz ve bu bir kitapta hızlı bir şekilde öğrenebileceğiniz bir şey değil. Bir kitaptan sunucu bileşenlerini öğrenmek için yarım göt işi yapmak yerine. PHP becerilerinizi mükemmelleştirmek ve bir PHP programcısı olarak başvurmak daha iyidir.
Reactgular

@MathewFoscarini çünkü ben iyi değilim ondan kaçınmalı ve sadece bildiklerimi mükemmel yapmalıyım? Bu tavsiye dünyanın durma noktasına gelmesine neden olmaz mı? not a very valuable web developerüstesinden gelmeye çalıştığım şey, bu yüzden düzgün bir şekilde öğrenmekten mutluyum, sadece bu öğrenmeye en iyi nasıl gidileceğini ve ilk olarak hangi alanlara odaklanacağımı bilmiyorum.
john

@john Bir web geliştiricisi olarak işe alınma bağlamında istediniz. Kalifiye olmadığınız bir şey. Eğer işe almak istediğiniz buysa, elbette bunun için gidin ama bir röportajda soruları cevaplamak için kısa vadeli bir çözüm beklemeyin. İşverenin sunucular üzerinde çalışan pratik kariyer deneyimi olmayan adayları ayıklamaya çalışacağını umuyorum. Sorunuzdaki izlenimim, serbest meslek sahibi olarak yapamayacağınız bir işi yapmaya çalışmanızdı. Bu sunucu becerilerini öğrenirken ödeme yapmak isteyen bir müşteri bulmayı deneyebilirsiniz.
Reactgular

Yanıtlar:


10

Bu büyük bir soru dizisidir, ancak özellikle ağır bir ön uç odağı ile başlayan bir kariyerde ilerlemeye başladıkça, birçok insanın ele alması gerektiğinden şüpheleniyorum.

PHP ve MySQL geliştirmeyi içeren bir rol yapacağınızı belirtiyorsunuz. Bunlar sunucuda yürütülmesi gereken şeylerdir. Bir geliştirici olarak iyi teknik kararlar verebilmeniz için, bu şeylerin sunucuda nasıl çalıştığını ve web ön uçlarıyla nasıl etkileşime girdiğini anlamanız gerekir. Dolayısıyla, sunucuyu daha iyi anlamanız gerekir.

Sunucu hakkında ihtiyaç duyabileceğiniz bilginin tam gövdesini bulmaya çalışmak yerine, dalış yapmayı ve tüm sunucu tarafı yazılımlarını kendiniz yüklemeyi de içeren bir şey inşa etmenizi tavsiye ederim. Ayaklarınızı ıslatmanın harika bir yolu bilgisayarınıza Linux yüklemektir. Mevcut işletim sisteminizle birlikte çalışmasına izin vermek için VirtualBox gibi bir şey kullanabilirsiniz. MySQL'i kurun, PHP için sunucuyu kurun ve kurun ve her şeyin birlikte çalışmasını sağlayın. Harika bir şey, bu gün, orta derecede iyi donanımlı bir dizüstü bilgisayar tüm bunları çalıştırabilir ve "sunucu" olabilir.Başlangıçta, özellikle Linux ve komut satırını kullanma deneyiminiz yoksa, bu zor olabilir. Bir geliştirici olarak, en azından bu egzersizi yapabilmek için yeterince bilmelisiniz ve bu, bilginizi nasıl daha da geliştireceğinizi anlamanıza yardımcı olacaktır.

Muhtemelen hıza ulaşmanız gereken üç alan vardır:

  1. Linux işletim sisteminin temelleri. Belki Ubuntu gibi kurulumu kolay bir dağıtımla başlayabilirsiniz.
  2. Bir web sunucusu ve PHP kurma. Apache'yi kurmak başlamak için iyi bir yerdir. Başka alternatifler de var, ama çoğu insan burada başlıyor.
  3. MySQL kurmanın ve çalıştırmanın temellerini öğrenme. En azından, bir geliştirici olarak, veritabanında tablolar ve diğer yapılar oluşturmak için muhtemelen DDL yazabilmeniz gerekir ve verileri keşfetmek ve ne sağlamak için kesinlikle veritabanını sunucuda sorgulayabilmeniz gerekir. uygulama veritabanında ne eşleşiyor tükürüyor.

Eğer Ubuntu ile gitmek olsaydı, temel talimatları takip edebilecek burada kendinizi ve çalıştırmak için. Web sunucularını / veritabanı bileşenlerini kurmaya ve oynamaya başlamadan önce Linux temelleri üzerinde biraz rampa yapmanız gerekeceğini unutmayın.

Geliştiricilerin sunucu ile nasıl etkileşim kurmaları gerektiği konusunda, dosya yüklemenin ötesinde, bunun kuruluştan kuruluşa çok değiştiğini düşünüyorum.

  1. Geliştiriciler genellikle en azından geliştirme ortamının yönetimi ile uğraşırlar. Bazen, revizyon kontrol sistemini (örneğin SVN) ve dağıtım sürecini (kodları ortamlar arasında taşıma) kuran geliştiricilerdir.
  2. Sizin açınızdan, en azından geliştiricilerin sunucuda yaşayan revizyon kontrol sistemini kullanmaları gerekecektir.
  3. Ayrıca, sorunları tanılamak ve çözmek için hangi iletilerin oluşturulduğunu görmek için sunucudaki günlüklere bakmak gibi şeyler yapmanız gerekir.
  4. Sunucunun ağ yapılandırması veya depolama yapılandırması gibi şeyleri belirlemek için bir altyapı ekibiyle birlikte çalışmanız gerekebilir. Genellikle uygulama sorunları, yapılandırma ve kodun birleşimidir.

Mesele şu ki, sunucuya tam olarak nasıl dokunmanız gerektiğine dair tek bir cevap yoktur, ancak kariyeriniz boyunca, kesinlikle FTP gibi bir şeyle dosya yüklemenin ötesine geçecektir. Şimdi temel bilgileri öğrenerek başlamak size yardımcı olacaktır.


Harika cevap, teşekkürler! Peki, yerel çalışma için 'Mamp' kurarken, bu aynıdır, ancak dış dünyaya erişimi yok mu? Birkaç Linux işletim sistemi yükledim ve küçük bir komut satırı bilgisi biliyorum ama kolay hatırlayacağım bir şey yok. Sunucular hakkındaki bilgim mevcut değil, ancak her zaman bunlara yalnızca komut satırı tarafından erişildiğini düşünüyorum ve kullanıcı dostu bir işletim sistemi gibi değil mi?
john

2
Komut satırını kullanarak rahat olmak en iyisidir. Ele alacağınız çoğu 'gerçek' web sunucusu uzak makineler olacak ve GUI'leri yüklü olmayacak.
GrandmasterB

2
@GrandmasterB'nin yazdığı gibi, komut satırını ele almak yararlıdır. Bence Linux iyi bir öğrenme platformudur, çünkü işletim sisteminin ekranda gördüklerinizin ötesinde neler yaptığını öğrenirken "metale yakın" olmaya zorlar. Httpd.conf dosyasına bakın, web sunucusunun gerçekte ne yaptığını ve PHP modülünün bu dosyaya nasıl entegre olduğunu anlayın. Platform hakkında temel bir anlayış edinin ve sizi daha iyi bir geliştirici yapacaktır.
DemetriKots

Birkaç yıl önce linux'dan Windows sunucularına geçtim ve asla geriye bakmadım. Linux harika ve güçlüdür, ancak işin gereksinimlerine en uygun araçlarla gitmelisiniz.
Reactgular

2

İlk tavsiyem, kendinizi yalnızca herhangi bir rolle sınırlamamaktır. Bir uzman olmak ve belirli bir beceri setinde (örneğin PHP) derin bilgi sahibi olmak harika. Ancak, alan adınızın geri kalanında geniş bir bilgiye sahip olmak da önemlidir.

Deneyimlerime göre, çoğu takım PHP'nin temel işlevlerini yeniden yazma bilgisine sahip birini değil, onlara atılan herhangi bir sorunu ele alabilecek birini işe almak istemektedir (ancak bu bilgi düzeyine sahip olmak kesinlikle zarar vermeyecektir). Veya en azından ekibin karşılaştığı sorunları çözmeye yardımcı olabilecek biri. Örneğin, uygulamanızın azaldığı ve müşterilerin etkilendiği bir durum düşünün. Ellerinizi kaldırabilir ve "Ne yapacağım hakkında hiçbir fikrim yok ..." diyebilir veya sunucuya SSH gönderebilir, günlükleri taramaya başlayabilir, belirli bir dosya sisteminin disk alanının dolu olduğunu fark edip temizlemeye devam edebilirsiniz. Bu küçük bir örnek ama bence konu açık. Bir geliştirici olarak bu temel bilgiyle, söz konusu dosya sistemini izleyen ve belirli bir eşiğe ulaştığında temizleyen bir komut dosyası yazabilirsiniz. Artık menajeriniz için çok daha değerli oldunuz.

Kariyerim boyunca öğrendiğim bir diğer şey, işlerin hızlı hareket etmesi ve eğer devam etmezseniz geride kalacaksınız. Tüm çevreniz hakkında ne kadar çok bilgi sahibi olursanız (iş yönleri de dahil olmak üzere) o kadar iyi olursunuz. Bu, yaptığınız her şeyde uzman olmanız gerektiği anlamına gelmez, ancak en azından clueless olarak etiketlenmeme bilgisine sahiptir. Ne kadar tanıdık olursanız, o kadar uyarlanabilir olursunuz ve şirketiniz için o kadar değerli bir varlık olursunuz.

Sorularınızı özel olarak cevaplamak için ...

  • Geliştirici olarak hangi sunucu öğelerini bilmeliyim?

Tüm uygulama yığınını tanıyın. Hangi web sunucusunun, veritabanının, önbellek mekanizmalarının vb. Kullanıldığını bilin. Ve hangi versiyonları da. Ortamı kendi sunucunuzda yeniden oluşturabileceğiniz kadar bilgi sahibi olun. Hangi, kendi başına, önemli. Sürprizleri azalttığı için, geliştirme ve üretimde az çok aynı ortamlara sahip olmaya çalışmalısınız ( http://12factor.net/dev-prod-parity ).

  • Bir geliştirici olarak sunucuyla ne gibi ilişkileriniz var?

Bu gerçekten takıma bağlıdır. Benim özel durumumda, geliştiriciler çevreleri hazırlamada büyük rol oynamaktadır. Uygulamanın iç işleyişine en aşinayız ve bu nedenle onu çalıştırmak için hangi sunucu teknolojilerinin mevcut olduğunu belirlemek için en iyi konumdayız. Tüm takımların bu tür bir yaklaşıma sahip olmadığını hayal ediyorum, ancak tartışmaya kendinizi dahil edebilecek kadar aşina olmak büyük bir avantaj. Özellikle, sürüm kontrolü ile ilgili olarak, geliştirici olarak siz hangi teknolojinin seçildiğinden (Git, Subversion, Mercurial, vb.) Çok etkilenirsiniz ve bu nedenle kendinizi karar sürecine dahil etmeye çalışmalısınız.

Şimdi ne olacak?

Tüm bunları öğrenmeye en iyi nasıl yaklaşacağım konusundaki önerime gelince? Ayaklarını hareket ettir . Konuyla ilgili yapabileceğiniz her şeyi okumaya çalışmayın, çoğu işiniz bittiğinde muhtemelen beyninizden dışarı akacaktır. Bunun yerine sıfırdan bir şey geliştirmeye başlayın. Vagrant ile başlayın ; yeni oyun alanınız olarak kullanabileceğiniz bir sanal makineyi kolayca oluşturmanıza ve yönetmenize olanak tanır. Ardından, bir web sunucusu ve veritabanı yükleyin ve oluşturmaya başlayın. Bir uygulama için mükemmel bir fikriniz varsa, bunun için gidin ... değilse, bir öğretici bulun veya mevcut bir uygulamayı yeniden oluşturmaya çalışın. Mesele sadece tüm süreci tanımaktır. Ayrıca, bir PHP geliştiricisi olarak PHP'yi kontrol ettiğinizden emin olun : Doğru Yol... çok fazla mükemmel bilgi içeriyor. Ve en önemlisi, kendinizi strese sokmayın. Bir geliştiricinin yolunu izlediğinizi düşünüyorum, çünkü bu zevk aldığınız ve tutkulu olduğunuz bir şey ... bunu gözden kaçırmayın!


1

Odaklanarak sunucuların bir web geliştiricisi olmak hakkında bilmeniz gereken Neler? ...

Aslında şaşırtıcı derecede az. Ana bilgi alanlarınız programlama, html, php vb. Olmalıdır.

Bilmeniz gerekenler, şeyleri yerel olarak nasıl çalıştıracağınız ve bunu yaptığınızda kutunuzu bir 'sunucu' olarak kullanıyorsunuz. Yerel olarak çalıştırırken Yani sadece herhangi bir internet sitesinde olduğu gibi, sayfalarını görüntülemek için bir web tarayıcısı kullanın ... senin olacak hariç http://localhostveyahttp://127.0.0.1

Cgi, http, vb. Yapılandırmaya gelince, bunu bilmenizi beklemiyorum. Çalıştığınız işletim sistemi için bir web sunucusu kurma hakkında genel bir kitap üzerinde her zaman çalışabilirsiniz ve bu, genel şartları bilmek için yeterli kapsam olacaktır.

Daha büyük resim için Linux'a girmenizi ve web sunucuları gibi makineleri kurmayı ve yapılandırmayı öğrenmenizi öneririm. Ama sadece gerçekten bir şeylere ilgi duyuyorsanız. Sadece röportajlarda etkilemek için değil.

Son olarak, yeterince bilmediğiniz alanlarla ilgili röportajlar sırasında not almanızı tavsiye ederim. Sorunuz bilmediğiniz hangi terimler vb. Konusunda daha spesifik olsaydı yardımcı olurdu.


Teşekkürler. Zaman izin verirse yine de öğrenmek istiyorum. 'Aptallar için linux' tipi bir kitap bana burada yardımcı olur. Kısa süre içinde ana bilgisayarı taşıyacağım, Amazon AWS bulut, küçük bir çalışma ile bana fayda sağlayacak bir şey mi barındırıyor yoksa tamamen farklı mı?
john

1
Bir aptal kitap kullanmazdım. Bunların çoğu ilgili olmayabilir. Web Sunucularını Yönetme gibi bir şeyi gözden geçirmeyi denerim
Michael Durrant

evet, linux'u geliştirme makineniz olarak çalıştırın ve üzerinde bir web sunucusu kurun. Onunla oynamaya ve yapılandırmaya alışın. Bu şekilde yeterince öğreneceksin. Temelde işte nasıl öğrendiğiniz. İşin yarısı, başlamak için iyi olabilecek sistem yöneticileri kontrolü altında, ancak ilerledikçe, kurulumun daha fazla kontrolünü kendiniz vermeyi tercih edeceksiniz.
wobbily_col

0

Web geliştirme döngüsünü tamamlamak için aşağıdaki şeyleri bilmeniz gerekir.

1) IDE (Netbeans ve Eclipse vb.)

2) Kodlama için herhangi bir programlama dili. (PHP, java vb.)

3) Sayfa tasarımı için ön teknoloji (HTML, CSS vb.)

4) Veri depolamak ve almak için yedeklenmiş veritabanı. (MySQL vb.)

3) Kod form deposunu kontrol etmek ve almak için sürüm kontrol sistemi.

4) bağımlı dosyalar ile kod derlemek için araç oluşturmak. (Karınca, Maven)

6) Web sunucusu size kod dağıtmak ve çalıştırmak için.

7) Web ve ejb bileşenlerini çalıştırmak ve test etmek için sunucular üzerinden temel dağıtım işlemini bilmeniz gerekir. (Tomcat, Web-Logic sunucusu)


0

DemetriKots yanıtına ek olarak, otomatik dağıtım ve sürekli entegrasyon için çözümlere bakmayı da eklerdim. Başlangıçta sunucuyu kurmak yalnızca bir adımdır ve FTP üzerinden dağıtmak acı verici ve hataya açıktır, kötü dağıtımları geri almak için uygun bir çözüm yoktur.

  • Hudson - Sürekli entegrasyon sunucusu
  • Phing - Ant dayalı otomatik PHP, özellikle PHP için derleme aracı
  • Ant - otomatik oluşturma aracı
  • Capistrano - Web uygulamanızı dağıtmayı otomatikleştirmek ve kolaylaştırmak için dağıtım komut dosyaları oluşturun.
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.