云服务: 阿里云、腾讯云、华为云、
系统:ubuntu18.04
Python: 3.7+
Http服务器: Nginx
总结过程:
1.购买云服务器 (镜像选择推荐使用 ubuntu18.04)
2.在云服务器中先测试项目(安装解决依赖和数据库等环境问题)
3.在服务器中安装uwsgi和nginx
4.配置uwsgi和nginx
购买阿里云服务器
链接服务器部署项目
- 安装python及项目所需依赖
pip3 install django==2.2.*
pip3 install mysqlclient # 如果未安装mysql可能会出现错误,可以先安装mysql
- 安装python及项目所需依赖
安装mysql数据库及配置数据
apt-get install mysql-server # 安装mysql服务
apt-get install libmysqlclient-dev # mysql客户端
使用navicat等工具进行远程连接mysql时的注意事项
- mysql默认的root用户只能本地连接,因此可以创建一个不限来源地的用户
- mysql服务器的配置文件中,默认只能本地连接mysql,因此可以修改配置文件 注释bind-address
- 检测阿里云等云服务器是否开启了 3306的端口,否则不能连接
关于wsgi和uwsg及nginx的区别和关系
wsgi:
让任意一个服务器都能搭配任意一个web框架,需要遵守wsgi的通用网关接口,就是一个协议
uwsgi:
uwsgi就是实现了wsgi的web服务器,可以接受客户端的请求,并转发响应的程序。
使用uwsgi+django就可以实现一个基本的网站功能,为什么还需要nginx
nginx:
nginx是一个专业的HTTP服务器,可以作为代理服务器使用。
搭建uwsgi启动项目
安装uwsgi
pip3 install uwsgi --upgrade
安装完成后配置uwsgi.ini文件
创建uwsgi.ini文件
创建script目录,存放配置
编辑uwsgi.ini文件内容如下: 目录参考个人目录进行修改
# uwsig使用配置文件启动
[uwsgi]
# 项目目录
chdir=/var/www/bookshop
# 指定项目的application
module=bookshop.wsgi:application
# 指定sock的文件路径
socket=/var/www//bookshop/script/uwsgi.sock
# 进程个数
workers=5
pidfile=/var/www/bookshop/script/uwsgi.pid
# 指定IP端口
http=0.0.0.0:8000
# 指定静态文件
static-map=/static=/var/www/bookshop/static/
# 启动uwsgi的用户名和用户组
uid=www-data
gid=www-data
# 启用主进程
master=true
# 自动移除unix Socket和pid文件当服务停止的时候
vacuum=true
# 序列化接受的内容,如果可能的话
thunder-lock=true
# 启用线程
enable-threads=true
# 设置自中断时间
harakiri=30
# 设置缓冲
post-buffering=4096
# 设置日志目录
daemonize=/var/www/bookshop/script/uwsgi.log
# 权限
chmod-socket = 666
chown-socket = www-data
安装nginx并进行测试
apt-get install nginx
默认会启动80端口,可以在浏览器访问ip地址进行测试
创建项目的配置文件,或者直接修改原nginx配置文件都可以
vim /etc/nginx/sites-available/webtest.conf
```shell server { listen 80; server_name django-web-bookshop; charset utf-8;
client_max_body_size 75M;
location / {
uwsgi_pass unix:///var/www/bookshop/script/uwsgi.sock;
include /etc/nginx/uwsgi_params;
}
location /media {
alias /path/to/project/media;
}
location /static {
alias /var/www/bookshop/static/;
}
} ```
7.创建完配置文件后创建软连接
sudo ln -s /etc/nginx/sites-available/webtest.conf /etc/nginx/sites-enabled/webtest.conf
tips:如果在浏览器访问新配置未生效时,可以删除默认生效配置
rm /etc/nginx/sites-enabled/default
拷贝项目到/var/www这个目录
cp -r /root/bookshop/bookshop /var/www/
启动uwsgi服务
uwsgi --ini uwsgi
启动nginx,重新加载配置文件
nginx -s reload