Todos nós sabemos como habilitar um site usando o apache no Linux. Tenho certeza de que todos concordamos em usar o comando a2ensite.
Infelizmente, não existe um comando equivalente padrão que vem com o Nginx, mas aconteceu que eu instalei algum pacote no Ubuntu que me permitiu habilitar/desabilitar sites e listá-los.
O problema é que não me lembro do nome deste pacote.
Alguém sabe do que estou falando?
Por favor, diga-me o nome deste pacote e o nome do comando.
Se você instalou o
nginx
pacote dos repositórios do Ubuntu, você terá dois diretórios./etc/nginx/sites-enabled
e/etc/nginx/sites-available
.Na configuração principal do nginx,
/etc/nginx/nginx.conf
, você tem a seguinte linha:Então, basicamente, para listar todos os virtualhosts disponíveis, você pode executar o seguinte comando:
Para ativar um deles, execute o seguinte comando:
Os scripts que vêm com o Apache são basicamente apenas invólucros de shell simples que fazem algo semelhante ao acima.
Depois de vincular os arquivos, lembre-se de executar
sudo service nginx reload
/service nginx reload
Basta criar este script
/usr/bin/nginx_modsite
e torná-lo executável.Como funciona:
Para listar todos os sites
Para habilitar o site "test_website"
Para desabilitar o site "test_website"
Há terceiros
nginx_ensite
enginx_dissite
disponíveis.Pode ser instalado tão rápido quanto
(veja o repositório, no entanto)
Exemplo de uso:
nginx_ensite example.org
(veja mais na página de manual online ).NGINX
Se você estiver usando um dos pacotes upstream oficiais do nginx de http://nginx.org/packages/ , a melhor maneira é navegar até o
/etc/nginx/conf.d
diretório e renomear o arquivo afetado de ter um.conf
sufixo para ter um diferente para desativar o site:sudo mv -i /etc/nginx/conf.d/default.conf{,.off}
Ou o contrário para habilitá-lo:
sudo mv -i /etc/nginx/conf.d/example.com.conf{.disabled,}
Isso ocorre porque o padrão
/etc/nginx/nginx.conf
tem a seguinteinclude
diretiva:Debian/Ubuntu
No entanto, se você estiver usando um derivado do Debian/Ubuntu, além de
conf.d
, você também pode ter o malvado não-padrãosites-available
esites-enabled
diretórios, alguns arquivos sob os quais podem ser incluídos de forma descuidada sem considerar sua extensão:Como tal, no Debian/Ubuntu, você deve primeiro descobrir onde a configuração do site está localizada.
Você pode usar o seguinte comando para obter uma lista de todos os sites disponíveis executando
find(1)
para encontrar todos os arquivos regulares correspondentes à máscara fornecida:find /etc/nginx -maxdepth 2 -type f \( -path "*/conf.d/*.conf" -or -path "*/sites-*/*" \)
Você pode usar o seguinte comando para obter uma lista de todos os sites habilitados :
find /etc/nginx -maxdepth 2 \( -path "*/conf.d/*.conf" -or -path "*/sites-enabled/*" \)
Então para desabilitar/habilitar sites no Debian/Ubuntu:
Para desabilitar um site: se a configuração estiver em
conf.d
, basta renomear o arquivo para não ter mais.conf
sufixo; ou se estiver emsites-enabled
, mova-o para fora desites-enabled
.Para habilitar um site, a melhor maneira seria movê-lo para
/etc/nginx/conf.d
, e renomeá-lo para ter um.conf
sufixo.PS Por que eu acho que o Debian
include /etc/nginx/sites-enabled/*;
é mau? Tente editar alguns arquivos nesse diretório e faça com que vocêemacs
crie os arquivos de backup (com o~
sufixo) e me pergunte novamente.Link com caminho completo :
Scripts de shell ngensite/ngdisite compactos
Depois de ler as respostas aqui enquanto configurava um novo servidor Debian, então fui fazer algumas pesquisas, fiz alguns scripts de shell legíveis para me ajudar a habilitar/desabilitar sites em um servidor com pelo menos alguma segurança (root desabilitado, não- portas padrão, etc.). Uma vez que os arquivos são executáveis com
chmod +x
qualquer pessoa com acesso root pode chamar esses scripts de qualquer lugar como/usr/local/bin/
está no Debian PATH por padrão.Eles funcionam (da maneira que usei por anos) criando e excluindo aliases,
sites_enabled
portanto, não toque no conteúdo dos arquivos de hosts virtuais emsites_available
.Ativar site
em:
/usr/local/bin/ngensite
:Em seguida, a partir da linha de comando:
sudo ngensite
(O prompt precisará do arquivo de configuração nginx virtualhosts exato ).
Desativar site
em:
/usr/local/bin/ngdissite
:Em seguida, a partir da linha de comando:
sudo ngdissite
(O prompt requer o nome exato do arquivo de configuração nginx virtualhosts).
Se você encontrar algum problema nestes (eles são muito simples, mas fazem o trabalho para mim), por favor, comente.
Outro método é apenas renomear o arquivo de configuração do site para algo que termine sem .conf
Por exemplo
sudo mv mysite.conf mysite.conf.disabled
Em seguida, recarregue o nginx e esse vhost retornará ao padrão.
Eu sei que não é tecnicamente correto, mas eu apenas
mv
configurosites-available
parasites-enabled
. Funciona bem, não viva uma vida complicada.Para habilitar:
Desabilitar:
I want to submit my script written in Bash to accommodate this feature. It's called
nginxsite
→ https://github.com/L1so/nginxsite/. For more info check the github link.Enabling
To activate a site, replace
(YOUR SITE)
with your actual site domain (located in/etc/nginx/sites-available/
).Disabling
To deactivate a site, replace
(YOUR SITE)
with your actual site domain (located in/etc/nginx/sites-available/
).Create server block
To create a site, replace
(YOUR DOMAIN)
with your actual domain.Running
ngxcreate
without any argument will give you a prompt to enter desired site name, if you don't include tld, the script will give you.com
domain.Will save a new file named
/etc/nginx/sites-available/examplesite.com
Delete server block
To delete a site, replace
(YOUR DOMAIN)
with your actual site domain.Example given below.