Django项目部署(二)

接下来的任务:

1.安装uwsgi web服务器进行配置django
2.交装nginx web服务器进行配置uwsgi
3.运行项目
4.数据库是连接的其他电脑的。在自己本 centos系统安装mysql服务
5.通过navicat (windows)软件远程操作centos中mysql 创建数据库文件…

一、Django正常运行之后就开始配置uwsgi

在这里插入图片描述
安装uwsgi

pip install uwsgi
#给uwsgi建立软链接,方便使用
ln -s /usr/local/python3/bin/uwsgi  /usr/bin/uwsgi
ln -s /data/env/pyweb/bin/uwsgi  /usr/bin/uwsgi

在这里插入图片描述
网站项目路径是 /data/wwwroot/cms/,在项目根目录下创建cms.xml文件,输入如下内容:
在这里插入图片描述
在这里插入图片描述

示例demo:

<uwsgi>    
   <socket>127.0.0.1:8997</socket><!-- 内部端口,自定义 --> 
   <chdir>/data/wwwroot/mysite/</chdir><!-- 项目路径 -->            
   <module>mysite.wsgi</module> 
   <processes>4</processes> <!-- 进程数 -->     
   <daemonize>uwsgi.log</daemonize><!-- 日志文件 -->
</uwsgi>

启动uwsgi

uwsgi -x cms.xml
ps -ef | grep uwsgi
kill -9 2886  #停止进程的话

在这里插入图片描述

二、安装NGINX

#使用yum安装nginx需要包括Nginx的库,安装Nginx的库
rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
yum -y install nginx
systemctl start nginx.service

firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --list-ports
systemctl restart firewalld.service

.安装好之后可以通过which nginxwhereis nginx find来查看nginx安装的位置
.配置文件是 /etc/nginx/conf.d/default.conf
.默认页面存放位置 /usr/share/nginx/html
在这里插入图片描述
在这里插入图片描述

大致讲解下NGINX的配置文件的关系以及conf文件里面内存参数的作用。

/etc/nginx/nginx.conf
在这里插入图片描述
在这里插入图片描述
/etc/nginx/conf.d/default.conf
配置文件中一个server对应的就是一个项目的配置,
1、servername 指定的是当前项目的访问域名 www.django.cn
2、 root :项目所在的根路径/data/wwrot/cms/ 。 www.django.cn域名绑定的路径就是/data/wwrot/cms/的

举例 root /data/wwrot/cms/a/ 。 当访问 www.django.cn/test.html ,则实际上访问的路径是 /data/wwrot/cms/a/下的test.html

3、 配置文件中的location ,他匹配访问路径的 , 可以有多个location,主要就是和路径进行匹配。存在优先原则的。
如果访问路径中有 / ,则匹配到,进入相应路径 。 root /usr/share/nginx/html 为进去路径。index则是默认访问的文件
在这里插入图片描述
同理如果路径含有 /50x.html 则进到下面这个location
在这里插入图片描述

通过nginx web服务器来运行django下项目

在/usr/local/nginx/conf.d中备份default.conf文件,以防意外。cp default.conf default.conf.bak
然后打开default.conf,把原来的内容删除,直接加入以下demo内容:

server {
    
    
        listen       80;
        server_name  www.django.cn(绑定的域名 如果没有localhost);
        charset utf-8;
        location / {
    
    
           include uwsgi_params; #
           uwsgi_pass 127.0.0.1:8997;
           uwsgi_param UWSGI_SCRIPT mysite.wsgi;
           uwsgi_param UWSGI_CHDIR /data/wwwroot/mysite; #项目路径
           
        }
#192.168.1.186/admin/login   192.168.1.186/static/img/1.jpg
        location /static/ {
    
    
        alias /data/wwwroot/mysite/static/; #静态资源路径
        }
    }
上面的 include uwsgi_params;   等价写法是 include ./uwsgi_params 。注意这个是在default.conf里的内容,而且conf.d下也没有uwsgi_params文件。
当加载nginx.conf 他会引用default.conf的内容。因为nginx.conf有句包含conf语法include /etc/nginx/conf.d/*.conf 。  他这种写法,所以是uwsgi_params放在与nginx.conf同级的目录文件夹下。

uwsgi_params模块是与uwsgi对接的。 类似于fastcgi_params是与php-fpm对接的,
nginx服务下面有一个文件uwsgi-params 文件才能保证nginx和mwsgi服务进行为联;
类似的fastcgi_params文件才能保证nginx和php-fpm服务对接关联。

在这里插入图片描述
在这里插入图片描述
default.conf的内容:
在这里插入图片描述
在这里插入图片描述

此时启动项目

systemctl restart nginx.service
cd /data/wwwroot/cms
uswgi -x cms.xml

firewall-cmd --zone=public --add-port=8997/tcp --permanent
systemctl restart firewalld.service
firewall-cmd --list-ports

在这里插入图片描述
浏览器访问192.168.1.186/admin/login 。 ( 上小节我们用的是192.168.1.186:8000端口来访问系统的。)
在这里插入图片描述
查看NGINX报错日志/var/log/nginx/error.log
在这里插入图片描述
修复参考:https://www.cnblogs.com/williamjie/p/9604594.html
属于操作权限的问题 需要关闭seLinux服务 。/etc/sysconfig/selinux 修改成 SELINUX=disable
在这里插入图片描述

小结:

此时已经完成Linux+Nginx+Uwsgi+Python3+mysql(公网的)的项目搭建。

1)启动虚拟环境source activate
2) 先通过django 自带的web服务器来运行项目
3) 安装uwsgi
4 ) uwsgi的配置文件
5) 安装nginx
6) nginx的配置
7)启动uwsgi 和nginx
8)观察nginx的错误日志和uwsgi的log文件和客户(浏览器).最直接的服务就是nginx,先查看nginx错误日志。再观察uwsgi的错误
9 ) selinux安全服务没有关闭。 安装uwsgi的问题,创建软连接

END

猜你喜欢

转载自blog.csdn.net/Nightwish5/article/details/111552534