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

最新发表
友情链接