换了个服务器引发的血案 记 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		 

随便打开个浏览器测试 搞定!

评论