Ubuntu18-的Nginx+uwsgi+django 的部署

首先说了遇到的坑 , 版本的大问题,!!! 这个很重要,我用的是 虚拟机的安装的是 UBuntu18LTS 

   系统  Ubuntu18 LTS

    python版本  py3.6.8

    mysql 8 下载的最新版

 1.   安装 Python3 

         系统自带的版本是python2,py2和py3的区别可以去了解下,个人建议最好用py3,如果有python3的话可以用管

# 请注意不要卸载系统预装的Python,我安装py3.6.8
# 从官网下载 ,看网速,可以在本机下载好后 传到 ubuntu18 上面
sudo wget https://www.python.org/ftp/python/3.6.8/Python-3.6.8.tgz

# 解压
sudo tar -xzvf Python-3.6.8.tgz

# 进入 文件夹 
cd Python-3.6.8

# 安装到/usr/local/python 目录(不用事先创建python目录)
sudo ./configure --prefix=/usr/local/python --with-ssl --enable-optimizations

# 编译
sudo make

# 安装完成后删除源码压缩包与文件夹 
# 创建python与pip软连接
sudo ln -s /usr/local/python/bin/python3.6 /usr/bin/python
sudo ln -s /usr/local/python/bin/pip3.6 /usr/bin/pip

# 然后就可以 使用 python3 ,和 pip3 
# 如何 提示没有 pip3 ,apt-get 安装 pip3
# sudo apt-get install python3-pip 

       

2.   安装 Python3 的虚拟环境

       安装完py3后,一般运行项目都会在python的虚拟环境运行 项目,此时安装python虚拟环境

1. 安装虚拟环境
sudo pip3 install virtualenv   

2. 安装虚拟环境扩展包
sudo pip3 install virtualenvwrapper

3. 编辑家目录下的.bashrc文件,在最后面 添加下面两行代码
# [如果没显示.bashec这个文件  ctrl + h 可以显示]
# 使用vim编辑.bashrc文件
vim  ~/.bashrc

    export WORKON_HOME= $HOME/.virtualenvs  # 虚拟环境的安装目录 
    export VIRTUALENVWRAPPER_PYTHON='/usr/bin/python3.6'  # 安装python的版本 
    source /usr/local/bin/virtualenvwrapper.sh  #虚拟环境的管理,virtualenvwrapper.sh 的路径

4. 以上是虚拟环境文件安装步骤,,,,,,,,接下来是创建虚拟环境和虚拟环境的使用 
        
        4.1 创建虚拟环境命令(python2的虚拟环境)
            mkvirtualenv 虚拟环境名

        4.2 创建python3的虚拟环境
            mkvirtualenv -p python3 虚拟环境的名字

        4.3 进入虚拟环境
            workon 虚拟环境名

        4.4 退出虚拟环境
            deactivate
        
        4.5 查看机器上有多少虚拟环境
            workon 空格 + 两个Tab键
        
        4.6 删除虚拟环境
            rmvirtualenv 虚拟环境名称
        	
        4.7 查看虚拟环境装了那些包
            pip list 

5. 在虚拟环境安装一些包,
	 pip install django # 默认最新版本Django
	 pip install django==2.1.0 # 指定版本安装

6. 从虚拟环境导出版本和指定版本号,并在新环境安装相同版本
	 pip freeze > requirements.txt    // 当前目录下的requirements.txt文件

	 # 创建新环境之后
	 pip install -r requirements.txt

3.  安装 Mysql 

        ubuntu18 安装软件还是比较简单,apt-get 就可以

1. 查看有没有安装MySQL
dpkg -l | grep mysql


2. 安装MySQL:
apt install mysql-server


3. 登录mysql和修改密码 权限,远程登录
   
    3.1 登录 mysql,第一次自己回车 
        mysql -u root -p 

    3.2 设置自己登录密码
        use mysql;                    
 
        #复制的时候不要复制到分号,修改密码123456为你自己的密码。最后再添加分号,语句执行
        update mysql.user set authentication_string=password('123456(你的密码)') where user='root(你的用户名)' and Host ='localhost(你的主机地址)';    
           
        # 这个 很重要!!!,很重要!!!,很重要!!! 不更新的话 更新后登录不了,会提示错误
        update user set  plugin="mysql_native_password";     
           
        # 刷新 
        flush privileges;
         
        quit 

    3.3 重新登录 mysql

        # 重启mysql
        sudo service mysql restart   

        # 接下来可以输入密码登录,密码可以写在-p后,但是不推荐。
        mysql -uroot -p 

    3.4 设置允许远程访问

        #退出数据库,在本地打开MySQL的配置文件
        sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf     
        
        注释掉 bind-addr =127.0.0.1
        
        # 进入 数据库 以root权限进入MySQL命令行,
        # 执行开启权限命令,本示例中MySQL中用户root与密码123456
        grant all on *.* to root@'%' identified by '123456' with grant option;
        
        # 刷新 
        flush privileges;
        
        # 退出数据库,并重启一下数据库
        sudo /etc/init.d/mysql restart

              

3.  安装 Nginx 和 uwsgi

1 .  安装 Nginx

    sudo apt-get install nginx

    1.1  启动服务

            sudo service nginx start

            sudo service nginx stop

            sudo service nginx restart

     1.3   增加服务器配置
            
           1. /etc/nginx/uwsgi_params 

           2. 在项目目录下创建配置文件mysite_nginx.conf,并写入以下内容:
                server {
	                    listen 80 default_server;
	                    listen [::]:80 default_server;
	
	                    #server_name    127.0.0.1 192.168.247.129; #绑定域名
    	                #charset UTF-8;
    	                #access_log      /var/log/nginx/Django_Demo_access.log;
    	                #error_log       /var/log/nginx/Django_Demo_error.log;

    	                #client_max_body_size 75M;

    	                location / { 
        	                include uwsgi_params;
        	                uwsgi_pass 127.0.0.1:8000; # django运行端口
        	                uwsgi_read_timeout 2;
    	                }   

    	                location /static {
		                    #静态文件配置
        	                alias /home/zxx/PyDjango/django_Demo/static;
     	                }

    	                location /media {
        	                # 静态文件配置
        	                alias /home/zxx/PyDjango/django_Demo/static;
 	                    }

                   }
                    # 这里 会一些不一样,我的系统在 sites-enabled 文件夹下一个 默认的deault 文件,我在这里面修改 添加的 server 设置的,这里我看到一些版本不一样,
                    #不过发现设置的时候 只要找到的默认的 listen 80 端口的文件,在这个文件里面修改 添加server 就可以        



2.  安装 uwsgi 
     2.1   python环境内安装 uwsgi

           pip install uwsgi  # 一般是进入 虚拟环境配置

     2.2   测试 

           进入 django 项目目录,运行 uwsgi.py 文件(先测试 成功!用runserver 运行成功后 在进行uwsgi)

           uwsgi --http :8080 --module django_Demo.uwsg

     2.3   配置uwsgi 启动 django 项目
           在manage.py 的同级目录,新建一个 uwsgi.ini文件 ,文件里面 配置以下这些内容(根据自己情况修改)
           用 uwsgi --ini uwsgi.ini ((你自己新建的名字) 启动django项目 
            
            [uwsgi]  #这个 一定要有,一定一定一定!!! [uwsgi]
            #监听的端口
            #socket是用nginx来测试时用的
            socket = 127.0.0.1:8000
            #http-socket = :8000

            #用uwsgi单独测试时用
            #http = :8000

            # (这个可以根据自己的项目需求进行设定)
            buffer-size  = 65536

            #指定和nginx进行套接字通信的方式:端口或文件
            #socket = 127.0.0.1:8000
            #socket = /home/kzzf/project/OfferHelp/OfferHelp.sock

            #项目所在目录,和manage.py同级
            chdir = /home/zxx/PyDjango/django_Demo

            #虚拟环境所在目录
            home=/home/zxx/PyVirtualenv/Test
            PYTHONHOME = /home/zxx/PyVirtualenv/Test/bin

            #主应用中的wsgi文件
            module = django_Demo.wsgi

            #使用路由代理静态资源,但失败了
            #static-safe=/home/kzzf/project/OfferHelp/static/
            #route = /static/(.*) static:/home/kzzf/project/OfferHelp/static/$1

            #代理静态资源:路径映射
            #static-map = /static=/home/zxx/PyDjango/django_Demo/collet_static

            #启动一个master进程,来管理其余的子进程
            master=true
            processes = 4
            threads = 2

            #保存主进程的pid,用来控制uwsgi服务
            pidfile=/home/zxx/PyDjango/django_Demo/uwsgi.pid

            #启动项目  uwsgi uwsgi.ini
            #uwsgi --stop/reload xxx.pid  停止/重启uwsgi

            #设置后台运行,保存日志
            #daemonize=/home/zxx/PyDjango/django_Demo/log/uwsgi.log
            #deamonize=1  ; 用来配置background运行

            #设置每个工作进程处理请求的上限,达到上限时,将回收(重启)该进程。可以预防内存泄漏
            max-requests=5000

            # 服务停止时自动移除unix Socket和pid文件
            vacuum=true

          

 

4.  外部访问

     使用 ip a 查看 虚拟机的静态 ip 地址 , 

     进入虚拟环境的 django项目路径  执行 uwsgi --ini uwsgi.ini

     然后 外部就可以 通过 ip 访问了,!!! 

                                                

  

小白使用 虚拟机 UBuntu18 LTS 部署 django 项目,欢迎大佬指正

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章