使用Nginx+uwsgi在云服务器上部署Django项目(Ubuntu、阿里云)

最近在阿里云服务器上成功部署了两三个Django项目,当中经历了很多熬夜也不能解决问题的夜晚,也曾不止一次把问题发到各种IT学习群也找不到人来帮忙但我还是把事情做好了。下面我来总结一遍。坐好,请看。

目录

准备资源:

部署流程:

1、开始前确认:

2、将本地项目通过Git推到码云仓库

3、使用xshell连接阿里云服务器,如果连上了的话,如下图:

 4、通过xshell配置项目需要的运行环境

   5、在/srv文件下新建文件夹,用来存放项目文件:mkdir 文件夹名

 6、初始化新建的文件夹为git仓库,否则无法把码云的项目拉进来

7、把码云仓库的项目拉到新建的文件夹

8、进入虚拟环境中,然后进入到项目所在目录,收集静态文件

9、在项目虚拟环境安装依赖包:

10、 在`mysql`数据库中,创建相应的数据库;

11、远程链接本地项目的MySQL;

12、迁移文件,映射到数据库中,创建相应的表:

13、安装并配置uwsgi

14、安装并配置nginx

15、进入项目文件夹才能运行:uwsgi --ini uwsgi配置文件.ini 

补充一下部署命令:


准备资源:

  • 阿里云ECS:Ubuntu18
  • PyCharm:Python项目的IDE
  • Xshell:连接阿里云服务器的命令行工具
  • FileZilla Client:可以上传项目,但我主要拿来查看文件路径
  • 码云:通过Git把项目上传到码云仓库,再用云服务器上的Git去码云仓库拉取项目
  • 笔记本:Windows 10系统,提前安装好Git

部署流程:

1、开始前确认:

  • 本地项目在调试模式下跑起来完全没有问题;
  • 在setting文件里设置`ALLOW_HOST`为你的域名,以及ip地址;
  • 在项目文件夹下新建一个空文件目录,专门用来收集静态文件的,如下:

  • 把debug模式关了;
  • 进入项目当前目录,在当前项目的虚拟环境下用`pip freeze > requirements.txt`,即可将当前环境的包导出到`requirements.txt`文件中,方便在部署的时候安装:

2、将本地项目通过Git推到码云仓库

  • 在项目里摁住shift+右键,进入Git;
  • 在码云上新建一个私人/公共仓库,复制仓库链接,如下图:

  • 把项目推到码云,项目代码如下:
 git init

 git remote add origin xxx.git   #码云仓库的链接

 git add .

 git commit -m 'first commit'

 git pull origin master --allow-unrelated-histories

 git push origin master

ps:如果不熟悉Git,请参考:Git命令:一回生,二回熟

3、使用xshell连接阿里云服务器,如果连上了的话,如下图:

 4、通过xshell配置项目需要的运行环境

  • 1. 安装好项目用到的`Python`。

    * sudo apt install python

    * sudo apt install python-pip

    * pip install --upgrade pip

  • 2. 安装`virtualenv`以及`virutalenvwrapper`。并创建虚拟环境。

如果创建不了虚拟环境,请参考我的这篇文章:mkvirtualenv : command not found(Ubuntu)

 pip install virtualenv

 pip install virtualenvwrapper

 sudo apt install vim

    * vim ~/.bashrc 进入文件中,填入以下两行代码:

export WORKON_HOME=$HOME/.virtualenvs

source /usr/local/bin/virtualenvwrapper.sh

    *保存再使环境变量生效: source ~/.bashrc

  • 3. 安装`git`:
sudo apt install git
  • 4. 为了方便XShell或者CRT连接服务器,建议安装`OpenSSH`:
  sudo apt install openssh-server openssh-client

  service ssh restart
  • 5. 安装`MySQL`服务器和客户端:
sudo apt install mysql-server mysql-client

sudo apt-get install libmysqld-dev

   5、在/srv文件下新建文件夹,用来存放项目文件:mkdir 文件夹名

我个人部署博客的是:

 6、初始化新建的文件夹为git仓库,否则无法把码云的项目拉进来

git init
git remote add origin xxx.git
git add .

7、把码云仓库的项目拉到新建的文件夹

git push origin master

ps:提前准备好码云的账号密码,以及仓库的链接

8、进入虚拟环境中,然后进入到项目所在目录,收集静态文件

python manage.py collectstatic

9、在项目虚拟环境安装依赖包:

pip install -r requirements.txt

10、 在`mysql`数据库中,创建相应的数据库;

11、远程链接本地项目的MySQL;

请参考我的这篇文章:本地navicat for MySQL远程连接阿里云的mysql

12、迁移文件,映射到数据库中,创建相应的表:

python manage.py migrate

13、安装并配置uwsgi

uwsgi是一个应用服务器,非静态文件的网络请求就必须通过他完成,他也可以充当静态文件服务器,但不是他的强项。uwsgi是使用python编写的,因此通过`pip install uwsgi`就可以了。(uwsgi必须安装在系统级别的Python环境中,不要安装到虚拟环境中)。

那配置文件怎么写,请参考我的文章:uwsgi配置文件ini(结合两个成功案例分析)

14、安装并配置nginx

1. nginx是一个web服务器。用来加载静态文件和接收http请求的。通过命令`sudo apt install nginx`即可安装。

2. `nginx`常用命令:

    * 启动nginx:service nginx start

    * 关闭nginx:service nginx stop

    * 重启nginx:service nginx restart

3.配置文件:请参考我的这篇文章 Nginx配置文件.conf

写完配置文件后,为了测试配置文件是否设置成功,运行命令:`service nginx configtest`,如果不报错,说明成功。(需要在虚拟环境下测试?不需要)每次修改完了配置文件,都要记得运行`service nginx restart`。

15、进入项目文件夹才能运行:uwsgi --ini uwsgi配置文件.ini 

  这是项目就部署成功并且运行了,如果你遇到问题请留言,我们一起探讨。

 

补充一下部署命令:

Nginx配置文件所在目录: cd /etc/nginx/conf.d
 

重启Nginx服务器: sudo /etc/init.d/nginx restart

查看Nginx错误日记:cat /var/log/nginx/error.log


启动Nginx:uwsgi --ini  lezeqe_uwsgi.ini



激活虚拟环境:   workon 虚拟环境名


退出虚拟环境:deactivate

查看进程列表:  ps aux | grep uwsgi

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章