/ Var / www dizinini evime bağlamalı mıyım?


20

Ubuntu Server 10.04'ü bir LAMP ayarıyla yeni kurdum. Orada bir web sitesi barındırmak istiyorum ancak dosyalarımı sunucuda almanın / düzenlemenin en iyi yolunun hangisi olduğundan emin değilim. Googling birçok seçenek sunar ancak hangisinin en iyi olduğundan emin değilim?

Daha iyi bir seçenek olmadığı sürece, sayfaları başka bir PC'de (Windows veya Linux) oluşturmak ve değişiklikleri sunucuda senkronize etmek için SFTP kullanmak isterim - ancak bunu ~ / veya hakları değiştirerek eşleştirilen bir klasöre yapıyorum / var / www / klasöründe?


Yanıtlar:


21

Her kurulum farklı. Benim için, her biri web sitelerini barındıran bir sunucuda çok fazla kullanıcım var, sizin için muhtemelen sistemde birden fazla kullanıcı oluşturmanıza gerek kalmayacak. Ancak, bu sunucuda birden fazla web sitesi yönetiyorsanız, bu kurulum, her bir etki alanını standart bir LAMP kurulumundan daha kolay bir şekilde yönetmenize, yapılandırmanıza ve hata ayıklamanıza yardımcı olacaktır. Bunun gerçekleşmesi için izin hatalarını aşmak için Apache tarafından birkaç cihaz kullanıyorum.

İlk önce, kullandığım belge yapısı bu:

/home/[USER]/domains/[DOMAIN]/html
/home/[USER]/domains/[DOMAIN]/logs

Her kullanıcının kendilerine ait bir etki alanı klasörüyle hesabı vardır ( /etc/skelbuna her eklediğim için ekledim . Her etki alanı kendi klasöründe domainsklasörle birlikte bir htmlklasör içeriyor (bunun için nedenlerim var, öncelikle etki alanları dışında web dosyalarına sahip olabilirler) (alemin diyarı) Bu yapıyı uygun gördüğünüz gibi değiştirmekten çekinmeyin, bu değişiklikleri bu yazı boyunca taşımayı unutmayın.

İkincisi, birçok PHP sitesine ev sahipliği yapıyorum, bu yüzden yapılandırmamda suPHP kullanıyorum. Varsayılan olarak, standart arşiv paketi suPHP'nin daha az güvenli bir sürümüyle sonuçlanan etkin derleme bayrağına sahip değildir. Sunucularımda kullandığım kendi suPHP paketimi yaptım, aşağıdaki kurulum talimatlarını verdim. suPHP, hangi kullanıcı PHP betiklerini çalıştırmanız gerektiğini tanımlamanıza izin verir (aşağıdakiler de dahil olmak üzere: her site için özel php.ini, vb.). SuExec for Apache'yi de etkinleştiriyorum - dahası www-data kullanıcısına (aşağılık bir kullanıcı) sahip olma ihtiyacını ortadan kaldırarak.

Öncelikle Apache'ye ve sunucunuza kurulu diğer tüm hizmetlere sahip olduğunuzdan emin olun. En azından çalıştıklarından emin ol. Bundan sonra suphp-common ve gerekli libapache2-mod-suphp modülünü kurmanızı öneririm (Daha fazla bilgi: PPA nedir ve bunları nasıl kullanırım? ). Sonra, bu kurulumlardan sonra, kullanarak suPHP ve suexec'i etkinleştirin.a2enmod

sudo a2enmod suphp
sudo a2enmod suexec
sudo a2dismod php5

sudo /etc/init.d/apache restart

Daha sonra yapılandırma dosyası gelecek. Her yeni siteyi eklediğimde yapılandırma dosyalarını otomatik olarak oluşturan çeşitli araçlar yaptım; ancak, işte kullandığım temel şablon:

<VirtualHost *:80>
    ServerAdmin [EMAIL]
    ServerName [DOMAIN]
    ServerAlias www.[DOMAIN] [DOMAIN]
    DocumentRoot /home/[USER]/domains/[DOMAIN]/html

    <Directory /home/[USER]/domains/[DOMAIN]>
            Options Indexes FollowSymLinks MultiViews
            AllowOverride all
    </Directory>

    ErrorLog /home/[USER]/domains/[DOMAIN]/logs/error.log

    # Possible values include: debug, info, notice, warn, error, crit,
    # alert, emerg.
    LogLevel warn

    CustomLog /home/[USER]/domains/[DOMAIN]/logs/access.log combined

    SuexecUserGroup [USER] [USER]

    suPHP_UserGroup [USER] [USER]
    suPHP_ConfigPath /home/[USER]/etc
</VirtualHost>

Bu, o etki alanı, belge kökü ve etki alanının çalışması için diğer tüm temel gereksinimler için günlüğe kaydetmeyi ayarlar. Bu dosyaları /etc/apache2/sites-available/tipik olarak adlandırılmış olarak yerleştiririm [USER]-[DOMAIN]ve onları şu şekilde etkinleştirir / devre dışı bırakır a2ensite:

sudo a2ensite [USER]-[DOMAIN]
sudo a2dissite [USER]-[DOMAIN]

Yapılandırma dosyalarında yapılan her değişiklikten sonra Apache'nin yeniden yüklenmesi gerekir.

sudo /etc/init.d/apache reload

Bence, kazanılan esneklik miktarını ayarlamak çok şey gibi görünse de, bence, kurulum süresinden çok daha ağır basıyor. Sadece bir tek kullanıcı web sunucusuna ihtiyacınız olsa da, gelecekte tek bir kullanıcı web sunucusundan başka bir şey istediyseniz, bunu yapabilmek için daha fazla işlem yapmanız (veya sadece hepsini bir kenara bırakmanız) gerekir.


Her kurulum için +1 farklıdır ve her web sitesi için ayrı kullanıcı hesabı kullanıyor
Lekensteyn

1
Bu, çok kullanıcılı bir LAMP sistemi için harikadır, ancak soru, tek kullanıcılı bir LAMP sistemi ile ilgiliydi, bu durumda bu cevap aşikar. :)
Kees Cook

@Kees aynı prensibi uygular - sadece daha fazla kullanıcı yapmak zorunda değilsiniz. Bu şekilde, kullanıcı veya izin sorunları hakkında asla endişelenmenize gerek kalmaz - ve tek bir kullanıcının birden fazla etki alanı varsa, bu kurulum bunu kapsayacaktır.
Marco Ceppi

Marco, bu kullanıcıyı ikinci kullanıcını aldığın zaman tam olarak uygulayabilirsin. Bu ilki, daha fazlasına sahip olmadığınız kesin olmadığı sürece, çok daha basit olmalı.
SpamapS

+1 - Bu en güvenli ve en mantıklı konfigürasyondur.
Nathan Osman

11

Sftp kurulumu çok kolaydır. Sadece paketi yükleyin openssh-serverve sftp'ye sahip olacaksınız. İnternetten erişebiliyorsanız, kullanıcının iyi bir şifresi olduğundan emin olun. (Bir sözlük kelimesi değil, 8+ karakter sembol ve rakamlara sahiptir).

İzinler için, genellikle bunu yapıyorum.
sudo adduser <username> www-data
sudo chown -R www-data:www-data /var/www
sudo chmod -R g+rw /var/www
Daha sonra sftp ile bağlanarak (kullanıcı adınızı ve şifrenizi kullanarak) ve / / / / / klasörüne gidip dosyalarınızı oraya yerleştirerek sayfa gönderebilmelisiniz.


1
Daha güvenli bir yöntem, anahtar tabanlı kimlik doğrulamadır (elbette korunan özel anahtar şifresiyle)
Lekensteyn

@Lekensteyn Bunu önermeyi düşündüm ama basit tutmaya çalışıyordum. Craig T , daha güvenli Anahtar tabanlı kimlik doğrulaması ayarlamak istiyorsa , help.ubuntu.com/community/SSH/OpenSSH/Keys ve help.ubuntu.com/community/SSH/OpenSSH/… adreslerine bakabilir .
Azendale

2
Bu, dosya izinlerini mahvetmeden tek örnekli bir web sunucusunda dosyaları doğru yere yerleştirmenin en basit yoludur. :) Ek olarak, sftp yerine rsync kullanılabilir. Her ikisi de başlık altında SSH kullanır (ve şifreler yerine ssh tuşlarını kullanmanızı öneririm, ancak birileri bundan daha önce bahsetti).
Kees Cook

1
+1, Kees ile aynı fikirdeyim, bu süper basittir ve belirtilen soru için işe yarar. 40+ düğüme sahip üretim kümeleri için neredeyse aynı kurulumu kullandım, yalnızca SSH anahtarlarına erişimi kısıtladım.
SpamapS

1

Webdav kullanıyorum. Ubuntu Sunucusuna kurulumu çok kolaydır. Eğer kurulu bir apache varsa neredeyse bitti. Sadece sudo a2enmod dav; service apache2 restart. Sanal sitenizi biraz yapılandırmanız gerekir. İşte üretimde kullanıyorum bir örnek:

<VirtualHost *>
    ServerName webdav.mysite.com
    ServerAdmin webmaster@mysite.com

    DocumentRoot /srv/mysite
    DAVLockDB /var/lock/apache2/DAVLock
    <Directory /srv/mysite>
        Order allow,deny
        Allow from all
    Dav On
    DAVMinTimeout 600
    DAVDepthInfinity On
AuthName "mysite login"
AuthType Basic
AuthUserFile /srv/mysite/.htpassword
Require valid-user

    </Directory>
php_admin_value engine off
</VirtualHost>

<VirtualHost *>

    ServerName mysite.com
    ServerAlias *.mysite.com
    ServerAdmin webmaster@mysite.com

    DocumentRoot /srv/mysite/www
    <Directory /srv/mysite/www>
        Order allow,deny
        Allow from all
    </Directory>

    ScriptAlias /cgi-bin/ /srv/mysite/cgi-bin/
</VirtualHost>

Bunu / srv / etc / apache2 / sites kullanılabilir / mysite içine koyabilir ve sonra yapabilirsiniz sudo a2ensite mysite; sudo service apache2 reload.

Burada olan, iki sanal site oluşturdunuz. Biri www.mysite.com, diğeri webdav.mysite.com. PHP önemli olan webdav.mysite.com adresinde devre dışı bırakılmıştır.

Artık sitenize http üzerinden Ubuntu, Windows ve MacOS üzerinden erişebilirsiniz. Üçü de webdav desteği sağlamıştır. İşte Ubuntu'da bir webdav ağ konumu eklemek için talimatlar .


Bu neden iyidir? Çünkü sitenize ek bir yazılım olmadan herhangi bir işletim sisteminden erişebilirsiniz (sftp, Ubuntu'da çalışır, diğer işletim sistemlerinde ayrı bir program gerektirir). Ayrıca, wordpress gibi bir siteyle, apache her iki yönü de ele aldığından, dosya yüklemeleriyle ilgili izinler zaten doğru. Ve güvenlik istiyorsanız, standart https de kullanılabilir. (aynı IP’de birden fazla siteniz varsa, farklı bağlantı noktaları kullanabilirsiniz)
newz2000

Bu arada, yukarıdaki talimatlar siteniz için bir arayüz oluşturduk varsayalım: mkdir -p /srv/mysite/www; chown -R www-data.www-data /srv/mysite.
newz2000

1
DAV'ın şifreleneceği kesin değildir (web sunucunuz da SSL kullanıyorsa), bu nedenle genel olarak DAV üzerinden SFTP veya rsync'i öneririm.
Kees Cook,

0

/ Var / www 'ya www-data' ya yazma yetkisini verir ve kullanıcını o gruba eklerdim. Bu şekilde, hangi kullanıcıların bu dizine yazabileceklerini kontrol etmek kolay olacaktır.

sudo chgrp -R www-data /var/www
sudo chmod g+w -R /var/www 
usermod -a -G www-data your-user

-1

Siteniz için herhangi bir çerçeve kullanıyor musunuz? Drupal, Wordpress vb.? Örneğin Drupal, tarayıcı etkileşimi yoluyla yüklenecek araçlara sahiptir.

Samba'ya baktın mı? Bir Samba paylaşımı ayarlayabilir (ve onlar için web'de tonlarca kaynak vardır) ve açmak / düzenlemek / kaydetmek / silmek için Windows Gezgini'ni kullanabilirsiniz. Kurulacak / var / www paylaşın ve sonra "ağ sürücüsü" pencerelerine eşleştirin.

Bu bir iş veya ev ortamı mı? Evinize benziyor, ancak bir çalışma ortamındaysanız ... Samba'yı Active Directory ile Likewise-Open gibi araçlarla eşleştirebilirsiniz. BT mağazasındakilerin, sunucunun her iki tarafına da (linux veya web sitesi) AD kimlik bilgileriyle giriş yapabilecekleri bir sunucu / web sitesi kurulumum var.

Ayrıca Mercurial gibi bir şeye bakmayı da öneririm. Sunucuda bir depo oluşturun ve TortiseHG gibi bir şeyle pencerelerle eşitleyin. Sanırım rsync gibi, ancak sürüm yükseltme, yedekleme, dağıtım yeteneği vb. (SVN, Mercurial, Git, vb. Tüm seçeneklere sahip)



-2

Böyle bir şeyin peşindesiniz

rsync -az --rsh "ssh" --rsync-path "sudo rsync" ~/website ubuntu@REMOTE-IP:/var/www

1
Root olarak giriş yapmak, ciddi overkill gibi gözüküyor.
Kees Cook,
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.