1、python3环境的安装

  安装acc,用于后续安装Python时编译源码。

apt install gcc -y

 安装Python依赖

sudo apt update
sudo apt install zlib1g-dev -y
sudo apt install libbz2-dev -y
sudo apt install ncurses-dev -y
sudo apt install libreadline-dev -y
sudo apt install libssl-dev -y 
sudo apt install xz-utils liblzma-dev -y
sudo apt install sqlite3 libsqlite3-dev -y
sudo apt install libgdbm-dev -y
sudo apt install tk-dev -y
sudo apt install libmysqlclient-dev -y
sudo apt install python3-dev -y  # 安装Python 3的开发库
sudo apt install libffi-dev -y
sudo apt install wget -y

在安装依赖的过程中会出现服务重启之类的提示,可以安下TAB键,然后回车即可

在服务器的根目录创建一个data文件,里面存放Django项目、Python相关的等。

#先进入根目录
cd /
#在使用文件夹创建命令
mkdir data
#查看一下
ls
#进入文件夹
cd /data

下载Python源码

#这里使用的是华为镜像:    https://mirrors.huaweicloud.com/python/

wget https://mirrors.huaweicloud.com/python/3.9.5/Python-3.9.5.tgz

#查看一下,有一个tgz后缀的文件,表示成功
ls

解压&编译&安装

#解压
tar -xvf Python3.9.5.tgz
#进入Python文件
cd Python-3.9.5
#编译
./configure

make all
make install

#测试

python3

#出现3.9.5为成功了
Python 3.9.5 (default, Nov 12 2024, 000004) 
[GCC 11.4.0] on linux


#如果版本不是自己解压下载的版本,则调整一下环境变量
#检查一下python3的路径
which python3
#创建链接
sudo ln -sf /usr/local/bin/python3.9 /usr/bin/python3
sudo ln -sf /usr/local/bin/python3.9 /usr/bin/python
sudo ln -sf /usr/local/bin/pip3.9 /usr/bin/pip3
sudo ln -sf /usr/local/bin/pip3.9 /usr/bin/pip

2、配置虚拟环境

# 安装virtualenv
pip3 install virtualenv

#在data目录里创建一个环境文件夹
#此时是在data目录下
cd /data
mkdir envs
cd envs
virtualenv /data/envs/web

#创建成功会有一个web文件,进入可以看到bin目录之类的python文件夹

#激活虚拟环境
source /data/envs/web/bin/activate


#安装相关的依赖,这里只是对Django+uwsgi+nginx的项目部署不做其他数据库等相关的操作。

#在激活的虚拟环境中安装Django
pip install django   #有可能安装不成功,可以使用下面的命令,使用国内镜像
pip install django -i https://pypi.tuna.tsinghua.edu.cn/simple

#在data目录创建一个django项目

cd /data
django-admin startproject web

3、配置uwsgi

配置uwsgi前,将django项目settings的一些配置做更改

vi /data/web/web/settings.py

#进入后,将DEBUG一定要改为False,允许ip改为通配符。
DEBUG = False

ALLOWED_HOSTS = ['*']



#在最后加上,如下,需要导os包
import os
STATICFILES_DIRS = [
    os.path.join(BASE_DIR, 'static')
]
STATIC_ROOT = os.path.join(BASE_DIR, 'web_static')



#配置完后,运行Django的静态文件打包命令,文件打包到web_static目录下

python manage.py collectstatic

更改后,安装uwsgi,并创建uwsgi的配置文件等

#安装uwsgi    注意这还是在虚拟环境中,安装报错,先尝试换国内源
pip install uwsgi 

#安装完成,进入项目文件,创建一个uwsgi.ini,这是uwsgi的配置文件。
cd /data/web
vim uwsgi.ini


############## 这是配置文件的内容。
[uwsgi]
#使用http访问
http=0:8001
# 开启主进程
master = true
# 指定uwsgi工作的进程数
processes = 1
# 指定工作的每个进程下的线程数
threads = 2
# 指定项目的目录
chdir = /data/web
# wsgi.py文件的位置
wsgi-file= /data/web/web/wsgi.py

# 日志  需要去创建这个文件
logto = /data/web/logs/error.log
chmod-socket = 660
vacuum = true
max-requests = 1000
# uwsgi的运行状态
stats=/data/web/uwsgi.status
# uwsgi的进程id
pidfile=/data/web/uwsgi.pid
#################

#保存,创建一个日志文件夹,和一个日志文件
mkdir logs
cd logs
vim error.log
cd /data/web
#运行uwsgi、
uwsgi --ini uwsgi.ini
#查看uwsgi的情况,可以看到开启后是有好几个进程在被使用
ps aux | grep uwsgi
#停止uwsgi
uwsgi --stop uwsgi.pid







3.1、uwsgi成功后浏览admin页面

        uwsgi启动成功之后,外网访问服务器,是需要开放端口,这就需要在服务器厂商那配置NAT转发。

        在服务器设置页面找到NAT转发,类似的设置项。配置一下,列如这里使用了内部的8001端口。

       而我们设置一个,外部端口连接这个内部的8001端口,协议使用tcp即可。

        这里不在做说明,可以自行查找配置方法, 

        配置完成后,可以在外网,访问当服务器,列如,设置后,给你的是192.168.12.123:23125外部端口,

     192.168.12.123:23125/admin      #这样就可以访问到admin页面

在你访问这个地址的时候,这个端口就是指向你服务器的8001端口,所以它可以访问到你正在运行的django项目 

4、nginx配置

        在这,你可以使用deactivate退出当前的虚拟环境,也可以不退出,重新创建一个服务器连接进行接下来的操作,两者都可以选择

        

# 如果使用apt-get安装报错,可能是因为没有nginx的安装源,可以通过增加安装源,或者手动下载安装包进行安装。
sudo apt-get install nginx

#这是检测nginx配置是否正确的测试
nginx -t

#查看版本号
nginx -v

安装完nginx回到Django项目下的uwsgi.ini配置文件,对其做一下修改:注释http这行,并添加一行

[uwsgi]
#使用http访问
#http=0:8001

#0.0.0.0表示所以ip

socket = 0.0.0.0:8002
# 开启主进程
master = true
# 指定uwsgi工作的进程数
processes = 1
# 指定工作的每个进程下的线程数
threads = 2
# 指定项目的目录
chdir = /data/web
# wsgi.py文件的位置
wsgi-file= /data/web/web/wsgi.py

# 日志  需要去创建这个文件
logto = /data/web/logs/error.log
chmod-socket = 660
vacuum = true
max-requests = 1000
# uwsgi的运行状态
stats=/data/web/uwsgi.status
# uwsgi的进程id
pidfile=/data/web/uwsgi.pid

更改完毕后 ,复制一份nginx的配置文件,到Django项目下。

cp /etc/nginx/nginx.conf /data/web/

之后对其做更改

#将权限提高到管理员权限
user root;

#在http内添加upstream django以及server等配置,
http {

	################
	
	upstream django {
                server 127.0.0.1:8001;  #这个地方很重要,需要用与uwsgi.ini中socket写的端口一致
        }
    server{

                listen 8000;    #监听端口,浏览器访问的就是这个端口
                server_name 192.168.196.1;  #你的服务器IP
                client_max_body_size 75M;
                charset     utf-8;
                location / {
                uwsgi_pass  django;
                include  /etc/nginx/uwsgi_params;  #这个可以根据自己nginx的文件找到在哪
                }
                location /static/ {   #配置静态资源,此处写什么,在浏览器访问就需要写什么
                          alias /data/web/my_static/;  #静态资源的绝对路径,与8.中收集到的静态资源路径一致,最后的 /一定要加
                }
	     		location /media/ {   #配置媒体资源,要求同静态资源一致
	        	          alias /data/web/media/;
		        }
                location /templates/ {
                          alias /data/web/templates/;
                }
        }    
	
	
	
}

测试一下配置文件

nginx -t -c /data/web/nginx.conf


#代表测试通过
nginx: the configuration file /data/my_web/nginx.conf syntax is ok
nginx: configuration file /data/my_web/nginx.conf test is successful

5.运行django+uwsgi+nginx项目

          先启动uwsgi服务

#进入虚拟环境
source /envs/web/bin/activate

#启用uwsgi服务

uwsgi -ini /data/web/uwsgi.ini

 在开启另外的终端,开启nginx服务。

#-c是指定运行的配置文件
nginx -c /data/web/nginx.conf

#使用lsof查看一下端口是否正常运行了,uwsgi以及nginx
lsof -i :8000
lsof -i :8001

如此部署完毕。当然,外网访问还是需要配置服务器的外部端口与内部端口的连通。不然配置再好也是访问不了的。

#配置好了外部端口,只需要只需要使用服务器ip地址+外部端口,即可访问我们的页面。

当然默认页面是没有东西的,这时候就尝试访问admin页面,检测一下部署效果,有页面,但没有css样式等,可能是静态文件的问题,需要自行解决。
如,服务器给的外部端口是192.168.196.1:24164

浏览器输入:

192.168.196.1:24164/admin

即可访问admin页面,
 

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐