部署django项目到阿里云的通用流程–实测可用 2021.08
1. 服务器配置 >>配置安全组 入口的端口配置
点击添加安全组规则进行端口添加,只需要填端口范围和授权对象,比如80端口,端口范围写80/80,授权对象写0.0.0.0/0,表示所有IP地址都能访问。常用的几个端口号,SSH(22),HTTP(80),HTTPS(443)。
到此,云服务器的基本设置完成了。点击 实例页面的远程连接,输入6位密码,就可以远程登录。然后会让你输入Ubuntu的账户名和密码。输入成功后就可以远程登录ubuntu的终端,可以像在本地一样通过各种命令操作。
2. 更新服务器
sudo apt-get update
刚购买的ubuntu 16.04服务器自带指向的Python还是2.7版的,需要先通过如下命令升级Python以及更新pip版本。
sudo apt-get install python3.5 # 安装python
sudo apt-get install python3-pip # 安装python 3-pip
sudo rm /usr/bin/python # 删除python 2.7版本
sudo ln -s /usr/bin/python3.6 /usr/bin/python # 将python链接到最新3.6版
pip3 install upgrade -- pip # 升级pip
3. 配置虚拟环境
sudo pip install virtualenv virtualenvwrapper
在安装virtualenvwrapper的时候如果安装失败,则下载包文件进行安装,下载地址为https://pypi.doubanio.com/simple/virtualenvwrapper
在终端输入命令 vim ~/.bashrc
在打开的文件末尾插入如下代码
export WORKON_HOME=$HOME/.virtualenvs/
export PROJECT_HOME=$HOME/workspace/
export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3
source /usr/local/bin/virtualenvwrapper.sh
保存后在终端输入 source ~/.bashrc 使配置文件生效
4. 创建虚拟环境,指定创建python 3.5的虚拟环境
mkvirtualenv -p /usr/bin/python3.6 XX #XX是虚拟环境的名字,创建python3.6的虚拟环境
其他命令:
workon xx #进入虚拟环境XX
deactivate #退出虚拟环境
5. 向虚拟环境批量安装包
pip freeze > requirements.txt #导出环境包
pip install -r requirements.txt #批量安装包
6. 安装nginx
sudo apt-get update
sudo apt-get install nginx
- 安装完成后。用你电脑的浏览器访问你的服务器的公网ip地址,看看安装成功没有。
进入nginx启动目录下面,默认目录/usr/local/nginx/sbin
./nginx #启动nginx
配置nginx文件
在终端输入如下命令
vim /etc/nginx/sites-enabled/default
在打开的文档中加入如下代码
server {
listen 80;
server_name 108.108.108.108;
access_log /root/HelloWorld/web_grandoilcloud__access.log;
error_log /root/HelloWorld/web_grandoilcloud__error.log;
root /root/HelloWorld;
index index.html;
location / {
include uwsgi_params;
uwsgi_pass 127.0.0.1:8000;
}
location /static {
alias /root/HelloWorld/static;
}
location /media {
alias /root/HelloWorld/media;
}
}
注意:
把108.108.108.108替换为自己的公网ip
static 那里替换成你自己Django项目的static路径;
media 那里替换成你自己Django项目的media路径;
location后面是有空格的,必须要有!alias后面也是有空格的;
重启nginx服务
sudo service nginx restart
7. 安装uwsgi
pip install uwsgi
在项目的根目录下,即有manage.py的地方,新建一个uwsgi.ini文件和一个run.log文件
打开文件 vim uwsgi.ini
写入
#添加配置选择
[uwsgi]
#配置和nginx连接的socket连接
socket=127.0.0.1:8000
#配置项目路径,项目的所在目录
chdir=/root/HelloWorld
#配置wsgi接口模块文件路径
wsgi-file=HelloWorld/wsgi.py
#配置虚拟文件的路径
home=/root/Envs/web
#配置权限
chmod-socket = 666
#配置启动的进程数
processes=4
#配置每个进程的线程数
threads=2
#配置启动管理主进程
master=True
#配置存放主进程的进程号文件
pidfile=uwsgi.pid
#配置dump日志记录
daemonize=uwsgi.log
#配置热加载
py-autoreload=1
注意 :
nginx中的uwsgi_pass和uwsgi.ini的socket要保持一致
在uwsgi.ini的目录下启动 uwsgi --ini uwsgi.ini
版本迭代完成后执行
sudo systemctl restart nginx #重启nginx服务
sudo systemctl restart uwsgi #重启uwsgi服务