prefácio
Este é o meu projeto Django para construir o processo do tempo, ficha resumo trouxe para um dia chuvoso.
usos do projeto nginx + uwsgi combinação de métodos.
dependências do projeto adotar requirements.txt
a forma de gerenciamento de arquivos.
Preparações locais
-
Podemos confirmar que o projeto instalado e funcionando, não há
bug
-
O pacote atual do ambiente exportação
pip freeze > requirements.txt
-
Os itens enviados para o servidor
/srv
de diretório. Aqui emgit
forma de, por exemplo, para abrir o terminal, introduzir a seguinte sequência de comando:$ git init $ git remote add origin xxx.git # 替换成你的项目git地址 $ git add . $ git commit -m 'first commit' $ git pull origin master --allow-unrelated-histories $ git push origin master
Implantar o projeto para o servidor
instale python
-
projeto instalado utilizado
python
.$ sudo apt install python $ sudo apt install python-pip $ pip install --upgrade pip
-
Instalação
virtualenv
evirutalenvwrapper
e criar um ambiente virtual.$ pip install virtualenv $ pip install virtualenvwrapper $ sudo apt install vim
-
Edite o arquivo
~/.bashrc
$ vim ~/.bashrc # 添加如下2行代码 export WORKON_HOME=$HOME/.virtualenvs source /usr/local/bin/virtualenvwrapper.sh # 保存文件,让文件成效 $ source ~/.bashrc
Instalar git:
$ sudo apt install git
# 为了方便XShell或者CRT连接服务器,建议安装OpenSSH
$ sudo apt install openssh-server openssh-client
$ service ssh restart
Instalando o MySQL
$ sudo apt install mysql-server mysql-client
$ sudo apt-get install libmysqld-dev
Configuração de teste
- Instalar dependências, no ambiente virtual
workon ***
, no diretório raiz do projeto, execute o comandopip install -r requirements.txt
- Criar um banco de dados, abra um novo terminal, banco de dados de log,
mysql -uroot -p
e criar o banco de dados apropriadoCREATE DATABASE IF NOT EXISTS my_db default charset utf8mb4;
- migração de dados,
python manage.py migrate
- arquivos estáticos coletar,
python manage.py collectstatic
- Inicie o servidor, executar
python manage.py runserver 0.0.0.0:8000
e digite no navegador em seu computadorhttp://<your server ip>:8000
, acesso o site em todas as páginas para garantir que todas as páginas estão livres de erros.
Nota:
- Defina
ALLOW_HOST
o seu nome ou domínioip
endereço. - Configurações
DEBUG=False
.
uwsgi instalação
uwsgi
É um arquivo non-static servidor de aplicação, pedidos de rede deve ser concluída por ele, ele ainda pode atuar como um servidor de arquivos, mas não o seu ponto forte.
uwsgi
É o uso de python
escrita, para através pip install uwsgi
dele. ( uwsgi
Deve ser instalado no nível de sistema de Python
meio ambiente, não instalar o ambiente virtual).
-
Comando linha de partida
uwsgi
:$ uwsgi --http :8000 --module test.wsgi --vritualenv=/root/.virtualenvs/django-env-py36
Se você tiver acesso à página de teste em um navegador, você pode carregar as instruções uwsgi projeto.
-
Perfis maneira de começar
uwsgi
:Abaixo o caminho raiz do projeto, crie um arquivo
djangotest.ini
, preencha o seguinte código:[uwsgi] # Django相关的配置 # 必须全部为绝对路径 # 项目的路径 chdir=/srv/djangotest # Django的wsgi文件 module=djangotest.wsgi # Python虚拟环境的路径 home=/root/.virtualenvs/django-env-py36 # 进程相关的设置 # 主进程 master=true # 最大数量的工作进程 processes=10 # socket文件路径,绝对路径 socket=/srv/djangotest/djangotest.sock # 设置socket的权限 chmod-socket=666 # 退出的时候是否清理环境 vacuum=true 然后使用命令uwsgi --ini djangotest.ini,看下是否还能启动这个项目。
instale nginx
nginx
É um web
servidor. arquivos estáticos para carregar e receber http
solicitações.
-
Comando
sudo apt install nginx
para instalar. -
nginx
comandos mais usados:- Iniciar nginx: Serviço nginx começar
- Fechar nginx: parada nginx serviço
- Restart nginx: Serviço nginx restart
-
Coletar arquivos estáticos:
arquivos estáticos devem ser autorizados
nginx
a lidar com, ao invés dedjango
fazer.Primeiro, verifique se o
settings.py
arquivo tem umaSTATIC_ROOT
configuração, essa configuração deve especificar os arquivos estáticos para ser colocado sob o qual catálogo.Então, podemos executar o seguinte comando:
python manage.py collectstatic
para recolher todos os arquivos estáticos (já realizado, por favor ignore). -
arquivo de configuração de gravação nginx no
/etc/nginx/conf.d
diretório, criar um novo arquivodjangotest.conf
e, em seguida, cole o seguinte código para ele:upstream djangotest { server unix:///srv/djangotest/djangotest.sock; } # 配置服务器 server { # 监听的端口号 listen 80; # 域名 server_name 192.168.0.101; charset utf-8; # 最大的文件上传尺寸 client_max_body_size 75M; # 静态文件访问的url location /static { # 静态文件地址 alias /srv/djangotest/static_dist; } # 最后,发送所有非静态文件请求到django服务器 location / { uwsgi_pass djangotest; # uwsgi_params文件地址 include /etc/nginx/uwsgi_params; } }
-
Teste a configuração
service nginx configtest
de arquivo: . Nota: Após cada alteração a configuração necessária para reiniciarnginx
:service nginx restart
Use supervisor
Vamos uwsgi supervisor de gestão, pode uwsgi no caso de acidentes, reinicialização automática.
-
Instalação
supervisor
: Em um ambiente de python nível do sistemapip install supervisor
. -
Criar um arquivo no diretório raiz do projeto
my_supervisor.conf
. Preparação de conteúdo:# supervisor的程序名字 [program:mysite] # supervisor执行的命令 command=uwsgi --ini zlkt_uwsgi.ini # 项目的目录 directory = /srv/djangotest # 开始的时候等待多少秒 startsecs=0 # 停止的时候等待多少秒 stopwaitsecs=0 # 自动开始 autostart=true # 程序挂了后自动重启 autorestart=true # 输出的log文件 stdout_logfile=/srv/djangotest/log/supervisord.log # 输出的错误文件 stderr_logfile=/srv/djangotest/log/supervisord.err [supervisord] # log的级别 loglevel=info # 使用supervisorctl的配置 [supervisorctl] # 使用supervisorctl登录的地址和端口号 serverurl = http://127.0.0.1:9001 # 登录supervisorctl的用户名和密码 username = admin password = 123 [inet_http_server] # supervisor的服务器 port = :9001 # 用户名和密码 username = admin password = 123 [rpcinterface:supervisor] supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface
-
Run
supervisor
, executarsupervisord -c my_supervisor.conf
. -
Para o
supervisor
console de gerenciamento,supervisorctl -c my_supervisor.conf
-
supervisor
Console de Gerenciamento comumente usado comandos# 查看状态 status # 启动程序 start program_name # 重新启动程序 restart program_name # 关闭程序 stop program_name # 重新加载配置文件 reload # 退出控制台 quit
Aproveite o seu código!