首页 > 其他分享 >从0到1部署django项目至阿里云服务器

从0到1部署django项目至阿里云服务器

时间:2024-08-27 21:25:41浏览次数:13  
标签:python django nginx 阿里 usr 服务器 cd local uwsgi

1.前言

最近学院一个志愿服务项目要做个网站展示,并且要求部署上线。趁着学校报销,我租了个阿里云服务器爽一把hhh。这篇文章大概写下我从买服务器到部署上线的历程以及报错的解决,给大家分享的同时,我自己也相当于纪念一下做个笔记。

2.部署历程

 阿里云配着学生认证,有个一年的基础配置最划算,一年99一月115三月335.。。。

自己选了centos系统,有人报销无脑下单哈哈哈

虽然不知道以后会面临啥艰难险阻,至少支付的那一刻是激动的

买好了,我就用mobaxterm链接了

 发现完全o的k,接着我去配了服务器的安全组

点击 管理规则,然后设置入方向,常用的都打开,留一个给django项目,还有一个给uwsgi代理

 哦对了,我这个项目用来展览的,所以没用mysql,3306那个端口也没开,大家用的时候结合自己项目开端口,我这个图里都是最基本的。

至少阿里云服务器的操作到这就结束了,然后开始转向mobaxterm

1.更新系统软件包和安装软件管理包以及可能使用的依赖

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
 

这里第三条指令有个y/n的选择,输入y然后回车

2.安装sqlite3、python

这两个的安装逻辑类似,我一会以python为例(sqlite3的图忘记截了.。。)

其实阿里云服务器自带sqlite3和python,只是版本不对,网上有的大佬说默认sqlite3的版本为3.7.17,django是会报错的,不管了,既然有人踩过坑,我们就不跳了,老老实实下个新版本的把

先给个网址

https://sqlite.org/download.html

下这个 

 前面说了python安装逻辑类似的,下面说下具体步骤

装python的时候,本地cmd看下python版本,服务器最好和本地版本一致

比如我的就是3.9.9

所以也从官网下载一致的

https://www.python.org/ftp/python/3.7.7/Python-3.7.7.tgz

这里数字改下就行,url结构没毛病

下到local,然后解压

cd /usr/local
wget https://www.python.org/ftp/python/3.9.9/Python-3.9.9.tgz
tar -zxvf Python-3.9.9.tgz

 这里要比sqlite3慢好多,大概半个多小时

 看到100%很释然

接着编译安装

cd Python-3.9.9

mkdir /usr/local/python3

cd /usr/local/python-3.7.7/  

LD_RUN_PATH=/usr/local/sqlite3.45/lib/ ./configure LDFLAGS="-L/usr/local/sqlite3.45/lib" CPPFLAGS="-I/usr/local/sqlite3.45/include"  --prefix=/usr/local/python3/
 
LD_RUN_PATH=/usr/local/sqlite3.45/lib/ make 
make clean  
make && make install  

 

这几条命令跟我一样是正确的

 这里的话,用到sqlite的两个路径

编译好的二进制文件会安装到/usr/local/sqlite3.46/lib

头文件sqlite3.h sqlite3ext.h会安装到/usr/local/sqlite3.46/include

这两个路径,也就是把python3换成sqlite3.46

接着建立软连接

ls -la python*   # 查看python已存在的软连接
ln -s /usr/local/python3/bin/python3 /usr/bin/python3 #python的
ln -s /usr/local/python3/bin/pip3.7 /usr/bin/pip3     #pip的

 安装好可以验证

python3
import sqlite3
sqlite3.sqlite_version
exit()

毕竟sqlite那块没图没有详细展开写,如果大家报错可以评论区问我

3.安装virtualenv项目环境

建议大家都安装一个virtualenv,方便以后不同版本的项目管理,跑项目用虚拟环境跑

pip3 install virtualenv # 安装
# 建立软链接
ln -s /usr/local/python3/bin/virtualenv /usr/bin/virtualenv

这里pip任意目录就行

接着创建虚拟环境

mkdir -p /www/env    # 该项目虚拟环境
mkdir -p /www/wwwroot   # 该项目文件存放目录

cd /www/env/
virtualenv --python=/usr/bin/python3 ntu_env # 创建指定版本的虚拟环境

cd /www/env/ntu_env/bin
source activate  # 启动该虚拟环境

启动成功后,可以在左边看到括弧,里面是你的命名

4.安装uwsgi

pip3 install uwsgi

ln -s /usr/local/python3/bin/uwsgi /usr/bin/uwsgi

 5.项目正式部署

首先本地导出requirements.txt,到项目的目录,在地址栏cmd回车

在终端输入

pip freeze > requirements.txt

然后将项目拽入mobaxterm

这里注意地址/www/wwwroot/

下面安装项目的依赖包,这里注意下排包,先把mysqlclient删掉,后续需要在单独装上

cd /www/wwwroot/NTUVolunteer1/     # 在虚拟环境下进行
pip3 install -r requirements.txt # 依赖包

如果pip报错哪个包error,百度下是不是跟你的项目相关,如果无关就删掉

(我当时有深度学习的tensorflow等报错,排包之后就ok了)

安装完输入命令检查

python3 manage.py check

没问题的话继续

这时候就可以进入项目跑代码了(注意要进入manage.py的文件)

cd /www/wwwroot/NTUVolunteer1/
python3 manage.py runserver 

这里就是成功了,接下来就是配置文件了

先是uwsgi,在项目根目录里创建 uwsgi.ini 文件,vim文件写入内容

#添加配置选择
[uwsgi]
#配置和nginx连接的socket连接
socket=127.0.0.1:7788
#配置项目路径,项目的所在目录(安全组端口开好)
chdir=/www/wwwroot/NTUVolunteer1/
#配置wsgi接口模块文件路径,也就是wsgi.py这个文件所在的目录名
wsgi-file=NTUVolunteer1/wsgi.py
#配置启动的进程数
processes=4
#配置每个进程的线程数
threads=2
#配置启动管理主进程
master=True
#配置存放主进程的进程号文件
pidfile=uwsgi.pid
#配置dump日志记录
daemonize=uwsgi.log

 启动uwsgi

uwsgi  --ini  uwsgi.ini

出现[uWSGI] getting INI configuration from uwsgi.ini 表明uwsgi运行成功

下面安装nginx

cd /usr/local/
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

配置conf文件

在/usr/local/nginx/conf/中先备份一下nginx.conf文件,以防意外

cd /usr/local/nginx/conf/
cp nginx.conf nginx.conf.bak

然后vim nginx.conf,删除原来内容,写入下面的

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:7788;  #端口要和uwsgi里配置的一样
           uwsgi_param UWSGI_SCRIPT NTUVolunteer1.wsgi;  #wsgi.py所在的目录名+.wsgi
           uwsgi_param UWSGI_CHDIR /www/wwwroot/NTUVolunteer1/; #项目路径
           
        }
        location /static/ {
        alias /www/wwwroot/IP4G/static/; #静态资源路径
        }
    }
}

接着

cd /usr/local/nginx/sbin/
./nginx -t
# 上两步没错再执行下面这条
./nginx

终端没有任何提示就证明nginx启动成功

接着,我浏览器访问出现这个

 linux启动了项目但是页面打不开项目

后来改了项目的ALLOWED_HOSTS加入了服务器公网ip,终于可以了

标签:python,django,nginx,阿里,usr,服务器,cd,local,uwsgi
From: https://blog.csdn.net/weixin_73760234/article/details/141611454

相关文章

  • TCP并发服务器多线程和多进程方式以及几种IO模型
    1.阻塞I/O(BlockingI/O)在阻塞I/O模型中,当应用程序发起I/O操作时,整个进程会被阻塞,直到操作完成。在这个过程中,应用程序无法执行其他任务,必须等待I/O操作的完成。特点:简单性:编程简单,逻辑清晰,容易理解和实现。低效性:在高并发场景下,由于每个I/O操作都会阻塞整个进程,资......
  • NTFS安全权限和SMB文件共享服务器
    NTFS安全权限右键文件或文件夹属性-->安全可以修改权限基本权限读取允许查看文件、目录的内容、属性写入允许修改文件、添加新的文件扩展允许执行文件或遍历目录修改读取、写入、删除完全控制允许执行所有权限,包括更改权限和拥有权原则最小权限原则......
  • FuAdmin 与 Django-Ninja:打造高效与灵活的后台管理系统
    FuAdmin与Django-Ninja:打造高效与灵活的后台管理系统在现代Web开发中,后台管理系统是必不可少的组成部分。它不仅需要支持强大的数据管理功能,还要具备良好的可扩展性和灵活性。FuAdmin和Django-Ninja是两款在Python社区中备受关注的工具,它们各有特色,且能够无缝集成......
  • 网站提示500.12 服务器错误:Web 服务器上的应用程序正在重新启动怎么办
    当网站提示 500.12InternalServerError 并指出“Web服务器上的应用程序正在重新启动”时,这通常意味着IIS(InternetInformationServices)正在重新启动一个ASP.NET应用程序池。这种情况通常是由于应用程序池的配置问题、应用程序错误或资源问题引起的。以下是解决 500......
  • 网站提示500.11 服务器错误:Web 服务器上的应用程序正在关闭怎么办
    当网站提示 500.11InternalServerError 并指出“Web服务器上的应用程序正在关闭”时,这通常意味着应用程序池(ApplicationPool)在IIS(InternetInformationServices)服务器上已停止运行或正在重启过程中。这种情况通常发生在ASP.NET应用程序中。以下是解决 500.11Internal......
  • 网站提示400 - 请求错误,服务器无法理解客户端的请求怎么办
    当网站提示 400BadRequest 错误时,这意味着服务器无法理解客户端发送的请求。这种错误通常是由于客户端请求的格式有问题或者包含了一些服务器无法处理的信息。以下是解决 400BadRequest 错误的一些常见方法:常见原因URL输入错误:URL中可能存在语法错误或无效的参数。H......
  • 网站提示404 - 页面未找到:服务器无法找到请求的网页怎么办
    当网站提示 404NotFound 错误时,这意味着服务器无法找到客户端请求的网页。这种错误通常是因为页面不存在、URL错误、链接损坏或服务器配置问题等原因造成的。以下是解决 404NotFound 错误的一些常见方法:常见原因页面不存在:请求的页面已被删除或从未存在。URL错误:输......
  • 网站提示405 - 方法不允许:请求中使用了服务器不允许的方法或动作怎么办
    当网站提示 405MethodNotAllowed 错误时,这意味着客户端请求的方法不被服务器允许。这种情况通常发生在客户端尝试使用服务器不支持的HTTP方法(如 PUT, DELETE, TRACE 等)来访问某个资源时。以下是解决 405MethodNotAllowed 错误的一些常见方法:常见原因使用了不支......
  • 计算机毕业设计django+vue共享自习室管理系统【开题+论文+程序】
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景:随着教育资源的日益紧张与学习需求的不断增长,共享自习室作为一种新型的学习空间,逐渐受到广大学生的青睐。它不仅为学生提供了一个安静、专......
  • 服务器型号和阵列卡信息查看
    通过命令行判断服务器的品牌(如Dell或其他)以及获取阵列卡信息,你可以使用一些特定的命令来检查硬件信息。这些命令通常适用于大多数Linux发行版。检查服务器品牌和型号使用dmidecode命令dmidecode命令可以读取系统的DMI(桌面管理接口)表,提供详细的硬件信息,包括制造商、产......