使用uwsgi和nginx在服务器部署django项目
详细流程
创建虚拟环境 为了项目环境的最小化,为了防止多个项目环境的冲突
**sudo apt-get install python3-venv #安装python3-venv
python3 -m venv 环境名字 #创建虚拟环境
source 环境路径/环境名/bin/activate #激活虚拟环境
环境下安装 项目所需要的包
下载uwsgi:
sudo apt-get install uwsgi
下载nginx:
sudo apt-get install nginx**
环境下运行django项目
python manage.py runserver
解决 musql-client 错误信息 运行以下命令解决
sudo apt-get install mysql-server mysql-client
mysql -V 查看mysql是否安装成功
sudo apt-get install libmysqlclient-dev python3-dev
pip install mysql-client
远程连接阿里云服务器mysql数据库
添加阿里云安全规则的mysql3306端口
1.vi /etc/mysql/mysql.conf.d/mysqld.cnf #打开更改musql配置文件
注释掉 address = 127.0.0.1 这一行
2.mysql 用户表添加用户并将host设置为所有ip都能访问
登陆:mysql -u root localhost -p
GRANT ALL PRIVILEGES ON . TO 'root'@'%' IDENTIFIED BY 'youpassword' WITH GRANT OPTION;
FLUSH PRIVILEGES #刷新权限
exit :退出
netstat -an|grep 3306 # 查看3306端口是否打开
重启服务
service mysql stop
service mysql start
配置django 项目:
django --settings.py 修改数据库连接 ‘host’:云端公网ip
settings.py最后 添加 STATIC_ROOT = os.path.join(BASE_DIR, "static/")
在项目目录下执行 python manage.py collectstatic
正常运行进行下一步
项目目录下创建uwsgi.ini:
touch uwsgi.ini
[uwsgi]
#socket = 127.0.0.1:3031
socket=mysite.sock
chdir = /home/一点资讯
wsgi-file = 一点资讯/wsgi.py
processes = 4
threads = 2
stats = 127.0.0.1:9191
chmod-socket=666
plugin = python #这个和下面应该是处理中文格式的
pythonpath = /home/wei/桌面/一点资讯/venv/lib/python3.6/site-packages
启动uwsgi: uwsgi --ini uwsgi.ini #建立mysite.sock
后台启动: uwsgi -d --ini uwsgi.ini
停止: uwsgi --stop uwsgi.pid
uwsgi处理进程:
查进程:ps aux | grep 进程
杀进程: killall -9 进程
最后配置 nginx:
cd 到nginx的配置文件
server {
listen 80;
server_name 127.0.0.1;
location / {
include uwsgi_params;
# proxy_pass http://127.0.0.1:8080;
# uwsgi_pass 127.0.0.1:3031;
uwsgi_pass unix:///home/gavin/Desktop/Hello/mysite.sock;
}
location /static {
alias /home/gavinsun/sites/django_blog/static;
}
}
配置完成 同时启动 nginx,uwsgi 完成项目部署
sudo nginx -s reload
uwsgi --ini uwsgi.ini