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
推荐链接
发表评论