Django部署(Centos7+nginx+uwsgi+python3+django) 妖狐艹你老母 2022-05-09 15:16 194阅读 0赞 > 开发之路,羊肠九曲,荆棘密布,幸得高人指点,前辈填坑,一路谨小慎微,终得工程圆满;其间填坑之经验,开路之历程,皆为精华,不可弃之;记录于此,以便事后回顾,亦想于有相关开发疑惑之同学做参考之用,文中如若有错,恳请雅正,不胜感激。 # 环境 # 系统版本 centos7 python版本 使用官方python3.6.4正式版 django版本 使用本文发布时最新的1.11.7 uwsgi版本 使用本文发布时最新的2.0.15 nginx版本 使用本文发布时官网最新的1.13.7 # 服务器配置 # 纯净的CentOS7系统默认已经安装了Python2 ,但是我们的项目很多情况下都是Python3,所以就需要安装Python3,并保留python2.7 ## python3安装 ## **安装依赖** yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel gcc libffi-devel python-devel openssl-devel libcurl-dev libcurl-devel **获取tgz包** get https://www.python.org/ftp/python/3.6.4/Python-3.6.4.tgz **解压切换安装** tar -zxvf Python-3.6.4.tgz cd Python-3.6.4 ./configure --prefix=/usr/local ./configure --enable-optimizations make && make install **创建Python3的软链接** ln -s /usr/local/bin/python3 /usr/bin/python3 **创建Pip3的软链接** ln -s /usr/local/bin/pip3 /usr/bin/pip3 安装完后,输入命令 python3即可看到安装版本,若报错,则安装过程出现问题,可重新执行。 # nginx安装 # 本地项目是用的宝塔面板直接装的nginx,添加站点并开放端口后,直接配置反向代理即可访问 单nginx安装步骤如下: 进入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,加入以下内容 server { listen 8996; #暴露给外部访问的端口 server_name localhost; charset utf-8; location / { include uwsgi_params; uwsgi_pass 127.0.0.1:8997; #外部访问8996就转发到内部8997 } location /static/ { alias /home/www/myproject/myapp/static/; #项目静态路径设置 } } (以上内容请保证在默认内容的大括号内) wq保存后进入/usr/local/nginx/sbin/目录 执行./nginx -t命令先检查配置文件是否有错,没有错就执行以下命令: ./nginx 终端没有任何提示就证明nginx启动成功,可以通过链接查看nginx是否启动成功: [http://192.168.1.111][http_192.168.1.111] (请将该ip替换成你的服务器ip) # django配置 # 一般服务器上我们会放很多站点,不同的项目对python包的支持也有所不同,所有virtualenv的使用,很方便,可以隔离项目之间的第三方包依赖 安装虚拟环境 pip3 install virtualenv 安装django uwsgi pip3 install django pip3 install uwsgi 项目部署,上传项目文件至服务器,加入服务器上的项目目录是/home/wwwroot/myproject 进入项目目录,生成环境 virtualenv venv 这样会在该项目下生成一个venv的文件夹,然后激活虚拟环境 source venv/bin/active 退出环境 deactivate 我们先不要退出环境,先安装改项目所有的依赖,默认我们会再本地开发的时候将所有依赖写入requirements.txt文件 pip3 install -r requirements.txt 测试项目是否正常运行 在启动开发服务器之前,必须采用查看安全组是否已经开放其端口,并且查看防火墙是不是已经开放这个端口 python3 manage.py runserver 0.0.0.0:8081 这样我们访问 http://IP:8081即可看到项目 可能会出现的错误有 端口被占用 解决办法: netstat -nlp 查看端口情况,然后选择一个未被占用的端口,并在防火墙或者安全组里放开。不要设置小于1024的端口 # uwsgi安装 # 前面已经安装好了uwsgi **快速测试** uwsgi --http :8081 --home /home/wwwroot/myproject/venv --chdir /home/wwwroot/myproject -w myproject.wsgi 如果不报错 即正常 **创建配置文件** 我们不可能每次启动都敲一遍命令,所以我们需要写一个配置文件将项目的相关配置固定下来,uwsgi可以有xml 和ini两种配置文件,我们这里选择ini文件,比较方便 vi /home/wwwroot/myproject/config.ini 创建文件,并写入一下内容,中文注释内容需要删掉 #config.ini file [uwsgi] //必须要有,不然会报找不到 section uwsgi 的错 chdir = /home/wwwroot/myproject //项目根目录 wsgi-file = /home/wwwroot/myproject /wsgi.py //wsgi.py文件,该文件一般自动生成 home = /home/wwwroot/myproject /venv //之前创建的项目的虚拟环境地质 virtualenv = /home/wwwroot/myproject /venv //之前创建的项目的虚拟环境地质 static-map=/static=/home/wwwroot/myproject /static //项目的静态目录,如果使用 django-admin,此项必填,不然样式引入不了 module = myproject .wsgi:application master = true processes = 3 http = 0.0.0.0:8001 //项目访问地址,如果直接nginx配置,可以用socket = 127.0.0.1:8001,需要直接访问可改为http vacuum = true enable-threads = true 配置好之后,可以启动项目 uwsgi --ini config.ini 如果项目可以访问,及正确,一般出错是路径及虚拟环境问题。 # 开机启动 # 这块很重要,我们不能每次重启服务器后手动来开启项目,很麻烦,我们可以给uwsgi创建一个系统单元,让其自动管理我们的uwsgi服务 vi /etc/systemd/system/uwsgi.service 填入 [Unit] Description=uWSGI Emperor After=syslog.target [Service] ExecStart=/usr/local/bin/uwsgi --ini /home/wwwroot/myproject/config.ini Restart=always KillSignal=SIGQUIT Type=notify StandardError=syslog NotifyAccess=all [Install] WantedBy=multi-user.target 开启服务 systemctl enable uwsgi systemctl start uwsgi 查看状态 systemctl status uwsgi 至此,一个django项目的部署就完成了! > **参考文章** > [https://www.cnblogs.com/sumoning/p/7147755.html][https_www.cnblogs.com_sumoning_p_7147755.html] > [https://www.yuwenlaoshi.com/vps/nginx/201807043635.html][https_www.yuwenlaoshi.com_vps_nginx_201807043635.html] > [https://www.cnblogs.com/levelksk/p/7921066.html][https_www.cnblogs.com_levelksk_p_7921066.html] [http_192.168.1.111]: http://192.168.1.111 [https_www.cnblogs.com_sumoning_p_7147755.html]: https://www.cnblogs.com/sumoning/p/7147755.html [https_www.yuwenlaoshi.com_vps_nginx_201807043635.html]: https://www.yuwenlaoshi.com/vps/nginx/201807043635.html [https_www.cnblogs.com_levelksk_p_7921066.html]: https://www.cnblogs.com/levelksk/p/7921066.html
还没有评论,来说两句吧...