项目开发完成后可以部署到阿里云,华为云,腾讯云等服务器,
以腾讯云为例
本地部署
以下是ubuntu上的部署详细步骤:
1.布署前需要关闭调试、允许任何机器访问,打开settings.py文件
DEBUG = False
ALLOW_HOSTS=['*',]
2.安装uwsgi
pip install uwsgi
3.配置uwsgi,在项目目录下创建uwsgi.ini文件,配置如下:
[uwsgi]
# Django-related settings
#python3 manage.py runserver
#http = 127.0.0.1:8000
socket = 127.0.0.1:8000
#项目路径
chdir = /home/hu/桌面/1807project/MyBlog
#wsgi文件
module = MyBlog.wsgi
#主进程
master = true
#指定工作进程
processes = 4
#每个工作进程2个线程
threads = 2
#指后台启动 日志输出的地方
daemonize = uwsgi.log
#保存主进程进程号
pidfile = uwsgi.pid
#虚拟环境路径
virtualenv = /home/hu/.virtualenvs/1807_blog
4.启动uwsgi服务器
uwsgi --ini uwsgi.ini
5.不确定是否启动成功,搜进程
ps -aux|grep uwsgi
同时会在项目目录下生成uwsgi.log日志文件
uwsgi.pid 中保存主进程的pid
6.进入应用下urls.py配置
url(r'^$', views.index)
7.只要改动代码就需重启uwsgi
首先杀进程
killall -9 uwsgi
查看是否杀掉
ps -aux|grep uwsgi
再次启动
uwsgi --ini uwsgi.ini
暂缺css样式,此时用的服务器不再是django提供的服务器,用的是uwsgi服务器,django同时不再提供静态资源,此时需用nginx服务器
8.安装nginx
sudo apt install nginx
9.进入/etc/nginx/配置nginx.conf
sudo vi nginx.conf
写到http括号下,保存并退出
server {
listen 80;
server_name 127.0.0.1;
#动态请求
location / {
include uwsgi_params;
uwsgi_pass 127.0.0.1:8000;
}
#静态
location /static {
alias /home/hu/桌面/MyBlog/static ;
}
}
10.进程杀掉
killall -9 nginx
查看是否杀掉进程
ps -aux|grep nginx
指定进程号杀掉
sudo kill -9 进程号
11.启动nginx
/etc/init.d/nginx start
切记:配置uwsgi.ini中把http改为socket
重启uwsgi
12.配置settings.py(收集静态资源)
STATIC_ROOT = os.path.join(BASE_DIR, 'static/')
注意:
STATIC_URL = '/static/'
# STATICFILES_DIRS = [
# os.path.join(BASE_DIR, 'static')
# ]
收集所有静态资源
执行
python3 manage.py collectstatic
修改nginx配置,开启静态请求
杀nginx进程,重启nginx
pycharm同步杀uwsgi进程,重启nginx
127.0.0.1刷新 静态资源出现(nginx给的静态资源)
服务器部署
打开腾讯云,点击右上角控制台,登录,点击云产品--云服务器,z找到你购买的服务器(我是重庆地区)
修改密码
选中ID/实例名,重置密码,选中同意重启,重启的是远程服务端
远程登录服务器
1.刷新
sudo apt update
2.升级
sudo apt upgrade
3.选中ok,然后一直Enter
4.本地有的配置远程服务端也得有
<1>安装pip
sudo apt install python3-pip
<2>安装虚拟环境
sudo pip3 install virtualenv
<3>若出现以下报错
分析原因:
locale是用来设置软件运行的语言环境,所以语言环境设置有问题
重新设置语言环境,最简单的解决办法:
第一条
echo "export LC_ALL=en_US.UTF-8"
第二条
echo "export LC_ALL=en_US.UTF-8"
第三条
exit
重新登录服务器,如果还报错
export LC_ALL=C
<4>安装扩展包
sudo pip3 install virtualenvwrapper
<5>配置虚拟环境
进入
vi .bashrc
配置
export WORKON_HOME=$HOME/.virtualenvs
export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3
source /usr/local/bin/virtualenvwrapper.sh
生效
source .bashrc
<5>创建虚拟环境
mkvirtualenv 环境名
<6>安装数据库
退出环境
deactivate
安装数据库
sudo apt-get install mysql-server mysql-client
重新打开一个终端
导出本地数据库
mysqldump -uroot -p 1807_blog_db > /home/hu/桌面/blog.sql
导出本地依赖第三方
进入虚拟环境
pip freeze > /home/hu/桌面/requirements.txt
<7>想任何办法把数据库和依赖文件还有源码 上传到服务器 git ftp scp
以下以scp为例
放到/home/ubuntu/目录下
数据库
scp -r blog.sql [email protected]
第三方依赖
scp -r requirements.txt [email protected]
项目源码压缩
tar -zcvf MyBlog MyBlog.tar.gz
上传到服务器
scp -r MyBLog.zip [email protected]
解压缩
unzip MyBlog.zip
进入虚拟环境
workon 环境名
装依赖包
pip install -r requirements.txt
安装nginx
sudo apt-get install nginx
安装uwsgi
pip install uwsgi
进入项目,配置uwsgi
查看uwsgi是否启动,若启动杀进程,启动uwsgi
查看nginx配置文件
cd/etc/nginx/
vi nginx.conf
写到http括号下,保存并退出
server {
listen 80;
server_name 94.191.34.142;
#动态请求
location / {
include uwsgi_params;
uwsgi_pass 127.0.0.1:8000;
}
#静态
location /static {
alias /home/ubuntu/MyBlog/static ;
}
}
查看nginx日志
cd /etc/nginx/var/log/ngix/
查看uwsgi日志
cd /home/ubuntu/MyBlog/
杀掉nginx进程,再次启动
去浏览器访问公网IP