-
CentOS7 Django项目服务器搭建(局域网内访问)
2026-02-15 20:49:11
刚开始接触Django开发,这篇文章由个人经验总结以及借鉴互联网资料而成,若有错误欢迎指正
操作步骤(默认主机接入路由器并可上网,部分操作需要root权限):
CentOS7系统
wget&换源
ifconfig
vim
配置网络
python&pip换源
virtualenv&创建环境
uwsgi
(virtualenv)uwsgi
(virtualenv)django
(virtualenv)上传代码
(virtualenv)配置uwsgi
安装配置nginx
启动项目&放行端口(防火墙)
步骤1:安装CentOS 7系统
下载镜像,制作启动U盘,安装
安装时可能遇到的问题:
问题1:报错“has invalid signature , you need to load the kernel first” 解决办法:
进入主板BIOS
关闭SecureBoot
保存重启
安装系统
问题2:报错”starting dracut initqueue hook“
解决办法:
在启动引导界面(Install CentOS 7...)按 e 编辑开机选项
查看U盘路径,将”linuxefi /images/pxeboot/vmlinuz inst.stage2=hd:LABEL=CentOS\x207\x20x86_64 quiet“更改为”linuxefi /images/pxeboot/vmlinuz linux dd nomodeset quiet“,完成后按 ctrl + x ,得到U盘路径”scd4 vfat CentOS\x207\x20x86_64“
重启,在启动引导界面(Install CentOS 7...)按 e 编辑开机选项
修改安装位置,将”linuxefi /images/pxeboot/vmlinuz inst.stage2=hd:LABEL=CentOS\x207\x20x86_64 quiet“更改为”linuxefi /images/pxeboot/vmlinuz inst.stage2=hd:/dev/sdc4 quiet“,完成后按 ctrl + x 进入安装界面
安装系统
步骤2:安装wget并更换国内源
安装:yum install wget -y
换源:
切入CentOS-Base.repo所在目录,cd /etc/yum.repos.d
将CentOS-Base.repo改名成CentOS-Base.repo.bak,mv CentOS-Base.repo CentOS-Base.repo.bak
更换源文件(阿里云),使用 wget -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/Centos-7.repo 或 curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/Centos-7.repo(当无法使用yum下载wget及其他工具包时)
切入CentOS-Base.repo所在目录,cd /etc/yum.repos.d
清除缓存,yum clean all
重新生成缓存,yum makecache
更新最新源设置,yum update -y
步骤3:安装ifconfig(查看本机网络信息也可以使用 ip addr)
查看需要安装的软件包,yum search ifconfig
安装软件包,yum install net-tools.x86_64
步骤4:安装vim
安装:yum -y install vim*
配置:
打开配置文件,vim /etc/vimrc
在配置文件末尾增加
set nu "显示行号
set showmode "在命令行界面最下面显示当前模式等
set ruler "在右下角显示光标所在的行数等信息
set autoindent "每次单击Enter键后光标移动到下一行时与上一行的起始字符对齐
syntax on "语法检测,编辑脚本时关键字会用特殊颜色显示
保存文件,按先按Esc,再输入 :wq ,回车
步骤5:配置网络(静态IP)
查看当前局域网信息,选择一个未使用的IP地址,避免IP地址冲突
打开网卡配置文件,vim /etc/sysconfig/network-scripts/ifcfg-ens33
编辑配置文件
BOOTPROTO=static #使用静态IP地址,默认为dhcp
ONBOOT=yes #设置网卡启动方式为开机启动
IPADDR=192.168.1.20 #设置的静态IP地址
NETMASK=255.255.255.0 #子网掩码
GATEWAY=192.168.1.1 #网关地址
DNS1=223.5.5.5 #DNS服务器(按需设置)
DNS2=114.114.114.114 #DNS服务器(按需设置)
保存文件,按先按Esc,再输入 :wq ,回车
重启网络服务,service network restart
测试连接
步骤6:安装python并更换国内源(python版本以项目为准)
安装python:
更新系统软件包,yum update -y
安装软件管理包和可能使用的依赖
yum -y groupinstall "Development tools"
yum install openssl-devel bzip2-devel expat-devel gdbm-devel readline-devel sqlite-devel psmisc libffi-devel
下载Pyhton3到/usr/local 目录
cd /usr/local
wget https://www.python.org/ftp/python/3.9.6/Python-3.9.6.tgz(下载速度不稳定时快时慢,建议使用华为镜像: https://repo.huaweicloud.com/python/3.9.6/Python-3.9.6.tgz)
解压,tar -zxvf Python-3.9.6.tgz
进入Python-3.9.6路径,cd Python-3.9.6
编译安装到指定路径,./configure --prefix=/usr/local/python3
安装python3
make
make install
给python3建立软链接,ln -s /usr/local/python3/bin/python3.9 /usr/bin/python3
给pip3建立软链接,ln -s /usr/local/python3/bin/pip3.9 /usr/bin/pip3
查看python3和pip3安装情况
python3
pip3 -V
换源:pip3 config set global.index-url https://mirrors.aliyun.com/pypi/simple/
步骤7:安装virtualenv并创建虚拟环境
安装virtualenv:
pip3 install virtualenv
建立软链接,ln -s /usr/local/python3/bin/virtualenv /usr/bin/virtualenv
创建虚拟环境:
创建安装目录,mkdir -p /data/env
切换到/data/env/下,创建指定版本的虚拟环境,virtualenv --python=/usr/bin/python3 pyweb
切换到/data/env/pyweb/bin下,启动虚拟环境,source activate
换源,pip3 config set global.index-url https://mirrors.aliyun.com/pypi/simple/
步骤8:在主机上安装uwsgi
安装uwsgi:
pip3 install uwsgi
给uwsgi建立软链接,ln -s /usr/local/python3/bin/uwsgi /usr/bin/uwsgi
步骤9:在虚拟环境上安装uwsgi(同主机安装)
注意切换到虚拟环境
步骤10:在虚拟环境上安装django(django版本以项目为准)
注意切换到虚拟环境
安装django:pip3 install django(pip3 install django==4.2.5)
步骤11:在虚拟环境上传代码(将源码打包成压缩文件上传)
创建代码存放路径,mkdir -p /data/wwwroot
解压,unzip meslite.zip
切换到项目目录,cd /data/wwwroot/meslite
测试django运行,python3 manage.py runserver
项目运行时可能出现的问题:
问题:报错“django.db.utils.NotSupportedError: deterministic=True requires SQLite 3.8.3”
解决办法:使用第三方包运行SQLite,把sqlite3 更换为pysqlite3 和 pysqlite3-binary
安装pysqlite3,pip install pysqlite3
安装pysqlite3-binary,pip install pysqlite3-binary
打开文件/data/env/pyweb/lib/python3.9/site-packages/django/db/backends/sqlite3/base.py,注释“from sqlite3 import dbapi2 as Database”并在下面添加“from pysqlite3 import dbapi2 as Database”
保存文件,按先按Esc,再输入 :wq ,回车
步骤12:在虚拟环境配置uwsgi文件
在项目根目录下创建在项目根目录下创建meslite.xml文件,输入如下内容:(注意
里的meslite,为wsgi.py所在的目录名) 127.0.0.1:8997 /data/wwwroot/meslite/ meslite.wsgi 4 uwsgi.log 查看uwsgi状态:ps -ef| grep uwsgi
启动uwsgi:uwsgi -x meslite.xml
停止uwsgi:killall -9 uwsgi
步骤13:主机安装配置nginx
安装nginx:
进入home目录,cd /home
下载nginx,wget http://nginx.org/download/nginx-1.13.7.tar.gz
解压,tar -zxvf nginx-1.13.7.tar.gz
进入解压后的文件夹,cd nginx-1.13.7
执行安装命令
./configure
make
make install
配置nginx:
进入nginx配置文件夹,cd /usr/local/nginx/conf
先备份一下nginx.conf文件以防意外,cp nginx.conf nginx.conf.bak
写入配置文件
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:8997; #端口要和uwsgi里配置的一样 uwsgi_param UWSGI_SCRIPT meslite.wsgi; #wsgi.py所在的目录名+.wsgi uwsgi_param UWSGI_CHDIR /data/wwwroot/meslite/; #项目路径 } location /static/ { alias /data/wwwroot/meslite/monitor/static/; #静态资源路径 } }
}
检查nginx配置文件:进入/usr/local/nginx/sbin/,执行./nginx -t命令先检查配置文件是否有错
启动nginx:./nginx
查看nginx:ps -ef | grep nginx
关闭nginx :kill -9 进程号
停止 nginx : ./nginx -s stop
重启nginx:./nginx -s reload
步骤14:启动项目并放行端口(防火墙)
启动项目:
切换到虚拟环境路径,cd /data/env/pyweb/bin
进入虚拟环境,source activate
切换到项目路径,cd /data/wwwroot/meslite
启动uwsgi,uwsgi -x meslite.xml
切换到nginx路径,cd /usr/local/nginx/sbin
启动nginx,./nginx
放行端口:有些服务器外网默认是无法访问的,因为防火墙不允许,所以要开启防火墙,让其可以访问需要访问的端口号
看zone名称:firewall-cmd --get-active-zones
打开端口(以80端口为例):firewall-cmd --zone=public --add-port=80/tcp --permanent
查看端口(以80端口为例):firewall-cmd --query-port=80/tcp
重启防火墙:firewall-cmd --reload