任何时候你都可以开始做自己想做的事

搜索|
安装Django+uwsgi+依赖库
发布时间:2023-09-15 09:18:04

激活虚拟环境 

在新创建的目录中,进入到myenv/bin目录下 source activate 激活/ deactivate/关闭

使用 virtualenv 创建的虚拟环境

CD 进入 项目所在目录

virtualenv myenv 

source activate # 进入虚拟环境

----------------------------------------------------------

虚拟环境里用pip3安django和uwsgi

pip3 install django  #(如果用于生产的话,则需要指定安装和你项目相同的版本)

pip3 install django==3.1.5(指定版本号)

pip3 install uwsgi

# 给uwsgi建立软链接,方便使用

ln -s /usr/local/python3/bin/uwsgi /usr/bin/uwsgi

在本地项目目录下用下面的命令把当前的环境依赖包导出到requirements.txt文件

pip freeze > requirements.txt 

把项目源码压缩打包。把项目上传到服务器对应的目录里(/data/wwwroot/),解压。

进入解压好的项目根路径中安装requirements.txt里的依赖包。

pip3 install -r requirements.txt

///////////////////////////////////////////////////////////////////////////////////////////////


django

静态资源收集

python manage.py collectstatic

-------------------------------------------------

NGINX+UWSGI配置文件

用uwsgi部署你的Django项目:更改项目中的settings文件:

DEBUG = False   # 关闭调试模式。

ALLOWED_HOSTS = ['*']     # 允许所有主机访问。

在你的项目根目录下(与manage.py同级)新建一个uwsgi.ini文件,内容如下:


[uwsgi]

http=0.0.0.0:80     # 如果单独使用uwsgi来部署Django项目时,就用这一行。

# socket=0.0.0.0:8001   # 如果使用nginx+uwsgi来部署Django项目时,就用这行。其中,8001端口用来跟nginx通信。

chdir=/usr/DjangoProject/MyProject/    # 你项目的完整路径。manage.py同级目录

# chmod-socket=664   # 给socket文件赋权限,这里不用管。

master=true   # 启用主线程。

processes=4

threads=2

logto=路径/uwsgi.log     # 指定日志文件(会自动创建)。这个很重要,如果uwsgi出现错误,可以通过日志文件来查错。

pidfile=路径/uwsgi.pid   # 指定进程号文件(会自动创建)。这个也很重要,如要重启和关闭uwsgi,则需要这个文件,里面记录了进程号。

module=MyProject.wsgi:application   # 指定wsgi文件。在与settings.py同级目录中会有一个wsgi.py文件。


保存退出后,输入:uwsgi --ini uwsgi.ini    


# 启动uwsgi,并指定配置文件。

uwsgi -d --ini uwsgi.ini 后台运行,守护进程

uwsgi --ini uwsgi.ini 启动uwsgi

uwsgi --stop uwsgi.pid 关闭uwsgi

uwsgi --reload uwsgi.pid 重启uwsgi


----------------------------------------------------------------------------------------------

配置Nginx配置文件(把原先的配置文件可以备份以下,然后将下面的替换进去)。

找到nginx的安装目录(如:/usr/local/nginx/),打开conf/nginx.conf文件,修改server配置:


events {

    worker_connections  1024;

}

http {

    include       mime.types;

    default_type  application/octet-stream;

    sendfile        on;

    server {

        listen 80;

        server_name  127.0.0.1:80;  # 改为自己的域名,没域名修改为127.0.0.1:80

        charset utf-8;

        location / {

           include uwsgi_params;

           uwsgi_pass 127.0.0.1:8070;  #端口要和uwsgi里配置的一样

           uwsgi_param UWSGI_SCRIPT qize_demo.wsgi;#          wsgi.py所在的目录名+.wsgi

           uwsgi_param UWSGI_CHDIR /data/wwwroot/qize_demo/;    #项目路径  manage.py 同级目录           

        }

        location /static {

            alias /data/wwwroot/qize_demo/static; #静态资源路径

        }

    

        location /templates {

            alias /data/wwwroot/qize_demo/templates;

        }

    }


}


留意:一定要注意Uwsgi和Nginx配置文件里的项目路径和静态资源路径,填写正确了才能成功访问。不然会出现502错误。还有就是,修改Django文件和其它配置文件之后,一定要重启Uwsgi和Nginx,不然不生效

----------------------------------

django python manage.py runserver XXX.XXX.XX.XXX:8000 #Djiango自带web服务器的端口

uswgi  内部与nginx端口  8033

nginx  端口 8001


BASE_DIR是manage.py所在的位置

///////////////////////////////////////////////////////////////

#通过ps,查看uwsgi相关进程

ps aux|grep uwsgi

#kill pid会发送SIGTERM,只会导致重启,而不是结束掉。需要发送SIGINT或SIGQUIT,对应着是INT才可以

killall -s INT /usr/bin/uwsgi

Django线上部署后admin后台css失效

可在djang项目根目录下,创建static文件夹。

执行命令:python manage.py collectstatic 命令,会将所有静态文件搜集起来,放到这个文件下。

在setting.py文件中添加static路径。

STATIC_ROOT = os.path.join(BASE_DIR, 'static')

重启项目就OK了








解决-bash: killall: command not found 的方法

安装 yum install -y psmisc