centos7下部署Django(nginx+uwsgi+python3+django)

原创 Laughing  2018-04-16 23:04  阅读 527 次 评论 0 条

系统信息

系统版本
centos7.6 x64

python版本
使用官方python3.6.3正式版

django版本
使用本文发布时最新的1.11.7

uwsgi版本
使用本文发布时最新的2.0.15

nginx版本
使用本文发布时官网最新的1.13.7

进入正题,一行命令,一行注释,使用root身份登录系统执行

1、安装各类基础模块

yum -y install gcc gcc-c++
(为centos系统增加编译功能)

yum install wget openssl-devel bzip2-devel expat-devel gdbm-devel readline-devel sqlite-devel
(安装这些模块都是为了成功编译安装python3,防止出现各种异常)

yum install libxml*
(安装这个模块是为了让uwsig支持使用“-x"选项,能通过xml文件启动项目)

2、编译安装python3

进入home路径(本人喜欢把东西都下载到这里),执行以下命令:
wget https://www.python.org/ftp/python/3.6.3/Python-3.6.3.tgz

下载完成后,执行解压命令:
tar -zxvf Python-3.6.3.tar.gz

进入解压后的Python-3.6.3文件夹,依次执行以下命令
./configure --prefix=/usr/local/python3
(将python3安装到/usr/local/python3/路径下)
make -j2
make install -j2
ln -s /usr/local/python3/bin/python3.6 /usr/bin/python3
ln -s /usr/local/python3/bin/pip3 /usr/bin/pip3
(以上两个ln命令是为了方便在终端中直接使用python3和pip3命令)

3、给python3安装django和uwsgi以及配置启动项目的xml文件

pip3 install django
pip3 install uwsgi

为了在终端中使用uwsgi命令,执行以下命令
ln -s /usr/local/python3/bin/uwsgi /usr/bin/uwsgi3

将你的django项目放到你想放的路径下,例如/home/www/,假设我们的Django项目名为"DotNetCore",里面有一个应用叫"DotNetCore"
在你的django项目下新建 DotNetCore.xml,内容如下:

  1. <uwsgi>  
  2.     <socket>127.0.0.1:8997</socket><!-- 内部端口,自定义 -->  
  3.         <chdir>/home/www/DotNetCore</chdir><!-- 项目路径 -->  
  4.             <module>DotNetCore.wsgi</module>  
  5.                 <processes>4</processes> <!-- 进程数 -->   
  6.     <daemonize>uwsgi.log</daemonize><!-- 日志文件 -->  
  7. </uwsgi>  

4、安装nginx和配置nginx.conf文件

进入home目录,执行以下命令:
wget http://nginx.org/download/nginx-1.13.7.tar.gz

下载完成后,执行解压命令:
tar -zxvf nginx-1.13.7.tar.gz
进入解压后的nginx-1.13.7文件夹,依次执行以下命令:
./configure
make
make install

nginx一般默认安装好的路径为/usr/local/nginx
在/user/local/nginx/conf/中打开nginx.conf,加入以下内容

  1. #user  nobody;  
  2. worker_processes  1;  
  3.   
  4. #error_log  logs/error.log;  
  5. #error_log  logs/error.log  notice;  
  6. #error_log  logs/error.log  info;  
  7.   
  8. #pid        logs/nginx.pid;  
  9.   
  10.   
  11. events {  
  12.     worker_connections  1024;  
  13. }  
  14.   
  15.   
  16. http {  
  17.     include       mime.types;  
  18.     default_type  application/octet-stream;  
  19.   
  20.     #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '  
  21.     #                  '$status $body_bytes_sent "$http_referer" '  
  22.     #                  '"$http_user_agent" "$http_x_forwarded_for"';  
  23.   
  24.     #access_log  logs/access.log  main;  
  25.   
  26.     sendfile        on;  
  27.     #tcp_nopush     on;  
  28.   
  29.     #keepalive_timeout  0;  
  30.     keepalive_timeout  65;  
  31.   
  32.     #gzip  on;  
  33.   
  34.     server {  
  35.         listen       80;  
  36.         server_name  localhost;  
  37.   
  38.         charset utf-8;  
  39.   
  40.          access_log  /var/log/nginx/SchoolBuy_access.log;  
  41.          error_log   /var/log/nginx/SchoolBuy_error.log;  
  42.   
  43.         location / {  
  44.             root   html;  
  45.             index  index.html index.htm;  
  46.             include uwsgi_params;  
  47.             uwsgi_pass 127.0.0.1:8997; #外部访问8996就转发到内部8997  
  48.         }  
  49.   
  50.         location /Content/ {  
  51.         alias /home/www/DotNetCore/Content/; #项目静态路径设置  
  52.     }  
  53.   
  54.         #error_page  404              /404.html;  
  55.   
  56.         # redirect server error pages to the static page /50x.html  
  57.         #  
  58.         error_page   500 502 503 504  /50x.html;  
  59.         location = /50x.html {  
  60.             root   html;  
  61.         }  
  62.   
  63.         # proxy the PHP scripts to Apache listening on 127.0.0.1:80  
  64.         #  
  65.         #location ~ \.php$ {  
  66.         #    proxy_pass   http://127.0.0.1;  
  67.         #}  
  68.   
  69.         # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000  
  70.         #  
  71.         #location ~ \.php$ {  
  72.         #    root           html;  
  73.         #    fastcgi_pass   127.0.0.1:9000;  
  74.         #    fastcgi_index  index.php;  
  75.         #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;  
  76.         #    include        fastcgi_params;  
  77.         #}  
  78.   
  79.         # deny access to .htaccess files, if Apache's document root  
  80.         # concurs with nginx's one  
  81.         #  
  82.         #location ~ /\.ht {  
  83.         #    deny  all;  
  84.         #}  
  85.     }  
  86.   
  87.   
  88.     # another virtual host using mix of IP-, name-, and port-based configuration  
  89.     #  
  90.     #server {  
  91.     #    listen       8000;  
  92.     #    listen       somename:8080;  
  93.     #    server_name  somename  alias  another.alias;  
  94.   
  95.     #    location / {  
  96.     #        root   html;  
  97.     #        index  index.html index.htm;  
  98.     #    }  
  99.     #}  
  100.   
  101.   
  102.     # HTTPS server  
  103.     #  
  104.     #server {  
  105.     #    listen       443 ssl;  
  106.     #    server_name  localhost;  
  107.   
  108.     #    ssl_certificate      cert.pem;  
  109.     #    ssl_certificate_key  cert.key;  
  110.   
  111.     #    ssl_session_cache    shared:SSL:1m;  
  112.     #    ssl_session_timeout  5m;  
  113.   
  114.     #    ssl_ciphers  HIGH:!aNULL:!MD5;  
  115.     #    ssl_prefer_server_ciphers  on;  
  116.   
  117.     #    location / {  
  118.     #        root   html;  
  119.     #        index  index.html index.htm;  
  120.     #    }  
  121.     #}  
  122.   
  123. }  

(以上内容请保证在默认内容的大括号内)

wq保存后进入/usr/local/nginx/sbin/目录
执行./nginx -t命令先检查配置文件是否有错,没有错就执行以下命令:
./nginx
终端没有任何提示就证明nginx启动成功,可以通过链接查看nginx是否启动成功:
http://192.168.1.111 (请将该ip替换成你的服务器ip)

5、访问项目页面

进入你的django项目路径,执行以下命令:
uwsgi3 -x DotNetCore.xml
以上步骤都没有出错的话,打开你的浏览器,输入以下链接,记得关闭系统防火墙或者开放8996端口
http://192.168.1.111:8996 (请将该ip替换成你的服务器ip)
网站访问成功!

本文地址:https://www.lisen.me/centos7-django-nginx-uwsgi-python3-django.html
版权声明:本文为原创文章,版权归 木子网 所有,欢迎分享本文,转载请保留出处!

发表评论


表情