머리말
이것은 시간의 과정을 구축하기 위해 내 장고 프로젝트, 비오는 날 가져 요약 기록이다.
프로젝트 용도의 nginx + 방법의 혼합 uwsgi.
프로젝트 종속성을 채택 requirements.txt
파일 관리의 길을.
현지 준비
-
우리는 더이 프로젝트의 최대 및 실행 확인 할 수 없다
bug
-
수출 환경의 현재 패키지
pip freeze > requirements.txt
-
항목은 서버에 업로드
/srv
디렉토리. 여기에서git
, 예를 들면, 단말기를 열고 다음 명령 시퀀스를 입력 형태 :$ 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
서버에 프로젝트를 배포
파이썬 설치
-
설치 프로젝트를 사용
python
.$ sudo apt install python $ sudo apt install python-pip $ pip install --upgrade pip
-
설치
virtualenv
및virutalenvwrapper
및 가상 환경을 만들 수 있습니다.$ pip install virtualenv $ pip install virtualenvwrapper $ sudo apt install vim
-
파일을 편집
~/.bashrc
$ vim ~/.bashrc # 添加如下2行代码 export WORKON_HOME=$HOME/.virtualenvs source /usr/local/bin/virtualenvwrapper.sh # 保存文件,让文件成效 $ source ~/.bashrc
자식을 설치합니다 :
$ sudo apt install git
# 为了方便XShell或者CRT连接服务器,建议安装OpenSSH
$ sudo apt install openssh-server openssh-client
$ service ssh restart
설치 MySQL의
$ sudo apt install mysql-server mysql-client
$ sudo apt-get install libmysqld-dev
시험 구성
- 가상 환경으로, 종속성을 설치
workon ***
명령을 실행, 프로젝트 루트 디렉토리에,pip install -r requirements.txt
- 데이터베이스 만들기 새 터미널을 열고, 데이터베이스, 로그
mysql -uroot -p
및 적절한 데이터베이스를 생성CREATE DATABASE IF NOT EXISTS my_db default charset utf8mb4;
- 데이터 마이그레이션,
python manage.py migrate
- 수집 정적 파일,
python manage.py collectstatic
- 서버를 시작 실행
python manage.py runserver 0.0.0.0:8000
한 다음 컴퓨터의 브라우저에 입력http://<your server ip>:8000
액세스 모든 페이지에서 사이트의 모든 페이지가 오류가 없는지 확인합니다.
참고 :
- 설정
ALLOW_HOST
도메인 이름이나ip
주소를. - 설정
DEBUG=False
.
설치 uwsgi
uwsgi
응용 프로그램 서버, 네트워크 요청이 비 정적 파일이 그에 의해 완료해야합니다, 그는 여전히 자신의 장점을 파일 서버의 역할을 할 수는 없지만.
uwsgi
를 사용하는 것입니다 python
그래서를 통해 쓰기, pip install uwsgi
그것은. ( uwsgi
시스템 레벨에서 설치해야합니다 Python
, 환경, 가상 환경을 설치하지 마십시오).
-
명령 줄 시작
uwsgi
:$ uwsgi --http :8000 --module test.wsgi --vritualenv=/root/.virtualenvs/django-env-py36
브라우저에서 테스트 페이지에 액세스 할 수있는 경우의 지침 uwsgi 프로젝트를로드 할 수 있습니다.
-
프로필 방법은 시작합니다
uwsgi
:프로젝트의 루트 경로 아래 파일 작성
djangotest.ini
다음 코드에서, 채우기 :[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,看下是否还能启动这个项目。
nginx를 설치
nginx
그것은이다 web
서버. 정적 파일을로드하고받을 http
요청합니다.
-
명령을
sudo apt install nginx
설치합니다. -
nginx
일반적으로 사용되는 명령 :- 시작의 nginx : 서비스가 시작 Nginx에
- 닫기의 nginx : 서비스의 nginx 정지
- 다시 시작의 nginx : 서비스 nginx를 다시 시작
-
정적 파일을 수집합니다 :
정적 파일은 허용되어야
nginx
보다는 다루는django
수행하는.먼저, 확인
settings.py
파일이이STATIC_ROOT
구성을 정적 파일을 지정해야이 구성되는 카탈로그 아래에 위치한다.그리고 우리는 다음과 같은 명령을 실행할 수 있습니다 :
python manage.py collectstatic
모든 정적 파일 (이미 수행, 무시하십시오)를 수집 할 수 있습니다. -
에 쓰기의 nginx 구성 파일
/etc/nginx/conf.d
디렉토리는 새 파일을 만들고djangotest.conf
그것으로 다음 코드를 붙여 넣습니다 다음과 :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; } }
-
구성 테스트
service nginx configtest
파일 : . 주 : 각 변경 후 구성을 다시 시작해야합니다nginx
:service nginx restart
사용 관리자
uwsgi 관리 감독자, 사고, 자동 재시작의 경우 uwsgi 수 있습니다 보자.
-
설치
supervisor
: 시스템 수준 파이썬 환경에서pip install supervisor
. -
프로젝트의 루트 디렉토리에있는 파일을 만듭니다
my_supervisor.conf
. 내용의 준비 :# 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
-
실행
supervisor
, 실행supervisord -c my_supervisor.conf
. -
에
supervisor
관리 콘솔,supervisorctl -c my_supervisor.conf
-
supervisor
관리 콘솔은 일반적으로 사용되는 명령# 查看状态 status # 启动程序 start program_name # 重新启动程序 restart program_name # 关闭程序 stop program_name # 重新加载配置文件 reload # 退出控制台 quit
코드를 즐기십시오!