Linux项目部署发布

1.部署环境准备,准备python3和虚拟环境解释器,virtualenvwrapper
pip3 install -i https://pypi.douban.com/simple virtualenvwrapper

2.修改python3的环境变量,写入到/etc/profile中
PATH=/opt/python36/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/opt/ruby/bin/:/root/bin
3.修改~/.bashrc
写入变量

4.新建一个虚拟环境  s15vuedrf
mkvirtualenv  s15vuedrf

5.准备前后端代码
wget https://files.cnblogs.com/files/pyyu/luffy_boy.zip
wget https://files.cnblogs.com/files/pyyu/07-luffy_project_01.zip
如果代码在本地,传到服务器 使用 lrzsz 和xftp工具

(lfxc) [root@localhost lfxc]# yum install unzip

6.解压缩代码
unzip luffy_boy.zip
unzip 07-luffy_project_01.zip

7.从vue前端代码搞起
    1.准备node打包环境
    wget https://nodejs.org/download/release/v8.6.0/node-v8.6.0-linux-x64.tar.gz
    
    2.解压缩node包,配置环境变量,使用npm和node命令
    (lfxc) [root@localhost lfxc]# tar -zxvf node-v8.6.0-linux-x64.tar.gz
    
    进入node文件夹
    (lfxc) [root@localhost lfxc]# cd node-v8.6.0-linux-x64
    
    列出node文件夹内容
    (lfxc) [root@localhost node-v8.6.0-linux-x64]# ls
    bin  CHANGELOG.md  include  lib  LICENSE  README.md  share

切换到bin目录下面
    (lfxc) [root@localhost node-v8.6.0-linux-x64]# cd bin
    (lfxc) [root@localhost bin]# ls
    node  npm  npx
    
    添加环境变量(看结尾处)
    vi /etc/profile
    PATH=/opt/python37/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/opt/enn/lfxc/node-v8.6.0-linux-x64/bin
    
    更新配置文件,让其生效
    source /etc/profile
    
    
    检测node和npm
    (lfxc) [root@localhost node-v8.6.0-linux-x64]# cd bin
    (lfxc) [root@localhost bin]# ls
    node  npm  npx
    (lfxc) [root@localhost bin]# node -v
    v8.6.0
    (lfxc) [root@localhost bin]# npm -v
    5.3.0

4.安装vue项目所需的包
    切换到项目前台目录文件下
    cd /opt/s15vuedrf/07-luffy_project_01
    执行npm install  
    创建了文件夹node_modules
    执行npm run build
    创建了文件夹dist
    这两条都正确配置之后,就会生成一个 dist 静态文件目录,整个项目的前端内容和index.html都在这里了
    
    5.等待nginx加载这个 dist文件夹

8.部署后端代码所需的环境
1.激活虚拟环境
workon s15vuedrf

2.通过一条命令,导出本地的所有软件包依赖
pip3 freeze >  requirements.txt

3.将这个requirements.txt 传至到服务器,在服务器的新虚拟环境中,安装这个文件,就能安装所有的软件包了
pip3 install -r requirements.txt   
这个文件内容如下:项目所需的软件包都在这里了
[root@web02 opt]# cat requirements.txt
certifi==2018.11.29
chardet==3.0.4
crypto==1.4.1
Django==2.1.4
django-redis==4.10.0
django-rest-framework==0.1.0
djangorestframework==3.9.0
idna==2.8
Naked==0.1.31
pycrypto==2.6.1
pytz==2018.7
PyYAML==3.13
redis==3.0.1
requests==2.21.0
shellescape==3.4.1
urllib3==1.24.1
uWSGI==2.0.17.1
        
4.准备uwsgi 支持高并发的启动python项目(注意uwsgi不支持静态文件的解析,必须用nginx去处理静态文件)
1.安装uwsgi
pip3 install -i https://pypi.douban.com/simple uwsgi

2.学习uwsgi的使用方法
通过uwsgi启动一个python文件,例如:test.py
--http 指定http协议
--wsgi-file 指定一个python文件
uwsgi --http :8000 --wsgi-file test.py

通过uwsgi启动django项目,并且支持热加载项目,不重启项目,自动生效新的后端代码
--module 指定找到django项目的wsgi.py文件
uwsgi --http :8000 --module s15drf.wsgi --py-autoreload=1
        
5.使用uwsgi的配置文件,启动项目
1.创建一个uwsgi.ini配置文件,写入参数信息,这个文件建议和Django项目中的manage.py放在同一文件下,方便查找管理。
touch uwsgi.ini

(lfxc) [root@localhost myweb11]# tree
.
├── db.sqlite3
├── manage.py
├── myweb11
│   ├── __init__.py
│   ├── __pycache__
│   │   ├── __init__.cpython-37.pyc
│   │   ├── settings.cpython-37.pyc
│   │   ├── urls.cpython-37.pyc
│   │   └── wsgi.cpython-37.pyc
│   ├── settings.py
│   ├── urls.py
│   └── wsgi.py
└── uwsgi.ini
2 directories, 11 files
                                
[uwsgi]
# Django-related settings
# 指定项目的绝对路径的第一层路径
chdir = /opt/enn/lfxc/myweb11

# 指定项目的 wsgi.py文件
# 写入相对路径即可,这个参数是以chdir参数为相对路径
module = myweb11.wsgi

# 写入虚拟环境解释器的绝对路径
# (lfxc) [root@localhost myweb11]# cdvirtualenv
# (lfxc) [root@localhost lfxc]# pwd
# /opt/enn/lfxc
home = /opt/enn/lfxc

# process-related settings
# master
master = true

# 指定uwsgi启动的进程个数                
processes = 1

# socket指的是,uwsgi启动一个socket连接,当你使用nginx+uwsgi的时候,使用socket参数.
# 没用Nginx时,使用socket参数会报错,错误如下:
# invalid request block size: 21573 (max 4096)...skip
socket = 0.0.0.0:8000
# 这个参数是uwsgi启动一个http连接,当你不用nginx只用uwsgi时,使用这个参数.
#http = 0.0.0.0:8000

# ... with appropriate permissions - may be needed
# chmod-socket = 664
# clear environment on exit
vacuum = true
        
6.使用uwsgi配置文件启动项目
uwsgi --ini  uwsgi.ini

supervisor进程管理工具

1.将linux进程运行在后台的方法有哪些
第一个,命令后面加上 &  符号
python  manage.py  runserver &
第二个 使用nohup命令
第三个使用进程管理工具

2.安装supervisor,使用python2的包管理工具 easy_install. 注意,此时要退出虚拟环境.
执行命令安装easy_install
yum install python-setuptools
执行命令安装supervisor
easy_install supervisor

3.通过命令,生成一个配置文件,这个文件就是写入你要管理的进程任务
echo_supervisord_conf > /etc/supervisor.conf

4.编辑这个配置文件,写入操作  django项目的 命令
vim /etc/supervisor.conf  
直接到最底行,写入以下配置
[program:s15luffy]
command=/opt/enn/lfxc/bin/uwsgi --ini /opt/enn/lfxc/luffy_boy/uwsgi.ini
/opt/enn/lfxc/bin/uwsgi

5.启动supervisord服务端,指定配置文件启动
5.1检查服务端是否启动
[root@localhost ~]# ps -ef |grep super
root       1646   1444  0 19:52 pts/0    00:00:00 grep --color=auto super
5.2启动服务端
[root@localhost ~]# supervisord -c /etc/supervisor.conf
Unlinking stale socket /tmp/supervisor.sock

6.通过supervisorctl管理任务
[root@localhost ~]# supervisorctl -c /etc/supervisor.conf
s15luffy    RUNNING    pid 1833, uptime 0:01:42

7.supervisor管理django进程的命令如下
supervisorctl直接输入命令会进入交互式的操作界面
supervisor> status s15luffy
s15luffy    STOPPED   Jan 05 08:16 PM

supervisor> start s15luffy
s15luffy: started

supervisor> status s15luffy
s15luffy    RUNNING   pid 1871, uptime 0:00:06

supervisor> stop all
s15luffy: stopped

supervisor>

8.启动luffy的后端代码

配置nginx步骤如下
# 查看uwsgi/supervisor进程是否有在运行
[root@localhost myweb11]# ps -ef |grep uwsgi
root  1951  1783  0  20:32 pts/0  00:00:00 grep --color=auto uwsgi
[root@localhost myweb11]# ps -ef |grep super
root  1953    1783  0  20:32 pts/0  00:00:00 grep --color=auto super

# 启动supervisord服务端,指定配置文件启动
[root@localhost myweb11]# supervisord -c /etc/supervisor.conf
Unlinking stale socket /tmp/supervisor.sock

# 启动supervisorctl管理任务,指定配置文件启动
[root@localhost myweb11]# supervisorctl -c /etc/supervisor.conf
s15luffy    RUNNING   pid 1984, uptime 0:00:35
supervisor>

# 网络工具没有安装,会有以下报错!!!
[root@localhost myweb11]# netstat -tunlp
-bash: netstat: command not found
[root@localhost myweb11]# yum install net-tools

# 检查uwsgi是否运行在9000端口上
[root@localhost myweb11]# netstat -tunlp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:9000            0.0.0.0:*               LISTEN      2067/uwsgi          
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      961/sshd            
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      1182/master         
tcp6       0      0 :::22                   :::*                    LISTEN      961/sshd            
tcp6       0      0 ::1:25                  :::*                    LISTEN      1182/master         
udp        0      0 127.0.0.1:323           0.0.0.0:*                           698/chronyd         
udp        0      0 0.0.0.0:68              0.0.0.0:*                           766/dhclient        
udp6       0      0 ::1:323                 :::*                                698/chronyd

1.编译安装nginx
2.nginx.conf配置如下

#第一个server虚拟主机是为了找到vue的dist文件, 找到路飞的index.html
server {
    listen 80;
    server_name 192.168.142.133;
        #当请求来自于 192.168.13.79/的时候,直接进入以下location,然后找到vue的dist/index.html
        location / {
            root   /opt/enn/lfxc/07-luffy_project_01/dist;
            index  index.html;
        }
    }
    
#由于vue发送的接口数据地址是192.168.142.133:8000我们还得再准备一个入口server
server {
    listen 8000;
    server_name  192.168.142.133;
    #当接收到接口数据时,请求url是192.168.142.133:8000就进入如下location
    location /  {
        #这里是nginx将请求转发给uwsgi启动的9000端口
        uwsgi_pass 192.168.142.133:9000;
        # include就是一个“引入的作用”,就是将外部一个文件的参数,导入到当前的nginx.conf中生效
        include /opt/nginx1616/conf/uwsgi_params;
    }
}

3.启动nginx
./sbin/nginx  直接启动
此时可以访问 192.168.13.79  查看页面结果

Linux项目部署发布的更多相关文章

  1. linux项目部署(非前后端分离crm)

    参考博客 参考博客2---部署过程 导论:看参考博客1 WSGI是Web服务器网关接口.它是一个规范,描述了Web服务器如何与Web应用程序通信,以及Web应用程序如何链接在一起以处理一个请求,(接收 ...

  2. Linux -- 项目部署

    一 . 负载均衡 负载均衡其实就是把其中一个服务器用做反向代理, 然后通过访问这个服务器实现负载均衡. 1.准备三台虚拟机 192.168.81.130 192.168.81.131 192.168. ...

  3. linux 项目部署问题

    1.ubuntu 安装 pillow 报错 缺少依赖包 pip install Pillow ValueError: zlib is required unless explicitly disabl ...

  4. linux项目部署常用命令

    原文出处:http://blog.csdn.net/u013628152/article/details/45847013 1:执行命令#find / -name tomcat,系统将列出所有tomc ...

  5. Linux项目部署 jdk tomcat 安装配置 linux下 failed connect to localhost:8080;Connection refused

         ONBOOT=yes 5.安装wget (1)安装 yum -y install wget (2) 查看版本  wget --version或 wget -V 一.安装jdk 配置 (1)安 ...

  6. (转)linux中项目部署和日志查看

    1 查找进程 ps -ef | grep java   查看所有关于java的进程 root     17540     1  0  2009 ?        01:42:27 /usr/java/ ...

  7. 【转】前后端分离的项目如何部署发布到Linux

    前后端分离的项目如何部署发布到Linux 前期准备 1.服务器的基本配置信息2.本机远程连接服务器的工具(xshell.xftp或者mobaXterm等等,看你自己喜欢) 第一步:部署环境 1.安装j ...

  8. Linux上部署web服务器并发布web项目-转

    Linux上部署web服务器并发布web项目   近在学习如何在linux上搭建web服务器来发布web项目,由于本人是linux新手,所以中间入了不少坑,搞了好久才搞出点成果.以下是具体的详细步骤以 ...

  9. .NET Core跨平台:.NET Core项目部署到linux(Centos7)

    1.开篇说明 a 上篇博客简单的说明了一下 使用.NET Core开发的一个总结,地址是:(http://www.cnblogs.com/hanyinglong/p/6442148.html),那么这 ...

随机推荐

  1. node - 写返回mime类型

    何为mime类型?  mime.json { ".323":"text/h323" , ".3gp":"video/3gpp&qu ...

  2. Android学习(三) 自动完成的使用

    1.AutoCompleteTextView 自动完成功能,在文本框中输入字符,会出现匹配的自动提示.类似百度搜索. XML代码 <?xml version="1.0" en ...

  3. PHP中session详解

    SESSION 的数据保存在哪里呢?  当然是在服务器端,但不是保存在内存中,而是保存在文件或数据库中.  默认情况下,PHP.ini 中设置的 SESSION 保存方式是 files(session ...

  4. Git提交时提示‘The file will have its original line endings in your working directory’

    Git提交时提示'The file will have its original line endings in your working directory' Git出现错误 git add -A ...

  5. 【BIEE】08_修改浏览器标题栏显示内容

    打开分析,我们可以看到标题栏中显示的BIEE默认的,现在想要把这个修改为自定义的 打开文件路径: D:\obiee\Oracle_BI1\bifoundation\web\msgdb\l_zh-CN\ ...

  6. java清除所有微博短链接 Java问题通用解决代码

    java实现微博短链接清除,利用正则,目前只支持微博短链接格式为"http://域名/字母或数字8位以内"的链接格式,现在基本通用 如果链接有多个,返回结果中会有多出的空格,请注意 ...

  7. 开源项目UIL(UNIVERSAL-IMAGE-LOADER)

    1 http://www.cnblogs.com/osmondy/p/3266023.html 2 待续

  8. Android服务类Service具体解析

    Service有什么作用? 很多人不明确service是用来干嘛的.事实上Service作为Android四大组件之中的一个,能够理解为一个执行在后台的Activity.它适用于处理一些不干扰用户的长 ...

  9. linux的用户、群组

    1.      用户及passwd文件 1)      掌握/etc/passwd文件的功能:存储所有用户的相关信息,该文件也被称为用户信息数据库(Database). 2)      /etc/pa ...

  10. CAP原则 和BASE

    CAP原则又称CAP定理,指的是在一个分布式系统中,Consistency(一致性). Availability(可用性).Partition tolerance(分区容错性),三者不可得兼 [1]  ...