换了个服务器引发的血案 记 django 运维
经过一番努力成功:个人网站
说说经历的坑吧 一 : 之前是python2 搭建的 ,由于2020年python2就过期了,为了以后不麻烦重新基于python3搭建,现在服务器大部分的默认的python2.7和3.5 1.升级Python版本:
sudo add-apt-repository ppa:jonathonf/python-3.6 //添加3.6版本
sudo apt-get update //升级系统
sudo apt-get install python3.6 //install python3.6版本
2.由于默认调用的python2.7 需要改一下版本优先级
sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.6 2 //()调整Python3的优先级,使得3.6优先级较高
//修改默认python的版本
sudo update-alternatives --install /usr/bin/python python /usr/bin/python2 100
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 150
3 .安装nginx
sudo apt update
sudo apt install nginx
nginx 常用命令
//检查Nginx服务的状态和版本
sudo systemctl status nginx
//查看nginx的版本
sudo nginx -v
//停止止Nginx服务
sudo systemctl stop nginx
//启动
sudo systemctl start nginx
//重新启动
sudo systemctl restart nginx
//在进行一些配置更改后重新加载Nginx服务
sudo systemctl reload nginx
//禁用Nginx服务在启动时启动
sudo systemctl disable nginx
//重新启用
sudo systemctl enable nginx
//查看nginx的.conf文件的位置
sudo nginx -t
4 安装虚拟环境(不要也行)
#放虚拟环境的
sudo mkdir -p /data/env
#放项目的
sudo mkdir -p /data/wwwroot
sudo pip3 install virtualenv
cd /data/env
sudo virtualenv -p /usr/bin/python3 pyweb
启动虚拟环境
source /data/env/pyweb/bin/activate
退出虚拟环境
deactivate
5 上传项目 推荐git
//查看git版本 如果没有的会提示你安装
git -v
安装git
sudo apt-get install git
git -v
对git 不熟悉的话,请到廖雪峰老师的博客学习一遍 配置项目的环境为生产环境(改配置的时候仔细点) cd /data/wwwroot/你的项目
//安装配置文件
sudo pip3 install -r requirements.txt
//8000 端口要释放 测试项目是否能够启动
python3 manage.py runserver 0.0.0.0:8000
如果没错的话,访问http://<你的服务器ip>:8000/,不出意外的话你会看到你项目的页面展示,这是是缺少css等文件的,不用急 6 安装uwsign
sudo pip3 install uwsgi
测试uwsgi
//随便新建一个.py文件这里新建一个hello.py
def application(env,start_response):
start_response('200 OK',[('Content-Type','text/html')])
return [b"Hello world"]
在当前目录下(记着开放端口)
uwsgi --http :8000 --wsgi-file hello.py
关于端口号被占用:
//按端口号查询
lsof -i :8002
//按程序名称查询
ps aux | grep uwsgi
//释放端口号:根据 PID 可以用下面的命令 kill 掉相关程序
sudo kill -9 2208 2209
找个浏览器,访问http://<你的服务器ip>:8000/,不出意外的话你会看到Hello world的,说明uwsgi能正常运行。
control c //取消当前进程
回到项目的根目录 /data/wwwroot/<你的project名字> 新建一个mysite.xml(名字随意其实就是一个配置文件)填写配置,这里来个以.xml配置举例 (其他如.ini 都大同小异)
<uwsgi>
<socket>127.0.0.1:8000</socket><!-- 内部端口自定义 即Python manager.py runserver 8000 -->
<chdir>/data/wwwroot/<你的project名字>/</chdir><!-- 项目的绝对路径路径 -->
<module>你的app的名字.wsgi</module> <!--django项目里面你的app下面的wsgi文件,这里填下相对路径,前面的项目路径都是绝对路径了或者 你的app/你的app的名字.wsgi ; 即你的app的名字.wsgi =你的app/你的.wsgi 文件名字,(这里实际路径就是:项目的绝对路径路径/你的app/你的.wsgi 文件名字)-->
<processes>4</processes> <!-- 进程数 -->
<daemonize>uwsgi.log</daemonize><!-- 日志文件 -->
</uwsgi>
执行uwsgi 命令
uwsgi -x mysite.xml
出错的话请查看uwsgi.log ,自行goole或者百度
7. 配置nginx
获取nginx.conf
//获取配置文件的位置
nginx -t
一般默认在/etc/nginx/nginx.conf
nginx 的详细配置
//这里贴个示例
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
server {
listen 80;
server_name www.django.cn;
charset utf-8;
location / {
include uwsgi_params;
# 要和你uwsgi的配置文件mysite.xml配置一致
uwsgi_pass 127.0.0.1:8000;
uwsgi_param UWSGI_SCRIPT 你的app的名字.wsgi; # 上面都解释的很清楚了
uwsgi_param UWSGI_CHDIR /data/wwwroot/<你的project名字>/; #项目路径
}
location /static/ {
alias /data/wwwroot/mysite/static/; #静态资源路径
}
}
}
完成后
sudo systemctl status nginx
//没启动的启动,启动的reload ,上面都解释过了
sudo systemctl reload nginx
随便打开个浏览器测试 搞定!