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