20230224-Alma Linux 8环境部署Django项目

1.基础环境

OS:AlmaLinux release 8.6 (Sky Tiger)
python:Python 3.9.13
nginx:nginx/1.14.1
uwsgi:uWSGI 2.0.21 (64bit)
Django:Django==3.2.16

2.python环境准备

python安装

# yum install python39 -y
# whereis python
python: /usr/bin/python3.9 /usr/lib/python3.6 /usr/lib/python3.9 /usr/lib64/python3.6 /usr/lib64/python3.9 /usr/include/python3.6m /usr/include/python3.9 /usr/share/man/man1/python.1.gz
# ln -s /usr/bin/python3.9 /usr/bin/python
# whereis pip
pip: /usr/bin/pip3.9
# ln -s /usr/bin/pip3.9 /usr/bin/pip
# python -V
Python 3.9.13

3.nginx部署

nginx安装

# yum install nginx -y
# nginx -v
nginx version: nginx/1.14.1

nginx启动及自启动

  # systemctl start nginx
  # systemctl status nginx
  # systemctl enable nginx

4.uwsgi部署

uwsgi安装

# yum install python39-devel
# pip install uwsgi
# whereis uwsgi
uwsgi: /usr/local/bin/uwsgi
# uwsgi -version
*** Starting uWSGI 2.0.21 (64bit) on [Thu Feb 23 17:28:15 2023] ***

5.上传源码并安装项目模块

上传源码

# ll local_cmdb.zip 
-rw-r--r-- 1 root root 3442542 Feb 23 18:22 local_cmdb.zip
# unzip local_cmdb.zip
# cd local_cmdb

pip安装项目依赖模块

# rpm -ivh mysql-community-devel-8.0.31-1.el8.x86_64.rpm
### 安装mysqlclient之前必须的组件
# cat requirements.txt 
asgiref==3.4.1
beautifulsoup4==4.11.1
bs4==0.0.1
certifi==2022.12.7
charset-normalizer==2.0.12
commonmark==0.9.1
dataclasses==0.8
Django==3.2.16
idna==3.4
mysqlclient==2.0.0
pip-search==0.0.12
Pygments==2.14.0
pytz==2022.7
requests==2.27.1
rich==12.6.0
simpleui==4.0.2
soupsieve==2.3.2.post1
sqlparse==0.4.3
typing_extensions==4.1.1
urllib3==1.26.13

# pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
# pip install mysqlclient -i https://pypi.tuna.tsinghua.edu.cn/simple
### 可以选择指定源-i https://pypi.tuna.tsinghua.edu.cn/simple

6.创建数据库并导入django项目数据

创建数据库

# mysql -u root -p
>create database local_cmdb;

导入数据库:

# mysql -uroot -p123456 local_cmdb <local_cmdb.sql

7.尝试启动django项目

启动项目

# python manage.py runserver
# netstat -ant |grep 8000
tcp        0      0 127.0.0.1:8000          0.0.0.0:*               LISTEN

8.uwsgi配置及启动

在settings.py所在目录新建django项目配置文件,名称为项目名称.ini

# cd /root/local_cmdb/local_cmdb
# vi local_cmdb.ini
[uwsgi]
master=true
chdir=/root/local_cmdb      ##项目路径
module=local_cmdb.wsgi      ##项目名称.wsgi
py-autoreload=1
lazy-apps=true  
socket=127.0.0.1:8000
processes=4
buffer-size=32768
daemonize=uwsgi.log
log-maxsize = 5000000
vacuum = true
disable-logging = true

检查settings.py配置并收集项目静态文件

# cat settings.py
...
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, "static")
STATICFILES_DIRS = [
  os.path.join(BASE_DIR, '../static'),
]
...

收集静态文件

# cd /root/local_cmdb
# python manage.py collectstatic
...
0 static files copied to '/root/local_cmdb/static', 567 unmodified.

启动uwsgi

# cd /root/local_cmdb/local_cmdb
启动uwsgi
# uwsgi -i local_cmdb.ini
查看uwsgi进程
# ps -ef|grep uwsgi
确认uwsgi端口
# netstat -ant |grep 8000
查看uwsgi日志
# tail -f  uwsgi.log

9.配置nginx

配置nginx

# cp -p /etc/nginx/nginx.conf /etc/nginx/nginx.conf.org
# cat /dev/null /etc/nginx/nginx.conf
# vi /etc/nginx/nginx.conf
user root;           ##建议root启动,否则可能部分web页面权限不足
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;
# Load dynamic modules. See /usr/share/doc/nginx/README.dynamic.
include /usr/share/nginx/modules/*.conf;
events {
    worker_connections 1024;
}
http {
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile            on;
    tcp_nopush          on;
    tcp_nodelay         on;
    keepalive_timeout   65;
    types_hash_max_size 2048;

    include             /etc/nginx/mime.types;
    default_type        application/octet-stream;
    
    include /etc/nginx/conf.d/*.conf;
    
    server {
        listen       81;
        charset utf-8;
        location /static {
               alias /root/local_cmdb/static/;
        }

        location / {
            include uwsgi_params;
            uwsgi_pass 127.0.0.1:8000;
        }

        error_page 404 /404.html;
            location = /40x.html {
        }

        error_page 500 502 503 504 /50x.html;
            location = /50x.html {
        }
    }
}

重启nginx

# systemctl restart nginx.service
# systemctl status nginx.service

访问页面
http://172.26.37.127:81/
http://172.26.37.127:81/admin

10.配置uwsgi开启自启动

创建配置

# vi /etc/systemd/system/server_uwsgi.service
[Unit]
Description=HTTP Interface Server
After=syslog.target
 
[Service]
KillSignal=SIGQUIT
ExecStart=/usr/local/bin/uwsgi --ini /root/local_cmdb/local_cmdb/local_cmdb.ini  
Restart=always
Type=notify
NotifyAccess=all
StandardError=syslog
 
[Install]
WantedBy=multi-user.target

修改/root/local_cmdb/local_cmdb/local_cmdb.ini 文件,删除daemonize=uwsgi.log行配置

[uwsgi]
master=true
chdir=/root/local_cmdb
module=local_cmdb.wsgi
py-autoreload=1
lazy-apps=true  
socket=127.0.0.1:8000
processes=4
buffer-size=32768
#daemonize=uwsgi.log
log-maxsize = 5000000
vacuum = true
disable-logging = true

将该服务加入到systemd中

# systemctl enable /etc/systemd/system/server_uwsgi.service

关闭uwsgi服务

# systemctl stop server_uwsgi.service

开启uwsgi服务

# systemctl start server_uwsgi.service 

重启uwsgi服务

# systemctl restart server_uwsgi.service 

参考URL

https://blog.csdn.net/qq_41905051/article/details/125181364
https://blog.csdn.net/sinat_41292836/article/details/103764842

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,254评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,875评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,682评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,896评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,015评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,152评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,208评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,962评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,388评论 1 304
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,700评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,867评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,551评论 4 335
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,186评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,901评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,142评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,689评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,757评论 2 351

推荐阅读更多精彩内容