欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

django项目部署

程序员文章站 2022-06-11 10:46:20
...

先在云服务器的控制台中配置安全组,打开80,8000端口
uwsgi.ini 路径一定要写正确,项目文件一定要有递归权限!
参考文档: https://blog.csdn.net/u011798443/article/details/80881931
一、更新系统软件包
执行命令: yum update -y
二、安装软件管理包和可能使用的依赖

  1. 执行命令: yum -y groupinstall “Development tools”
  2. 执行命令: yum install openssl-devel bzip2-devel expat-devel gdbm-devel readline-devel sqlite-devel
    三、下载Pyhton3到 /usr/local 目录
    1.切换到 /usr/local 目录
    2.获取python3.6的压缩文件
    执行命令: wget https://www.python.org/ftp/python/3.6.6/Python-3.6.6.tgz

3.解压python3.6
执行命令: tar -zxvf Python-3.6.6.tgz
4.进入 python-3.6.6 的路径
执行命令: ls 查看目录 cd Python-3.6.6 进入目录
5.编译安装python3到指定路径
A)执行命令: ./configure --prefix=/usr/local/python3
注意:/usr/local/python3 路径可以自己指定,自己记着就行,下边要用到。
B)安装python3
a)执行命令: make
b)执行命令: make install
C)安装完成之后,建立软链接,添加变量,方便在终端中直接使用python3
a)python3的软连接
执行命令: ln -s /usr/local/python3/bin/python3.6 /usr/bin/python3
b)pip3的软连接
执行命令: ln -s /usr/local/python3/bin/pip3.6 /usr/bin/pip3
c)查看python和pip的版本
执行命令: python3 和 pip3 -V

四、安装virtualenv ,建议大家都安装一个virtualenv,方便不同版本项目管理
1.执行命令: pip3 install virtualenv
2.建立软连接

执行命令: ln -s /usr/local/python3/bin/virtualenv /usr/bin/virtualenv

3.在根目录下建立两个文件夹,主要用于存放env和网站文件的(个人习惯,其它人可根据自己的实际情况处理)

执行命令: mkdir -p /data/env 和 mkdir -p /data/wwwroot
五、切换到/data/env/下,创建指定版本的虚拟环境
1.执行命令 : cd /data/env 切换目录
2.执行命令: virtualenv --python=python3 pyweb
python3 -m venv django_venv
3.进入/data/env/pyweb/bin,启动虚拟环境
A.执行命令: cd /data/env/pyweb/bin
B.执行命令: source activate
注意:出现(pyweb),说明是成功进入虚拟环境。
六、虚拟环境里安装Django和uwsgi
1.执行命令: pip3 install django==2.1.3
2.执行命令: pip3 install uwsgi
3.给uwsgi建立软链接
执行命令: ln -s /usr/local/python3/bin/uwsgi /usr/bin/uwsgi
七、切换到网站目录/data/wwwroot,创建Django项目,可用wsp传入
八、启动项目
1.执行命令: cd /data/wwwroot/mysite 切换到mysite目录
2.执行命令: python3 manage.py runserver 可见项目正常启动了
十三、Django正常运行之后,我们就开始配置一下uwsgi
1.执行命令: cd /data/wwwroot/mysite 切换到mysite项目下

2.项目根目录下创建uwsgi.ini文件

执行命令: vim uwsgi.ini 输入以下内容:(不能多空格)
[uwsgi]
socket=0.0.0.0:8000
#http=0.0.0.0:8000
chdir=/home/smxuser/WangBianBan #改成对应的项目的路径
wsgi-file=WangBianBan/wsgi.py #改成对应的wsgi.py的路径
processes=4
threads=2
master=True
pidfile=uwsgi.pid
daemonize=uwsgi.log

3.按Esc键,输入 :wq 保存退出

十四、安装nginx和配置nginx.conf文件

1.执行命令: cd /home 进入home目录

2.执行命令: wget http://nginx.org/download/nginx-1.13.7.tar.gz 下载NGINX压缩包

3.解压NGINX,执行命令: tar -zxvf nginx-1.13.7.tar.gz

4.依次执行以下命令:

a)执行命令: cd nginx-1.13.7 进入nginx-1.13.7文件夹

b)执行命令: ./configure

c)执行命令: make

d)执行命令: make install

注意:nginx一般默认安装好的路径为/usr/local/ngin
5.进入 /usr/local/nginx/conf 目录,打开nginx.conf文件
a)执行命令: cd /usr/local/nginx/conf 进入目录
b)执行命令: vim nginx.conf 在server里编辑以下内容:
user root; #user 设置!
http {
include mime.types;
default_type application/octet-stream;

#log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
#                  '$status $body_bytes_sent "$http_referer" '
#                  '"$http_user_agent" "$http_x_forwarded_for"';

#access_log  logs/access.log  main;
sendfile        on;
tcp_nopush     on;
tcp_nodelay    on;
#tcp_nopush     on;

#keepalive_timeout  0;
keepalive_timeout  65;
gzip  on;
#gzip  on;

server {
    listen       80; #不变
    server_name  localhost; #不变
    charset utf-8;
    #access_log  logs/host.access.log  main;

    location / {
        include uwsgi_params;
        uwsgi_pass 127.0.0.1:8000;   #后面换成解析的公网ip!
    }
    location /static/ {
    alias /home/smxuser/WangBianBan/static/;
    }
    #error_page  404              /404.html;

6.执行命令: cd /usr/local/nginx/sbin 进入 /usr/local/nginx/sbin/ 目录
7.执行命令: ./nginx -t (千万不要忘了那个.)
注意:终端没有任何提示就证明nginx启动成功。可以使用你的服务器地址查看,成功之后就会看到一个nginx欢迎页面。

十五、访问项目的页面
1.执行命令: cd /data/wwwroot/mysite/ 进入Django项目目录
2.执行命令: uwsgi --ini uwsgi.ini (如果使用的xml文件则用这个#uwsgi -x mysite.xml )

3.如果没有报错,那么:
A)执行命令: cd /usr/local/nginx/sbin/ 进入目录
B)执行命令: ./nginx -s reload 重启nginx
4.然后在浏览器里输入IP就OK了!

其他问题:reload时:
(django_venv) [[email protected] sbin]# ./nginx -s reload
nginx: [error] invalid PID number “” in “/usr/local/nginx/logs/nginx.pid”
切换到nginx目录:
(django_venv) [[email protected] nginx]# sudo /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
(django_venv) [[email protected] nginx]# sudo /usr/local/nginx/sbin/nginx -s reload

(django_venv) [[email protected] sbin]# ./nginx -s reload
nginx: [error] open() “/usr/local/nginx/logs/nginx.pid” failed (2: No such file or directory)
(django_venv) [[email protected] sbin]# chmod 777 -R nginx

注意:项目路径的配置,放到smxuser 下,不能放到root 里!
drwxrwxr-x 7 smxuser 190 2月 19 20:44 WangBianBan

静态资源问题:
MEDIA_URL = “/media/”
MEDIA_ROOT = os.path.join(BASE_DIR, “media”)
STATIC_URL = ‘/static/’ #与nginx.conf中的静态文件一致
STATIC_ROOT=os.path.join(BASE_DIR, ‘static’) #与nginx.conf中的静态文件一致

注释下面的

STATICFILES_DIRS = [

os.path.join(BASE_DIR, “/static/”),

]

STATICFILES_FINDERS = (
‘django.contrib.staticfiles.finders.FileSystemFinder’,
‘django.contrib.staticfiles.finders.AppDirectoriesFinder’,
)

虚拟环境下执行:python3 manage.py collectstatic
urls.py 配置如下:
from user.views import upload_img

新导入下面的包

from django.urls import path
from django.conf.urls import url,include
from .settings import STATIC_ROOT, MEDIA_ROOT
from django.views.static import serve
urlpatterns = [
path(‘admin/’, admin.site.urls),
url(r’^’, include((‘user.urls’,‘user’),namespace=‘user’)),
url(‘uploadimg/’, upload_img),
url(r’^ckeditor/’, include(‘ckeditor_uploader.urls’)),
。。。
url(r’^static/(?P.*),serve,documentroot:STATICROOT,name=static),url(rmedia/(?P<path>.)', serve, {'document_root': STATIC_ROOT}, name='static'), url(r'^media/(?P<path>.*)’, serve, {‘document_root’: MEDIA_ROOT}, name=‘media’),
]

237段云主机:(由于uwsgi无法pip安装,不在虚拟环境下执行如下相应命令)!
uwsgi --plugin python36 uwsgi.ini
systemctl restart nginx

uwsgi.ini 文件如下:
[uwsgi]
socket=0.0.0.0:8000
#http=0.0.0.0:8000
chdir=/home/smxuser/WangBianBan
wsgi-file=WangBianBan/wsgi.py
processes=4
threads=2
master=True
pidfile=uwsgi.pid
daemonize=uwsgi.log

nginx.conf 文件如下:

user root; #user 设置!
http {
include mime.types;
default_type application/octet-stream;

#log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
#                  '$status $body_bytes_sent "$http_referer" '
#                  '"$http_user_agent" "$http_x_forwarded_for"';

#access_log  logs/access.log  main;
sendfile        on;
tcp_nopush     on;
tcp_nodelay    on;
#tcp_nopush     on;

#keepalive_timeout  0;
keepalive_timeout  65;
gzip  on;
#gzip  on;

server {
    listen       80;
    server_name  localhost;

    charset utf-8;

    #access_log  logs/host.access.log  main;

    location / {
        #root   html;
        #index  index.html index.htm;
        include uwsgi_params;
        uwsgi_pass 127.0.0.1:8000;

    }
    location /static/ {
    alias /home/smxuser/WangBianBan/static/;
    }
    #error_page  404              /404.html;

C:\Users\Administrator\AppData\Local\Programs\Python\Python36\Lib\site-packages

uwsgi.ini 路径一定要写正确,项目文件一定要有递归权限!