1.写好前端静态网页加后端业务逻辑在本地上可以使用自己的数据库进行设置本地调试,做一个全栈demo级别的小项目。(一定要明白本地怎么部署运行的原理和在云服务器是一样的原理)
2.去阿里云腾讯云华为云注册登录,使用云服务器,这里以使用白嫖免费的云服务器选择Ubuntu系统示例。
管理控制台
我们一会要远程连接它所以忘记密码的小伙伴可以重设下密码
然后使用ssh(xshell或者finashell、filezilla)等工具连接它(因为使用本地浏览器窗口自带的远程连接不稳定)每个工具可能有点差异但是原理一样
连接名称随便写给自己记得就行,主机是自己云服务器的实例公网ip(看之前找到可以复制),用户名和密码是自己刚刚重置过自己设定的
好到这里就是我们完成一半的环节了,熟悉Linux操作系统的小伙伴们!
我们想要项目运行要加适配自己项目的python版本和django版本还有mysql版本一定要相互兼容否则你不兼容在本地电脑上也是跑不起来的更别说云服务器上面了!如果是系统不兼容支持我们的项目绑定的库包直接换系统也可以的(我这里是djang5和python10+和MySQL8+直接Linux系统选择最新版本的)
我们慢慢一步一步来:
更新下我们的依赖库
sudo apt-get update
看下检查我们python版本符合我们项目要求不!如果有多个版本可以使用python或python
3指令看下优先级使用对应的是什么版本
python --version
python2 --version
pytyon3 --version
如果都不符合的需要安装下载
wget https://www.python.org/ftp/python/3.12.2/Python-3.12.2.tgz
解压到/usr/local下
tar -xvf Python-3.12.2.tgz -C /usr/local/
安装依赖项:
在安装Python之前,需要确保系统已经安装了所有必要的编译和构建工具以及Python依赖的库。这可以通过系统的包管理器来完成。例如,在基于Debian的系统上,可以运行:
sudo apt update
sudo apt install -y build-essential zlib1g-dev libncurses5-dev libgdbm-dev libnss3-dev libssl-dev libreadline-dev libffi-dev libsqlite3-dev wget libbz2-dev
编译和安装Python:
进入解压后的Python源代码目录,运行configure
脚本来准备编译环境,然后使用make
命令编译Python,最后使用make install
命令安装Python:
cd /usr/local/Python-3.12.2
./configure --prefix=/usr/local/python3.12
make
sudo make install
最后好了的话就重新检查下版本以及输入python调试下看下具体默认哪个,如果还是系统自带的就添加优先级(如果小伙伴使用了CentOs和作者ubuntu不一样的系统安装失败了肯定是
CentOS 7及之前的版本默认不支持Python 3.10,因为CentOS 7的官方仓库中最高只提供Python 2.7和Python 3.6。对于需要Python 3.10的CentOS用户,可以考虑使用SCL(Software Collections)或者升级到更新的CentOS版本(如CentOS 8,但请注意CentOS 8已于2021年底停止支持)。
对于CentOS 8或更新的版本,可以尝试使用dnf或yum命令安装(但请注意CentOS 8的官方仓库中可能也不包含Python 3.10):那么只能重装云服务器的操作系统了兄弟换Ubuntu
)
如果不是系统限制也不是库的限制而是报错了Couldn't find any package by ......
那么就执行指令解决:
apt-get install python-software-properties
apt-get install software-properties-common
中途停止就选择y让他继续跑
add-apt-repository ppa:jonathonf/python-3.12
apt-get- update
然后再重新安装就行,你直接安装成功没有错的情况下就直接调整优先级
调整python使用版本的优先级:这是示例根据自己版本调整,作者没有遇到这个问题
python安装好了后和python一样检查pip版本否则你下后面django等也会说下不了的问题
apt-get install python3-pip
这里下载好了要检查它pip安装绑定在哪个版本上面啊否则又出现版本兼容问题(如果觉得麻烦还是直接Ubuntu直接最高级支持的版本都高除非你python和django版本很低才安装Ubuntu的中低版本或者可以给ai推算版本的兼容情况符合自己项目不)
接下来下载虚拟环境
pip install virtualenv
下载uwsgi
pip install uwsgi
这步如果报错了的话可能还是说version版本问题只能说更换python版本还要可以和项目兼容运行的,一直要出现这个successfully成功界面才算ok
然后下载nginx
apt-get install nginx
然后这里我们是阿里云的要配置安全策略添加安全组
0.0.0.0代表别人所有ipv4的可以访问得到你的然后改80端口一定要点击保存
然后在本地浏览器输入我们云服务器上面的公网ip
这就是使用nginx服务器搭建的这么一个默认欢迎网页
Nginx(engine x)是一款由俄罗斯的程序设计师Igor Sysoev使用C语言开发的开源、高性能的HTTP和反向代理web服务器,同时也支持IMAP/POP3/SMTP协议。它具有以下主要特点和功能:
特点
- 轻量级:Nginx设计简洁,占用内存少,资源消耗低。
- 高并发:Nginx采用异步非阻塞的事件驱动模型,能够处理大量的并发连接,官方测试表明Nginx能支持高达50,000个并发连接数。
- 高可靠性:Nginx具有热部署的特点,可以在不中断服务的情况下进行升级和配置更改。
- 高扩展性:Nginx支持多种模块,可以灵活地扩展其功能。
- 低成本:作为开源软件,Nginx可以免费使用,相比硬件负载均衡设备,成本更低。
功能
- HTTP服务器:Nginx可以作为独立的web服务器,处理HTTP请求并向客户端发送响应。
- 反向代理:Nginx能够作为反向代理服务器,将客户端的请求转发到后端的应用服务器,隐藏真实的后端服务器,提升安全性和性能。
- 负载均衡:Nginx支持多种负载均衡算法(如轮询、最小连接数、IP哈希等),可以将请求分布到多个后端服务器上,以优化性能和可用性。
- 静态文件处理:Nginx对静态文件的处理非常高效,可以作为静态文件服务器使用。
- 动态内容服务:Nginx可以与各种后端应用服务器集成(如PHP、Node.js、Python等),实现动态内容的处理和传递。
- SSL/TLS支持:Nginx支持SSL/TLS协议,可以提供安全的HTTPS服务,并支持常见的SSL功能,如密钥、证书的管理和配置。
- URL重写:Nginx提供强大的URL重写功能,可以根据需求对URL进行修改、重定向和映射,实现网站的美化和优化。
- 缓存加速:Nginx支持缓存功能,可以缓存静态内容和动态内容,提高网站性能。
- 安全功能:Nginx提供了一系列安全功能,包括访问控制、IP地址限制、SSL/TLS加密以及防火墙保护,有助于保护服务器免受网络攻击。
然后我们进入目录
cd /var/www
创建自己虚拟文件夹自己命名我这里是datavis
virtualenv datavis
激活虚拟环境
source datavis/bin/activate
cd datavis
然后用fxtp或者wscp把我们的django项目传到这个文件目录下
查看
ls
会显示出自己的项目然后比如你的项目名称是django,要进入然后执行
cd django
python3 manage.py runserver 0.0.0.0:8000
然后打开浏览器输入ip:8000(自己设置端口号)可以访问你的运行的项目
(这里先不要执行我们还要补充mysql数据库)
我们还要下载mysql数据库或者redis
sudo apt install -y mysql-server mysql-client libmysqlclient-dev
输入密码
{如果下载报错试试(没就不理)
sudo apt-get update
重新下载一遍波:
sudo apt install -y mysql-server mysql-client libmysqlclient-dev}
下载自动解压安装我们查看下账号密码
sudo cat /etc/mysql/debian.cnf
使用刚刚的登录上mysql
mysql -u debian-sys-maint -pX1WJHBizlgEYwwle
修改用户密码root和123456
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';
然后我们创建自己的项目需要的数据库
create database [你自己的数据库名称];
可以查看下检查
show databases;
然后退出数据库回到根目录
然后回去运行我们的项目如果报错的话估计是mysql驱动连接问题
pip install mysqlclient
如果还是不行
出现了以下错误:
1.
Exception: can not find valid pkg-config name.
2.
Specify MYSQLCLIENT _CFLAGS and MYSQLCLIENT_LDFLAGs env vars manually
输入这条
apt-get install python3-dev default-libmysqlclient-dev build-essential pkg-config
然后重新下载驱动
pip install mysqlclient
可能运行没问题然后页面加载不出输入
#python3 manage.py collectstatic
数据没有迁移输入
#python manage.py makemigrations
#python manage.py migrate
最后再启动项目可以看到启动成功
【【Python建站】阿里云ECS配置Django Ubuntu+Nginx+Uwsgi+Django的完整配置【Django19】】 https://www.bilibili.com/video/BV1Sb411x7wi/?share_source=copy_web&vd_source=fd3de8e9323484946f989d9a08f2ba7e
这个后面要配置域名或者
如何使用Nginx+uWSGI部署Django项目_云服务器 ECS(ECS)-阿里云帮助中心 (aliyun.com)
如果有基础的小伙伴可以直接看第五步没有基础还是一样从第一步开始看
检测nginx配置正确
sudo nginx -t