1.安装Python

1.下载linux系统使用的python

查看python版本,例如我的是3.10.11,去Python Source Releases | Python.org 找对应的python版本

选择  Gzipped source tarball 这个版本。下载到本地

2.将文件传至服务器并解压

在本地将此文件上传至服务器:

scp 本地文件所在路径 服务器账号@服务器ip:放入到服务器的某个文件目录

例如:

scp /Users/lee/Desktop/Python-3.10.11.tgz root@111.1.1.111:/www/wwwroot/root

在本地登录服务器,

命令:ssh 服务器账户@服务器IP

例如:

ssh root@111.1.1.111

输入密码然后登录成功

解压前需要安装解压软件

sudo yum install tar gzip

cd命令跳转至压缩文件的目录,然后解压文件

tar -xzvf Python-3.10.11.tgz

补充说明:也可以通过wget

​yum install wget -y

cd xxx/xxx/xxx

wget https://www.python.org/ftp/python/3.10.11/Python-3.10.11.tgz

的方式进行解压缩

3.准备编译环境:

yum -y groupinstall "Development tools"

4.编译安装:

分别输入下面四条命令

先跳转到解压后的那个python目录  

cd /www/wwwroot/root/Python-3.10.11

./configure --prefix=/www/wwwroot/root/Python-3.10.11    

make

make install

安装成功后会出现两个警告:

Installing collected packages: setuptools, pip

  WARNING: The scripts pip3 and pip3.10 are installed in '/www/wwwroot/root/Python-3.10.11/bin' which is not on PATH.

  Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.

Successfully installed pip-23.0.1 setuptools-65.5.0

WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv

第一个是需要将pip所在目录添加到系统环境变量中。

第二个是以“root”用户运行pip可能导致权限中断,并与系统包管理器的行为冲突。建议使用虚拟环境。导致了更新或者下载pip时候下载失败。

我们先放着不管,先往下走。

5.建立软连接(Python与pip都建立软连接,分别为python3、pip3与系统自带的Python2区分)

ln -s /usr/local/python3/bin/python3.11 /usr/bin/python3

ln -s /usr/local/python3/bin/pip3.11 /usr/bin/pip3

可使用命令ls -l /usr/bin/查看软连接是否已创建成功:

ls -l /usr/bin/

如下图表示软连接建立成功:

6.配置环境变量

配置环境变量主要是能快速使用pip3安装命令

vi ~/.bash_profile

#配置python,按INSERT进行编写

export PYTHON_HOME=/www/wwwroot/root/Python-3.10.11

export PATH=$PYTHON_HOME/bin:$PATH

按Esc退出编写,保存退出(:wq),执行source~/.bash_profile命令使配置生效。

source ~/.bash_profile

执行echo命令,查看是否配置成功,如图:

echo $PYTHON_HOME

7.配置豆瓣源

pip3.10 config set global.index-url https://pypi.douban.com/simple/

 2.运行python项目

1.直接运行会报很多模块找不到的错误,所以需要先创建环境

sudo pip install virtualenv

2.cd到项目目录下,创建环境

virtualenv newenv

source newenv/bin/activate

pip install django==3.2.19

pip install mysqlclient==2.1.1

pip install django-simpleui==2023.3.1

...

3.根据自己的需求运行项目

python3 manage.py runserver 0.0.0.0:8000

4.到目前为止运行项目时,网页会出现如下情况,原因是服务器处理静态文件(css,图片等)很弱。所以需要部署uWSGI服务器和Nginx服务器

5.部署uWSGI ,在之前的虚拟环境中进行部署,如下

source newenv/bin/activate

pip3 install uwsgi

6.在项目中添加uwsgi.ini文件,内容如下

[uwsgi]

# 使用nginx链接时使用

socket=127.0.0.1:8000

# 直接做web服务器使用 python manage.py runserver ip:port

# http=127.0.0.1:8000

# 项目目录 [pwd查看 直接填,不需要引号]

chdir=/www/wwwroot/root/my_django_project

# 项目中wsgi.py文件的目录,相对于项目目录

wsgi-file=/my_django_project/wsgi.py

# 指定启动的工作进程数

processes=4

# 指定工作进程中的线程数

threads=2

# 进程中,有一个主进程

master=True

# 保存启动之后主进程的pid

pidfile=uwsgi.pid

# 设置uwsgi后台运行, uwsgi.log 保存日志信息

daemonize=uwsgi.log

# 设置虚拟环境的路径

virtualenv=/www/wwwroot/root/my_django_project/newenv/

7.可以通过入下命令进行启动

cd /www/wwwroot/root/my_django_project

source newenv/bin/activate

uwsgi --ini uwsgi.ini

8.停止uwsgi

#先查找uwsgi进程id

ps -ef|grep uwsgi

kill -9 12345

9.安装nginx

yum install nginx -y

血泪史!!!

如果之前服务器有安装过宝塔面板的朋友们,在执行这步可能会出现下面的错误。

All matches were filtered out by exclude filtering for argument: nginx

Error: Unable to find a match: nginx

没有出现这个问题的朋友们可以直接跳到第10步了

究其原因可以看看这篇文章:诡异 YUM 问题: 无法找到(安装卸载)一个特定的包

如果想直接看解决办法:先卸载本地的nginx(宝塔面板内安装的版本)。可通过命令来将旧版本的nginx终止跟删除

#终止进程

ps -ef|grep nginx

kill -9 进程号

#删除文件

find / -name nginx

rm -rf xxx

#如果设置了开机自启nginx可以执行下面的,没设置过请跳过

chkconfig nginx off

rm -rf /etc/init.d/nginx

重点来啦:

cd /etc

vim yum.conf

按i进行编辑 删除exclude这一行 然后Esc 然后:wq

然后就可以通过yum install nginx安装了~~~

10.配置nginx

cat /etc/nginx/nginx.conf

根据django 项目部署详细教程 【uwsgi + nginx】「建议收藏」-腾讯云开发者社区-腾讯云

中的方法去配置nginx.conf

cd /etc/nginx

rm nginx.conf

删除的时候根据提示输入Y

vim nginx.conf

按i 将配置好的内容粘贴 按esc :wq

可用下列命令查看下结果,输出结果为success则表示配置成功,test failed则表示失败

nginx -t -c /etc/nginx/nginx.conf

启动nginx

#启动 停止 重启

systemctl start nginx

systemctl stop nginx

systemctl restart nginx

#开机启动

systemctl enable nginx

#Nginx 不停机,重新加载配置文件

./nginx -s reload

如果遇到报错信息想要查看nginx日志,目录是/var/log/nginx

启动nginx后需要重启uwsgi服务,代码文件有变动也需要重启uwsgi。每次都重启就会很麻烦。所以需要脚本来执行就很舒服。创建重启uwsgi的脚本reboot.sh文件,如下,放置到项目目录下

#!/usr/bin/env bash

#使用前需要先cd 到项目路径

echo -e "\033[34m---------------------wsgi process--------------------------\033[0m"

ps -ef|grep uwsgi.ini | grep -v grep

sleep 0.5

echo -e '\n------------------------going to close -----------------'

ps -ef |grep uwsgi.ini | grep -v grep | awk '{print $2}' | xargs kill -9

sleep 0.5

echo -e '\n------------------------check if the kill action is correct -----------------'

#环境激活,需要改自己的路径

source /www/wwwroot/root/my_django_project/newenv/bin/activate

sleep 1

uwsgi --ini uwsgi.ini & >/dev/null

echo -e "\033[34m---------------------started...--------------------------\033[0m"

sleep 1

ps -ef|grep uwsgi.ini | grep -v grep

使用chmod 777 reboot.sh 赋予可执行权限

chmod 777 reboot.sh

使用./reboot.sh 执行重启脚本

./reboot.sh

附:停止脚本

#!/usr/bin/env bash

echo -e "\033[34m---------------------wsgi process--------------------------\033[0m"

ps -ef|grep uwsgi.ini | grep -v grep

sleep 0.5

echo -e '\n------------------------going to close -----------------'

ps -ef |grep uwsgi.ini | grep -v grep | awk '{print $2}' | xargs kill -9

sleep 0.5

推荐链接

评论可见,请评论后查看内容,谢谢!!!评论后请刷新页面。