首页 > 系统相关 >ubuntu22.04部署django+uwsgi+nginx上线站点

ubuntu22.04部署django+uwsgi+nginx上线站点

时间:2024-03-19 09:59:14浏览次数:23  
标签:log ## ubuntu22.04 sudo django nginx server uwsgi

系统默认是3.10的python版本,不支持pip,需要先安装pip

常用的命令

pip install somepackage -i https://pypi.doubanio.com/simple/ #pip安装使用豆瓣源比较快

sudo chown ubuntu:ubuntu /opt/wwwroot/mysite -R #可更改文件夹对应的用户,避免总是提示无权限被禁止

项目默认部署在/opt/wwwroot下

1,安装虚拟环境,正常来说在虚拟环境下安装不需要使用sudo,直接使用pip来安装即可

pip3 install virtualenv
cd /opt/ #切换到目录
virtualenv pyweb #建立虚拟目录及文件
source /opt/pyweb/bin/activate #激活虚拟环境
pip3 install django==4.2 #安装django
pip3 install uwsgi #安装uwsgi

 2,设置uwsgi并启动服务

在manage.py同级建立一个uwsgi.ini文件,配置内容如下:

[uwsgi]
#使用 Nginx 连接时使用,Django程序所在服务器地址
socket=127.0.0.1:8000
#项目目录
chdir=/opt/wwwroot/mysite
#项目中wsgi.py文件的目录,相对于项目目录,就是和settings.py同级目录的那个文件夹
wsgi-file=mysite/wsgi.py
#方便结束进程
pidfile=uwsgi.pid
# 进程数
processes=1
# 指定依赖的虚拟环境, 路径到虚拟环境的名字即可(可以命令查看 which python)
virtualenv=/opt/pyweb/
#uwsgi启动及相关日志
daemonize=uwsgi.log

 如何启动及结束进程

uwsgi --ini wusgi.ini #启动服务
uwsgi --stop wusgi.pid #结束服务
ps aux | grep uwsgi #查看进程
kill -INT 1234 #结束进程
kill -9 1234 #强制关闭

3,安装mariadb数据库

sudo apt-get install mariadb-server #安装数据库
service mysql status #查看是否运行
sudo service mysql restart #重启数据库
sudo systemctl enable mariadb #设置开机启动

 使用脚本设置,提高安全性

sudo mysql_secure_installation

登录数据库及相关常用命令

mysql -u root -p

推荐的方式就是创建一个管理员用户,可以访问所有的数据库:

GRANT ALL PRIVILEGES ON *.* TO 'administrator'@'%' IDENTIFIED BY 'very_strong_password';
FLUSH PRIVILEGES;#更新权限

 如果需要远程连接MariaDB,修改配置文件:/etc/mysql/mariadb.conf.d/50-server.cnf

 创建数据库:

create database vipdatabase default charset utf8 collate utf8_general_ci; #创建数据库
create user 'vipuser'@'%' identified by '123456';#创建用户
flush privileges; #刷新
grant all privileges on vipdatabase.* to vipuser@'%'; #授权访问数据库
flush privileges; #刷新
delete from user where Host='localhost' and User=""; #删除某用户

use mysql;#进入mysql

show tables;

desc user;

select Host,User,Password from user;

4,安装nginx

sudo apt-get install nginx -y

默认配置文件路径:/etc/nginx/nginx.conf

默认日志路径:/var/log/nginx/error.log

       /var/log/nginx/access.log

 常用命令:

systemctl start nginx#启动nginx
systemctl stop nginx#停止nginx
systemctl restart nginx#重启nginx
systemctl enable nginx#开机启动
sudo nginx -t   # 检查Nginx配置文件语法是否正确
sudo systemctl reload nginx   # 重新加载Nginx配置

 nginx配置文件内容如:

user www-data;
worker_processes auto;
pid /run/nginx.pid;
include /etc/nginx/modules-enabled/*.conf;

events {
        worker_connections 768;
        # multi_accept on;
}

http {

        ##
        # Basic Settings
        ##

        sendfile on;
        tcp_nopush on;
        types_hash_max_size 2048;
        # server_tokens off;

        # server_names_hash_bucket_size 64;
        # server_name_in_redirect off;

        include /etc/nginx/mime.types;
        default_type application/octet-stream;
        server {
                listen 80;
                server_name test.hahado.cn;
        location / {
                # 使用 uwsgi_pass 转发基于 uwsgi 协议的一个请求
                uwsgi_pass 127.0.0.1:8000; # 与 uwsgi 配置一样
                include /etc/nginx/uwsgi_params;
        }
        location /static {
                #这个就是真实的静态文件路径
                alias /opt/wwwroot/mysite/static/;
        }
    }

        ##
        # SSL Settings
        ##

        ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3; # Dropping SSLv3, ref: POODLE
        ssl_prefer_server_ciphers on;

        ##
        # Logging Settings
        ##

        access_log /var/log/nginx/access.log;
        error_log /var/log/nginx/error.log;

        ##
        # Gzip Settings
        ##

        gzip on;



        include /etc/nginx/conf.d/*.conf;
        include /etc/nginx/sites-enabled/*;
}

 

关于线上部署admin后台样式没有生效的问题:

方法一:

1、在settings.py尾部:

STATIC_ROOT  = os.path.join(BASE_DIR, 'static')#指定样式收集目录
#或
STATIC_ROOT = '/www/mysite/mysite/static'  #指定样式收集目录

2、收集CSS样式,在终端输入:

python manage.py collectstatic

运行这个命令之后,就会自动把后台CSS样式收集到/static/目录下。刷新页面就能恢复样式!

注意:收集或复制前一定先在settings里配置并指定STATIC_ROOT路径,static/ 个目录可以自己定。指定的时候一定要在settings.py和nginx里指定新的路径。不然无法生效。

具体可参考:https://www.django.cn/article/show-4.html#yangsi

 

 

标签:log,##,ubuntu22.04,sudo,django,nginx,server,uwsgi
From: https://www.cnblogs.com/superip/p/18082066

相关文章

  • Windows环境安装Nginx
    1.下载点击跳转下载:Nginx下载选择Stableversion(稳定版) 2.将下载的压缩包,解压到日常使用的目录 3.修改conf/nginx.conf文件默认端口号,默认是80,将端口改为自己需要的端口 ......
  • Django-域名管理项目
    1,相关版本vscoe:1.82.12,cmd命令行创建并激活虚拟机环境创建虚拟环境python.exe-mvenvdjango-env激活并进入虚拟环境django-env/Script/active3,vscode终端创建并激活虚拟环境执行激活命令active报错时的处理办法https://blog.csdn.net/weixin_44548098/ar......
  • Django路由层
    mysqlclient项目同名文件夹下__init__.py这个文件中添加以下两句话:(数据库8.0时,进行数据库迁移时报错为2026的解决方法)importpymysqlpymysql.install_as_MySQLdb()路由层path(路由,视图函数,别名)关于url后面加/的问题:有时候你没有加/,django也会自动帮你加......
  • Django连接数据库操作
    只能运行一个django项目从计算机名称开始一直到项目文件名,都不能包含中文不管是get请求还是post请求,都是朝一个地址发起执行的,那get请求和post请求对应的处理肯定要不一样request对象request.method:返回请求方式,并且全大写的字符串形式request.POST:获取用户提交p......
  • 【20.2】Django框架Form组件之渲染HTML代码
    【一】引入forms组件只会帮我们渲染用户输入的标签(input/select...)【二】书写forms组件forms.pyfromdjangoimportforms#定义form类classMyForm(forms.Form):#username:字符串类型最小三位,最大八位username=forms.CharField(max_length=8,min......
  • 【20.1】Django框架Form组件之常用字段及插件
    【零】引入创建Form类时主要涉及到【字段】和【插件】字段用于对用户请求数据的验证插件用于自动生成HTML;【一】Field.clean(value)注意:这里说的是字段Field的clearn方法,不是表单Form的clean方法。虽然表单字段的Field类主要使用在Form类中,但也可以直接实例化它们来......
  • 【20.4】Django框架Form组件之钩子函数(Hook)
    【一】什么是钩子函数在forms组件中钩子函数(Hooks)是用来在特定事件发生时执行自定义逻辑的函数。它们提供了一种创建交互性和动态行为的方式,并可以用于处理表单的各种状态和数据。【二】常见的钩子函数【1】onInputChange当输入框的值发生变化时触发。你可以通过这个......
  • 【20.3】Django框架Form组件之渲染错误信息
    【一】定义form组件forms.py#定义form类classMyForm(forms.Form):#username:字符串类型最小三位,最大八位username=forms.CharField(max_length=8,min_length=3,label="用户名",error_messages={......
  • 【20.7】Django表单API详解
    【一】引入声明:以下的Form、表单等术语都指的的广义的Django表单。Form要么是绑定了数据的,要么是未绑定数据的。如果是绑定的,那么它能够验证数据,并渲染表单及其数据,然后生成HTML表单。如果未绑定,则无法进行验证(因为没有数据可以验证!),但它仍然可以以HTML形式呈现空白表单。若要......
  • 【20.6】Django框架Form组件之模型表单ModelForm
    【一】引入如果你正在构建一个数据库驱动的应用,那么你可能会有与Django的模型紧密映射的表单。比如,你有个BlogComment模型,并且你还想创建一个表单让大家提交评论到这个模型中。在这种情况下,写一个forms.Form类,然后在表单类中定义字段,这种一般创建表单的做法是冗余的,因为你已经......