美文网首页linux toolslinux
项目上线部署步骤

项目上线部署步骤

作者: 翔阿翔阿翔 | 来源:发表于2019-06-29 14:58 被阅读101次

第一步:安装虚拟机

安装VMware,地址https://filehippo.com/download_vmware-workstation-pro/
然后安装Ubuntu,Ubuntu自己下载

第二步:创建root用户

安装好Ubuntu之后创建一个root用户,这是超级管理员用户,拥有最大权限。

sudo passwd root //创建root用户
//然后终端显示Enter new unix password,输入密码按enter再次输入密码便创建了

然后更新系统

sudo apt-get update

第三步:配置ssh

  • 首先安装ssh服务器
    $ sudo apt-get install openssh-server
  • 修改配置文件
    $ su -
  • 然后
    vim /etc/ssh/sshd_config
  • 修改一下内容
#Authentication:  

LoginGraceTime 120  

#PermitRootLogin without-password  

PermitRootLogin yes  

StrictModes yes  

  • 重启ssh服务
    service ssh restart
  • 通过ifconfig查看ip地址
  • 下载bitvise ssh client就可以通过ip地址连接到虚拟机

第四步:下载安装python以及相关依赖

sudo apt-get -y install libxml2 libxml2-dev python-dev
sudo apt-get install python-pip
//升级pip
pip install --upgrade pip

升级pip之后需要修改文件,安装vim

sudo apt-get install vim-gtk

安装之后

sudo vim /user/bin/pip
//将原来的
from pip import main
//改成
from pip._internal import main

然后安装虚拟环境

//安装
sudo pip install virtualenv
//创建虚拟环境目录
mkdir python27env
//进入目录
cd python27env
//创建虚拟环境
virtualenv envName
//进入虚拟环境
cd envName
//激活虚拟环境
source bin/activate

这样我们就可以在虚拟环境中安装相关依赖,如果我们某个项目需要用到这个虚拟环境,我们就可以进入这个虚拟环境来执行python manage.py runserver

//进入虚拟环境之后安装相关依赖
pip install django==1.11.13  .......
pip install uwsgi

第五步: 安装nginx

//安装依赖
sudo apt-get -y install libpcre3 libpcre3-dev zlib1g-dev software-properties-common
sudo apt-get -y install nginx

注:下面是nginx相关说明,仅供参考。
所有的配置文件都在/etc/nginx下,并且每个虚拟主机已经安排在了/etc/nginx/sites-available下
启动程序文件在/usr/sbin/nginx
日志放在了/var/log/nginx中,分别是access.log和error.log
并已经在/etc/init.d/下创建了启动脚本nginx

  • 可以在项目目录同目录下或者项目目录下创建一个conf文件,文件内容参考
server {
    listen       80;
    server_name  localhost;
    charset utf-8;
    client_max_body_size 75M;   

    location /static {
        alias /opt/web/miniboard/miniboard/static;
    }
    
    location / {
        uwsgi_pass  unix:///var/run/miniboard.sock;
        include     /opt/web/miniboard/uwsgi_params;  //确定项目根目录下有这个文件
    }

    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   html;
    }
}
  • 确保我们的项目目录下有uwsgi_params 和uwsgi.ini文件
    uwsgi.ini文件参考
[uwsgi]

socket      = /var/run/miniboard.sock
chdir       = /opt/web/miniboard //项目目录
module      = miniboard.wsgi:application
home        = /opt/py2env/miniboard //需要运行的虚拟环境
touch-reload    = /opt/web/miniboard/reload

master      = true
processes   = 4

chmod-socket    = 666

env = LANG=en_US.UTF-8

uwsgi_params文件参考

uwsgi_param QUERY_STRING        $query_string;
uwsgi_param REQUEST_METHOD      $request_method;
uwsgi_param CONTENT_TYPE        $content_type;
uwsgi_param CONTENT_LENGTH      $content_length;

uwsgi_param REQUEST_URI     $request_uri;
uwsgi_param PATH_INFO       $document_uri;
uwsgi_param DOCUMENT_ROOT       $document_root;
uwsgi_param SERVER_PROTOCOL     $server_protocol;
uwsgi_param UWSGI_SCHEME        $scheme;

uwsgi_param REMOTE_ADDR     $remote_addr;
uwsgi_param REMOTE_PORT     $remote_port;
uwsgi_param SERVER_PORT     $server_port;
uwsgi_param SERVER_NAME     $server_name;
  • 这样我们就可以将项目跟nginx软连接了
sudo ln -s /opt/web/nginx.conf /etc/nginx/sites-enabled/  
// /opt/web/nginx.conf就是刚才我们自己创建的那个conf文件,不是nginx目录下的conf
//检查一下无误
sudo nginx -t

这样我们就可以通过 uwsgi --ini uwsgi.ini来运行服务器而不是python manage.py runserver

最后一步: 通过supervisor来进行进程管理

  • 安装
apt- get install supervisor

安装成功后,会在/etc/supervisor目录下,生成supervisord.conf配置文件。
conf基本不用修改
进程配置会读取/etc/supervisor/conf.d目录下的*.conf配置文件,我们在此目录下创建一个projectName.conf进程配置文件:

[program:projectName]
command=/opt/web/sh_project.sh //这个是sh文件的位置,需要你自己创建配置,这里只需保证路径正确就行
user=root
autorestart=true
redirect_stderr=true
startsecs=0
stopwaitsecs=0
autostart=true
stdout_logfile=/var/log/supervisor/androidSync.log

在刚才配置supervisor时创建的conf指定的路径下创建一个sh_project.sh文件
里面写入shell命令

#!/bin/sh
ps aux | grep "uwsgi" | grep -v grep| cut -c 9-15|xargs kill -9 //筛选并杀死该进程
cd /opt/py2env/project  //进入项目的虚拟环境
. bin/activate //激活虚拟环境
cd /opt/web/project //在虚拟环境下进入项目目录
uwsgi --ini uwsgi.ini  //启动项目

给文件赋予权限

chmod +x /opt/web/sh_projectname.sh

更新一下

supervisorctl update projectName
//这里的projectName要跟刚才的配置文件里面的[program:projectName]一致
  • 配置好之后,我们便可以通过supervisor来进行进程管理
supervisorctl start project //启动项目
supervisorctl stop project //暂停目录
supervisorctl restart project //重启项目

相关文章

网友评论

    本文标题:项目上线部署步骤

    本文链接:https://www.haomeiwen.com/subject/oexpcctx.html