서버 구축 프로 세 스 기록 Nginx + uwsgi + Django
본문 진행 의 전제:
로 컬 에서 Django 프로젝트 디 버 깅 을 마 친 후 서버 로 이동 하 는 데 하루 가 걸 렸 습 니 다. 절 차 를 참고 하 십시오.
첫 번 째 Django 프로젝트 설정 수정 완료
//settings.py
DEBUG = False
ALLOWED_HOSTS = ['*']
# STATICFILES_DIRS           django                 
# STATIC_ROOT          ./manage.py collectstatic (   app       )                
#    nginx        STATIC_ROOT           
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
# STATICFILES_DIRS = [
#     os.path.join(BASE_DIR, 'static')
# ]   
#           ,
#nginx           ,           http  ,   、  ,
#            nginx         ,       ,
#        ,nginx       ,      uWSGI;uWSGI           ,      wsgi,
#wsgi      django          ,    django      wsgi,
#wsgi        ,   uWSGI,
#uWSGI      nginx,nginx            (    )。
#* :                        
# project.conf 
user www-data;
worker_processes auto;
pid /run/nginx.pid;
events {
  worker_connections 768;
  # multi_accept on;
}
http {
  sendfile on;
  tcp_nopush on;
  tcp_nodelay on;
  keepalive_timeout 65;
  types_hash_max_size 2048;
  include /etc/nginx/mime.types;
  default_type application/octet-stream;
  ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Dropping SSLv3, ref: POODLE
  ssl_prefer_server_ciphers on;
  access_log /var/log/nginx/access.log;
  error_log /var/log/nginx/error.log;
  gzip on;
  gzip_disable "msie6";
  include /etc/nginx/conf.d/*.conf;
  include /etc/nginx/sites-enabled/*;
  
  #      
  server {
      listen         80;
      server_name    www.19950314nina.top;   #           
      charset UTF-8;
      access_log      /var/log/nginx/myweb_access.log; 
      error_log       /var/log/nginx/myweb_error.log;
  
      client_max_body_size 75M;
  #        ,nginx      uWSGI;uWSGI          ,   wsgi,
      location / {
         include uwsgi_params;
         uwsgi_pass 127.0.0.1:8000;    #       8000         uwsgi.ini     
         uwsgi_read_timeout 10;    #                   504
      }
     #            nginx         ,       ,
      location /static {
          expires 30d;
          autoindex on;
          add_header Cache-Control private;
          alias /home/mrg/PycharmProjects/myblog/static/; #               setting.py     STATIC_ROOT    
     }
   }
}
[uwsgi]
socket = :8000   #       nginx         
chdir=/home/mrg/PycharmProjects/myblog  # django        
module= myblog.wsgi       # wsgi.py          
master = true         
processes=2
threads=2
max-requests=2000
chmod-socket=664
vacuum=true
daemonize = /home/mrg/PycharmProjects/myblog/uwsgi.log # uwsgi             
#    
[uwsgi]
socket= :8000
chdir = /home/mrg/PycharmProjects/myblog  #django        
module = myblog.wsgi
master = true
processes = 4
vacumm = true
두 번 째 사용 git
저 한 테 는 git 를 사용 하 는 게 편 해 요.
다른 방식 으로 파일 을 서버 에 업로드 할 수도 있 습 니 다.
git init   #     
git remote add origin          #       
source ~/env/bin/activate    #             django     
pip freeze > requirements.txt   #       
git add .  #       
git commit -m '    '  #        
git push origin master   #        
#                 ,        ,       :
git stash
git pull
git stash pop
#                      .     :
git reset --hard
git pull
ssh [email protected]
#   root                 ,mrg     
#            ,          
root@localhost:~# useradd -m -s /bin/bash mrg
#               
root@localhost:~# usermod -a -G sudo mrg
#         
#                 ,        ,      
root@localhost:~# passwd mrg
#          
root@localhost:~# su  mrg
#     ,@               root  
mrg@localhost:~$
- sudo apt-get update
- sudo apt-get upgrade
- sudo apt-get install man gcc  make sudo lsof ssh openssl tree vim dnsutils iputils-ping net-tools psmisc sysstat curl telnet traceroute wget libbz2-dev libpcre3 libpcre3-dev libreadline-dev libsqlite3-dev libssl-dev zlib1g-dev git mysql-server mysql-client zip  p7zip mycli
- sudo apt-get python3-pip
- sudo pip3 install virtualenv  
- sudo virtualenv -p python3 env_name        
- source ~/env_name/bin/active          
- pip install uwsgi    uwsgi
- deactivate        
- sudo ufw allow 80     80  
  mysql     
cd /etc/mysql/mysql.conf.d
sudo cp mysql.cnf  mysql.cnf.bak
sudo vim mysql.cnf
 [mysqld]     :
character_set_server = utf8
       
sudo systemctl restart mysql.service  #    
sudo apt-get install nginx  #  
sudo /etc/init.d/nginx start[or stop or restart]  #  ,  ,  
git clone          #    clone  
# cd       
source ~/env/bin/activate    #                      
pip install -r requirements.txt   #       
네 번 째 단계 설정 확인 및 수정
#     
grant all on *.* to 'django'@'%' identified by 'djangopwd';
#        
flush privileges;
#       
create database project
#cd      
./manage.py makemigrations  #       
./manage.py migrate  #   
./manage.py collectstatic  #        
1.settings.py 
2.project.conf
alias /home/mrg/PycharmProjects/myblog/static/; #               setting.py     STATIC_ROOT    
3.projectname_uwsgi.ini
chdir=/home/mrg/PycharmProjects/myblog  # django        
   2,3               
# cd       
uwsgi --ini project_uwsgi.ini   
nginx -c /home/mrg/PycharmProjects/myblog/project.conf    #             
-----------------------------------------------------------------------------------------------------------------------------
후기
나 처럼 어 리 석 은 가운데 끊임없이 지식 을 얻 고 진보 하 는 사람들 에 게 바 칩 니 다.
네온사인 이 반 짝 이지 만, 사람들 이 진정 으로 필요 로 하 는 것 은 단지 앞길 을 밝 힐 수 있 는 촛불 일 뿐이다.
참고 블 로그:
https://blog.csdn.net/c465869935/article/details/53242126
https://www.cnblogs.com/fnng/p/5268633.html
https://www.zmrenwu.com/post/20/
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.