Ubuntu18下nginx+uwsgi+django项目部署

1 安装python环境和所需库

1 检查python环境

图片1.png

2 检查pip是否可用

不可用,使用命令apt-get install python-pip进行安装,出现安装不了

图片2.png

问题是需要更新系统镜像源

备份系统镜像源文件cp /etc/apt/sources.list /etc/apt/sources.list.backup

打开并修改vi /etc/apt/sources.list

添加以下内容:

deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial main restricted

deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-updates main restricted

deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial universe

deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-updates universe

deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial multiverse

deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-updates multiverse

deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-backports main restricted univer

deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-security main restricted

deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-security universe

deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-security multiverse

更新系统镜像源apt-get uptate,重新安装pip成功,但使用Pip出现问题

图片3.png

解决方法,系统镜像源添加以下内容:

deb http://cn.archive.ubuntu.com/ubuntu bionic main multiverse restricted universe

deb http://cn.archive.ubuntu.com/ubuntu bionic-updates main multiverse restricted universe

deb http://cn.archive.ubuntu.com/ubuntu bionic-security main multiverse restricted universe

deb http://cn.archive.ubuntu.com/ubuntu bionic-proposed main multiverse restricted univers

再次更新系统镜像源,卸载pip , apt-get remove python-pip,再重新安装apt-get install python-pip

3 安装项目所需的python 库

python3 -m pip install -r requirements_blog.txt

图片4.png

2 安装数据库并迁移数据

1安装配置MySQL

安装命令:

sudo apt-get install mysql-server //服务端

sudo apt-get install mysql-client //客户端

sudo apt-get install libmysqlclient-dev //程序编译时链接的库

安装完成之后可以使用如下命令来检查是否安装成功:sudo netstat -tap | grep mysql

图片5.png

安装成功登录:mysql -u root -p ,输入初始密码(直接回车)

更改mysql密码如下:

use mysql;

// 下一行,密码改为了yourpassword,可以设置成其他的

update mysql.user set authentication_string=password('yourpassword') where user='root' and Host ='localhost';

update user set plugin="mysql_native_password";

flush privileges;

quit;

设置允许远程登录:

首先编辑文件/etc/mysql/mysql.conf.d/mysqld.cnf:

sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf

注释掉bind-address = 127.0.0.1:

保存退出,然后进入mysql服务,执行授权命令:

   grant all on *.* to root@'%' identified by '你的密码' with grant option;

   flush privileges;

重启mysql服务,进行远程连接

service mysql restart

2 迁移数据库

1 导出(转储sql文件)项目所需数据库.sql文件到windows本地, 在服务器上建一个同名数据库(注意字符集和排序与原来一致)

2 用可视化工具导入sql(运行sql文件)到部署服务器(如Ubuntu),或上传sql 文件到服务器,并执行sql脚本【 Mysql 的 bin 目录】 \mysql – u 用户名 – p 密码 – D 数据库 < 【 sql 脚本文件路径全名】,示例:mysql -u root -p123456 -D djangoblog < /root/djangoblog.sql

3 安装项目其他依赖服务(例如redis或mongodb)

4 Django开发模式调试

把项目传到指定路径并解压(一般不要放在root下),开启django调试模式,无异常

图片6.png

5 安装并配置nginx服务

1 安装nginx 依赖包

出现Unable to acquire the dpkg frontend lock问题,解决方案重启系统

sudo systemctl --force --force reboot

再继续安装

apt-get install gcc

apt-get install libpcre3 libpcre3-dev

apt-get install zlib1g zlib1g-dev

sudo apt-get install openssl

sudo apt-get install libssl-dev

2 下载并解压nginx

cd /usr/local

mkdir nginx

cd nginx

wget http://nginx.org/download/nginx-1.13.7.tar.gz

tar -xvf nginx-1.13.7.tar.gz

3 编译并安装

进入nginx目录

/usr/local/nginx/nginx-1.13.7

执行命令

./configure

执行make命令

make

执行make install命令

make install

4 启动nginx,进入浏览器测试

进入nginx启动目录

cd /usr/local/nginx/sbin

启动nginx

./nginx

输入服务器IP测试

图片7.png

5 修改 nginx 配置文件

1 把nginx 安装目录下的 nginx.conf 文件 copy 到项目目录下,如下

cp /usr/local/nginx/conf/nginx.conf /home/DjangoBlog/blog_nginx.conf

2 进入blog_nginx.conf文件 ,修改如下内容:

|

server {

    listen       80;  

    server_name  localhost;

    #charset koi8-r;

    #access_log  logs/host.access.log  main;

定义nginx 访问和错误的路径

    access_log /home/DjangoBlog/nginx_access.log;      

    error_log /home/DjangoBlog/nginx_error.log;

    location /static {

    # 定义静态文件的系统绝对路径(跟系统静态文件路径一致)

  alias /home/DjangoBlog/collectedstatic; 

    }

    location / {

    # 定义uwsgi_params 和与uwsgi 通信的本地端口

    include     /usr/local/nginx/conf/uwsgi_params;

    uwsgi_pass  127.0.0.1:9090;

    }

    #error_page  404              /404.html;

    # redirect server error pages to the static page /50x.html

    #

    error_page   500 502 503 504  /50x.html;

    location = /50x.html {

        root   html;

    }

|

将nginx 安装目录下的mime.types 文件copy 到项目根目录下

cp /usr/local/nginx/conf/mime.types /root/DjangoBlog

6 按指定文件启动nginx

/usr/local/nginx/sbin/nginx -c /home/DjangoBlog/blog_nginx.conf

/usr/local/nginx/sbin/nginx -c /home/DjangoBlog/blog_nginx.conf -s reload

备注: 后续操作服务命令

执行nginx /usr/local/nginx/sbin/nginx

重载nginx /usr/local/nginx/sbin/nginx -s reload

终止nginx /usr/local/nginx/sbin/nginx -s stop

6 安装并配置uwsgi服务

1 安装uwsgi

python3 -m pip install uwsgi

2 配置 uwsgi 文件

在项目根目录下创建uwsgi.ini,并进入添加如下内容


[uwsgi]

socket = 127.0.1:9090       # 与nginx 配置文件的uwsgi_pass 一致

chdir=/home/DjangoBlog     # 项目绝对路径

module= DjangoBlog.wsgi     #  [wsgi.py](http://wsgi.py/)在项目中的相对路径

master = true         # 开启主进程

processes=2   # 配置子进程数

threads=2   # 配置线程数

max-requests=2000   

chmod-socket=664

vacuum=true
# daemonize=/home/DjangoBlog/uwsgi.log# uwsgi日志的存储路径,不需要重定向输出应注释掉

3 启动uwsgi

Uwsgj --ini 配置文件绝对路径,如:

uwsgi --ini /home/DjangoBlog/uwsgi.ini

图片8.png

你可能感兴趣的:(Ubuntu18下nginx+uwsgi+django项目部署)