Devo fazer symlink do meu diretório / var / www para minha casa?

20

Acabei de instalar o Ubuntu Server 10.04 com uma configuração LAMP. Eu quero hospedar um site lá, mas não tenho certeza qual é a melhor maneira de obter / editar meus arquivos no servidor. Googling oferece muitas opções, mas não tenho certeza qual é o melhor?

A menos que exista uma opção melhor, gostaria de criar as páginas em outro PC (Windows ou Linux) e usar SFTP para sincronizar as alterações no servidor - mas faço isso em uma pasta com links simbólicos em ~ / ou alterando os direitos na pasta / var / www /?

    
por Craig 27.05.2011 / 14:36

7 respostas

21

Cada configuração é diferente. Para mim eu tenho muitos usuários em um servidor que cada um hospeda websites, para você, você provavelmente não precisará criar mais do que apenas um usuário no sistema. No entanto, se você gerenciar vários sites nesse servidor, essa configuração ajudará você a gerenciar, configurar e depurar cada domínio de maneira mais fácil do que uma configuração padrão do LAMP. Para que isso aconteça eu utilizo vários dispositivos do Apache para contornar erros de permissão.

Primeiro, esta é a estrutura do documento que uso:

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

Cada usuário tem sua própria conta com uma pasta de domínios (que adicionei a /etc/skel para que seja criada todas as vezes. Cada domínio tem sua própria pasta na pasta domains com uma pasta html razões para isso, principalmente para que os domínios possam ter arquivos da web fora do domínio público.) Sinta-se à vontade para modificar essa estrutura como achar melhor, apenas lembre-se de realizar essas alterações ao longo deste post.

Em segundo lugar, eu hospedo muitos sites PHP, então eu uso o suPHP na minha configuração. Por padrão, o pacote padrão não possui o sinalizador de compilação adequado, resultando em uma versão menos segura do suPHP. Eu fiz o meu próprio pacote suPHP que eu uso em meus servidores, instruções de instalação abaixo. suPHP permite que você defina quais scripts PHP de usuário devem ser executados como (entre outras coisas, incluindo: php.ini customizado para cada site, etc). Eu também habilito suExec para Apache - removendo ainda mais a necessidade de ter qualquer propriedade para o usuário www-data (um usuário que eu desprezo).

Primeiro, assegure-se de ter o Apache e todos os outros serviços instalados em seu servidor. Certifique-se de que eles estão pelo menos trabalhando. Depois disso, eu recomendo instalar o suphp-common eo módulo libapache2-mod-suphp necessário (Mais informações: O que são os PPAs e como usá-los? ). Então, depois dessas instalações, ative suPHP e suexec usando a2enmod

sudo a2enmod suphp
sudo a2enmod suexec
sudo a2dismod php5

sudo /etc/init.d/apache restart

Em seguida, vem o arquivo de configuração. Eu fiz várias ferramentas que geram automaticamente os arquivos de configuração toda vez que eu adiciono um novo site; no entanto, aqui está o modelo básico que eu uso:

<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>

Isso configura o registro para esse domínio, a raiz do documento e todas as outras necessidades básicas para o domínio operar. Eu coloco esses arquivos em /etc/apache2/sites-available/ normalmente chamado [USER]-[DOMAIN] e ative / desative-os com a2ensite da seguinte forma:

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

Após cada modificação nos arquivos de configuração, o Apache precisará ser recarregado com

sudo /etc/init.d/apache reload

Embora possa parecer muito para configurar a quantidade de flexibilidade adquirida, na minha opinião, supera em muito o tempo de configuração. Embora você só precise de um único servidor da Web, no futuro, se você quisesse algo diferente de um único servidor da Web, seria necessário executar outras ações (ou apenas descartar a segurança em conjunto) para fazer isso.

    
por Marco Ceppi 01.06.2011 / 22:34
11

O Sftp é muito fácil de instalar. Basta instalar o pacote openssh-server e você terá o sftp. Certifique-se de que seu usuário tenha uma boa senha, se puder acessá-lo da Internet. (8+ caracteres, não uma palavra do dicionário, tem símbolos e números).

Para permissões, geralmente faço isso
sudo adduser <username> www-data
sudo chown -R www-data:www-data /var/www
sudo chmod -R g+rw /var/www
Você deve então poder postar páginas conectando-se ao sftp (usando seu nome de usuário e senha) e então indo para a pasta / var / www e colocando seus arquivos lá.

    
por Azendale 27.05.2011 / 15:57
1

Eu uso o webdav. É muito fácil instalar no Ubuntu Server. Se você tiver o apache instalado, estará quase pronto. Apenas sudo a2enmod dav; service apache2 restart . Você precisará fazer uma pequena configuração do seu site virtual. Aqui está um exemplo que estou usando na produção:

<VirtualHost *>
    ServerName webdav.mysite.com
    ServerAdmin [email protected]

    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 [email protected]

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

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

Você pode colocar isso em / srv / etc / apache2 / sites-available / mysite e, em seguida, fazer sudo a2ensite mysite; sudo service apache2 reload .

O que está acontecendo aqui é que você criou dois sites virtuais. Um é www.mysite.com e o outro é webdav.mysite.com. O PHP foi desativado em webdav.mysite.com, o que é importante.

Agora você pode acessar seu site através do http no Ubuntu, Windows e MacOS. Todos os três construíram o suporte do webdav. Aqui estão as instruções em adicionando um local de rede do webdav no Ubuntu .

    
por newz2000 01.06.2011 / 22:03
0

Eu daria permissões de gravação para / var / www ao www-data e adicionaria seu usuário a esse grupo. Dessa forma, seria fácil controlar quais usuários podem gravar nesse diretório.

sudo chgrp -R www-data /var/www
sudo chmod g+w -R /var/www 
usermod -a -G www-data your-user
    
por santiagozky 27.05.2011 / 15:55
-1

Você está usando algum framework para o seu site? Drupal, Wordpress, etc? O Drupal, por exemplo, possui ferramentas para fazer upload por meio da interação com o navegador.

Você já olhou para o Samba? Você pode configurar um compartilhamento Samba (e há toneladas de recursos na web para eles) e simplesmente usar o Windows Explorer para abrir / editar / salvar / excluir. Configure / var / www para ser compartilhado e, em seguida, mapeie a "unidade de rede" para o Windows.

Este é um trabalho ou um ambiente doméstico? Parece casa, mas se você estiver em um ambiente de trabalho ... você pode emparelhar o Samba com o Active Directory com ferramentas como o Likewise-Open. Eu tenho uma configuração de servidor / site de tal forma que aqueles na loja de TI podem fazer login em ambos os lados do servidor (linux ou site) através de suas credenciais de AD.

Eu também sugiro olhar para algo como Mercurial. Crie um repositório no servidor e sincronize com o Windows através de algo como o TortiseHG. Eu suponho que é como o rsync, mas você teria versão, backups, capacidade de distribuir, etc (SVN, Mercurial, Git, etc todas as opções)

    
por WernerCD 01.06.2011 / 22:16
-1

Você pode usar o sshfs. link

    
por Mihai 13.07.2011 / 14:10
-2

Você está atrás de algo assim

rsync -az --rsh "ssh" --rsync-path "sudo rsync" ~/website ubuntu@REMOTE-IP:/var/www
    
por kim0 01.06.2011 / 21:58