ubuntu18.04部署 django项目nginx + uwsgi

基础环境及版本:

        OS:ubuntu18.04

        DataBase: Mysql5.7

        Django: Django3.2 

        项目python版本:python3.6

        服务器:nginx + uwsgi

根据环境所需工具,制定计划:

        1、安装python3.6

        2、安装Django3.2

        3、安装Mysql5.7

        4、安装nginx

        5、安装uwsgi

        6、配置项目

        7、启动项目

目标明确,那么开始

1、安装python3.6

        腾讯云的ubuntu18.04默认已安装3.6.9

        

        所以直接下一步。

2、安装Django3.2

        使用以下命令:

sudo apt-get update
pip3 install django == 3.2

        验证是否安装成功:

python3
import django
django.get_version()

        输出3.2,安装成功

3、安装MySql5.7

        使用# apt-get install mysql-server安装的最新版本应该是8.0以上了,我要用5.7,所以要指定版本。

# apt-get install mysql-server-5.7
# apt-get install libmysqlclient-dev
# apt-get install mysql-client

        安装Django和mysql连接的驱动:

sudo apt-get install python-mysqldb  

4、安装nginx

sudo apt-get install nginx

安装完成后,访问一下公网地址看看有没有安装成功,出现欢迎界面就是安装成功。

5、安装uwsgi

pip3 install uwsgi

6、配置项目

             1)、通过scp将整个django项目目录上传到服务器/home/wwwroot/下                  

scp xcx root@150.192.*.112:/home/wwwroot/

             在上传之前需要,先创建wwwroot目录并设置755权限。

             2)、配置nginx

cd /etc/nginx/sites-availables
vim default

                找到default文件下的这段代码,如果没有就要添加上去:

server_name 111.*.*.124;   ##改成你的公网ip

        location / {
                # First attempt to serve request as file, then
                # as directory, then fall back to displaying a 404.
                #try_files $uri $uri/ =404;
                include uwsgi_params;
                uwsgi_pass 127.0.0.1:8000;   #和uwsgi中端口配置保持一致
        }

        location /static {
                alias /home/www/***/static;          #项目的static目录
        }
        location /media {
                alias /home/www/**;     
        }

                static 那里也要替换成你自己Django项目的static路径;

                media 同理换成你自己Django项目的media路径,这是媒体文件的文件夹;

                注意:location后面是有空格的,必须要有!alias后面也是有空格的;include上面那句话也是要注释掉的!

                修改完成后保存退出,然后重启nginx服务器

sudo service nginx restart

                后面踩一个坑,这边先记录一下。就是静态文件无法访问,浏览器检查源代码直接访问css文件,出现403错误!直接把static目录设置777权限还是不行,折腾了半天之后才发现是用户许可问题。

                修改nginx配置文件/etc/nginx/nginx.conf ,user www 改成user root 或者你的用户名

                

                3)、配置uwsgi


                在你的django项目的根目录下,也就是有manage.py文件的目录下,新建一个uwsgi.ini文件和一个run.log文件

                然后我们使用vim编辑器编辑uwsgi.ini文件,输入以下代码:

[uwsgi]
chdir = /home/wwwroot/xcx
wsgi-file = xcx/wsgi.py
module = xcx_back.wsgi:application
socket = 127.0.0.1:8000
master = true
pidfile = uwsgi.pid
daemonize = /home/wwwroot/xcx/run.log
disable-logging = true
~                       

                chdir 是你的django项目的根目录,替换成你自己的路径;

                moudule 是你的入口wsgi模块,替换成你自己的项目名称;

                socket 是通信端口设置,这个设置不用改,复制即可;

                master = true 表示以主进程模式运行,不用改,复制即可;

                daemonize 是你的日志文件目录,这个路径就是刚刚新建的run.log文件的路径;

                disable-logging = true 表示不记录正常信息,只记录错误信息,否则你的日志可能很快就爆满了!

                4)、配置mysql

                        设置数据库默认字符集为utf8

                                这个非常有必要,因为如果不统一字符集为utf8,当你往数据库表中插入中文字符时会报错,或者显示乱码,说多了都是泪,抹着泪趟着坑。

                        修改MySQL配置文件 mysql.cnf

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

在[mysql]下添加内容:

no-auto-rehash
default-character-set=utf8

修改/etc/mysql/mysql.conf.d/mysqld.cnf 文件,在[mysqld]的下边添加内容

character-set-server=utf8   

重启mysql服务:

service mysql restart

查看是否修改成功:

show variables like '%character%';

可以看到除character_set_filesystem外,其余全部修改为了utf8 。                                                                 

                        创建django项目数据库

                        mysql > create database xcx

                5)、修改settings.py文件

                        打开settings.py文件找到下面代码并修改:

DEBUG = False
ALLOWED_HOSTS = ['127.0.0.1','150.8.8.*']

                        注意其中的IP地址要替换成你自己公网的IP。

                        设置数据库:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'xcx',
        'USER': 'xcxuser',
        'PASSWORD': '********',
        'HOST': '127.0.0.1',
        'PORT': '3306',
    }
}

                        

                6)安装项目所用到的模块

pip3 install required.txt

                7)、创建Django项目数据表

python3 manage.py makemigrations
python3 manage.py migrate

                8)、创建管理后台超级用户

python3 manage.py createsuperuser admin

               9)、静态文件收集

                          在项目settings.py中加入以下代码:

STATIC_URL = '/static/'
STATICFILES_DIR = [
    os.path.join(BASE_DIR,'static'),
]
STATIC_ROOT = '/home/wwwroot/xcx/static/'

                         然后在django中进行静态文件收集,收集之后静态文件都归集到static目录下。

python3 manage.py collectstatic

7、启动项目

       启动uwsgi

       项目目录下:

 uwsgi --ini  uwsgi.ini

        启动nginx

sudo service nginx start

如果顺利的完成了上面的步骤,那么恭喜你!你可以直接去浏览器输入你的公网IP地址,就可以访问了!

注意:防火墙8000端口需要打开。

常用命令:

sudo service nginx start

sudo service nginx stop

sudo service nginx reload

uwsgi --ini uwsgi.ini

uwsgi --reload uwsgi.pid   (前提是uwsgi.ini中配置pidfile = uwsgi.pid)

sudo pkill -f nginx -9

ps aux | grep nginx

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值