django生产环境配置-ubuntu

博客主要介绍了软件安装及相关配置。包括uwsgi、mysql、nginx的安装,mysql数据库的导入、开启、关闭、修改密码等操作,uwsgi的配置与启动,nginx的配置及相关命令,https的ssl证书申请与配置,还提及修改apt源、DNS等其他内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

安装相关软件

  • 安装uwsgi
    pip install uwsgi
    
  • 安装mysql
    sudo apt-get install mysql-client mysql-server
    
    如果出现报错,更新下apt-get以后在安装
    通过sudo netstat -tap | grep mysql来查看是否安装成功
  • 安装nginx
    sudo apt-get install nginx​
    

数据库相关(mysql)

  • 导入数据库
    把在本地生成的数据库内容先通过navicat导出,然后再通过下面命令导入到数据库中去。
    (但是,一般我不用,我都是直接在里面新建,完了利用migrations和migrate建表)
    source ~
  • 开启数据库
    service mysql start
  • 查看数据库状态
    service mysql status
  • 关闭数据库
    service mysql stop
  • 重启服务器
    service mysql restart
  • 关于 mysql安装后,修改密码问题
    • 先进入sudo cat /etc/mysql/debian.cnf查看密码,用来登录mysql
    • 再输入以下指令mysql -u debian-sys-maint -p密码为上一步复制的
    • 修改密码
      use mysql; 
      update mysql.user set authentication_string=password('root') where user='root' and Host ='localhost'; //root位置为要修改的密码
      update user set plugin="mysql_native_password"; 
      quit;
      
    • 重启数据库 sudo service mysql restart
  • 如果要远程访问mysql,比如使用navicat连接的话,需要将root的访问权限改成%。或者新建一个用户。
    • 修改root权限 update user set host = '%' where user = 'root';
    • 添加一个新的用户 grant all privileges on *.* to 'root'@'%' identified by 'xxxxxx';
    • 打开mysql配置文件vi /etc/mysql/mysql.conf.d/mysqld.cnf 将bind-address = 127.0.0.1注销​

uwsgi相关

  • uwsgi配置说明
    • chdirc WSGI : 应用目录
    • module WSGI : 应用的模块名字
    • processes uWSGI : 进程数
    • socket : 套接字路径地址
    • max-requests : 最大并发请求数
    • vacuum : 清理环境配置​​​​​
  • 命令行方式启动(一般不使用)
    uwsgi --chdir 位置--socket :80 --max-requests 5000 --processes 4 --module 应用名.wsgi
  • 配置文件启动
    • 创建配置文件uwsgi-demo.ini
    [uwsgi]
    chdir = /xxx/xx
    http-socket = :80
    max-​​​​requests = 5000
    processes = 4
    module = xxx.wsgi​
    
    • 创建两个文件夹
      • mkdir log
      • mkdir pid​
    • 启动
      uwsgi --ini uwsgi-demo.ini
    • 举例
      [uwsgi]
      # 项目的路径
      chdir =/home/ubuntu/project/sign
      # Django的wsgi文件
      module =sign.wsgi
      http-socket =:8000
      master = True
      processes = 4
      threads = 1
      vacuum = true
      ​​​​​​​​#backend run uwsgi
      daemonize = %(chdir)/log/uwsgi-8000.log
      log-maxsize = 1024*1024*1024
      pidfile = %(chdir)/pid/uwsgi-8000.pid​​​​​​
      
    • 相关命令
      • 停止服务 uwsgi --stop pid/uwsgi-8000.pid
      • 查看端口服务 lsof -i:端口号
      • 杀死进程 kill -9 id号
    • 注意事项
      • 修改setting.py中的allowdhost改为["*"]

nginx相关

  • 配置
    • /etc/nginx/ (服务器的配置文件​)
      • 说明
        里面很多的文件,我一般直接对nginx.conf 进行修改,不过据说规范化的不是这样!
      • 关键配置模块
        events配置域
      • 网络连接相关配置
        server 配置域
      • 相关服务节点配置
        location配置域
      • 资源路由配置
        http配置域
      • nginx作为网页服务器时的配置
        upstream配置域
    • 举例
      • 在http{}中创建一个server节点
      	http{
      
      		upstream uwsgi {
      			server 127.0.0.1:8000;
      		​​}
      		​​​
      		server {
      			listen 80; # 监听的端口号
      			server_name .yuedongschool.xyz; # 域名
      			charset utf-8;​​
      			access_log /var/log/nginx/nginx-uwsgi.log​​;
      			# 最大的文件上传尺寸
      			client_max_body_size 75M; 
      			location​ / {
      				proxy_pass http://uwsgi;
      			​​​}
      			 #静态文件配置:将静态文件全部放入static文件加下,访问/static文件内容时等同于访问下述文件夹的内容,alias代表绝对路径
      		    location /static {
      		        alias /web/django/JansXin/static;
      		    }
      		​​}
      	​​​}​​
      
  • 收集静态文件,完成静态文件寻址配置
    • 在setting.py中指定静态文件目录
      STATIC_ROOT = ​os.path.join(BASE_DIR,'static/')
      
    • 收集 python manage.py collectstatic
  • 相关命令
    • sudo nginx
    • sudo nginx -s stop
    • sudo nginx -s quit
    • sudo nginx -s reload
    • sudo nginx -s reopen
    • 查看进程 ps -aux | grep nginx​​​​​

https相关

  • 申请ssl证书(选择文件验证)
  • 配置
    • 在/etc/nginx下创建ssl

    • 修改server中的listen 443 ssl;

    • 指定ssl的路径

    • 在server中添加

      ssl_certificate /etc/nginx/ssl/1_yuedongschool.xyz_bundle.crt;
      ssl_certificate_key /etc/nginx/ssl/2_yuedongschool.xyz.key;
      ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
      
    • ​​​​​​​​修改配置文件

      • 添加一个server
        server {
        listen 80;
        server_name .yuedongschool.xyz;
        return 301 https://yuedongschool.xyz$request_uri;​​​​
        ​​}​​​​
        
    • demo

      server {
              listen 443 ssl;
              server_name .yuedonschool.xyz;
              charset utf-8;
              access_log /var/log/nginx/nginx-uwsgi.log;
              ssl_certificate /etc/nginx/ssl/1_yuedongschool.xyz_bundle.crt;
              ssl_certificate_key    /etc/nginx/ssl/2_yuedongschool.xyz.key;
              ssl_protocols      TLSv1 TLSv1.1 TLSv1.2;
              location / {
                      proxy_pass http://uwsgi;
              }
              location /static {
                      alias /home/ubuntu/project/sign/static;
              }
      }
      

其他

  • 修改apt的源
    • 查看源
      sudo vim /etc/apt/sources.list
    • 重命名原来的源作为备份
      sudo mv /etc/apt/sources.list sources.list_backup
    • 新建一个sources.list文件
      sudo vim /etc/apt/sources.list
    	#deb http://cn.archive.ubuntu.com/ubuntu/ xenial main restricted
    #deb http://cn.archive.ubuntu.com/ubuntu/ xenial-updates main restricted
    #deb http://cn.archive.ubuntu.com/ubuntu/ xenial universe
    #deb http://cn.archive.ubuntu.com/ubuntu/ xenial-updates universe
    #deb http://cn.archive.ubuntu.com/ubuntu/ xenial multiverse
    #deb http://cn.archive.ubuntu.com/ubuntu/ xenial-updates multiverse
    #deb http://cn.archive.ubuntu.com/ubuntu/ xenial-backports main restricted universe multiverse
    #deb http://security.ubuntu.com/ubuntu xenial-security main restricted
    #deb http://security.ubuntu.com/ubuntu xenial-security universe
    #deb http://security.ubuntu.com/ubuntu xenial-security multiverse
    deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
    deb http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
    deb http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
    deb http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
    deb http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
    deb-src http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
    deb-src http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
    deb-src http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
    deb-src http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
    deb-src http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
    
    • 更新源
      sudo apt-get update
      sudo apt-get upgrade
      
    • 修改DNS
      编辑该文件
      在这里插入图片描述
  • 安装mysql
    sudo apt-get install mysql-server libmysqlclient-dev libmysqld-dev
  • 安装mysql-python报错
    • 可以用mysql_connector_python包替换
    • 查看python2.7的版本是否为2.7.15
  • 同步Python包
    • pip freeze > requirements.txt
    • pip install -r requirements.txt
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值