概述
最近在阿里云服务器上成功部署了两三个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
最后
以上就是感性曲奇为你收集整理的使用Nginx+uwsgi在云服务器上部署Django项目(Ubuntu、阿里云)的全部内容,希望文章能够帮你解决使用Nginx+uwsgi在云服务器上部署Django项目(Ubuntu、阿里云)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复