安装python3.6

第一步:sudo add-apt-repository ppa:jonathonf/python-3.6

如果报错为:sudo: add-apt-repository: command not found

则执行:sudo apt-get install software-properties-common python-software-properties    之后,再次执行上一步

第二步:apt-get update

第三步:apt-get install python3.6

python3.6版本的pip安装

https://blog.csdn.net/xiaoming0018/article/details/83146191

先安装 apt-get中 需要安装的包,然后再安装 pip中的包

apt-get中需要安装的包:

sudo apt-get install python3.6-dev

sudo apt-get install mysql-server

service mysql start

sudo apt-get install mysql-client

sudo apt-get install redis-server

安装 nginx: https://www.cnblogs.com/EasonJim/p/7806879.html

部署虚拟环境

现在非虚拟环境下安装好python3.6

sudo pip install virtualenv   #安装虚拟环境需要的包

virtualenv -p /usr/bin/python3.6 venv  #创建带有python3.6的虚拟环境(自动包含pip对应版本,一定要指定python运行版本)

virtualenv -p /usr/bin/python2.7 venv  #创建带有python2.7的虚拟环境(自动包含pip对应版本,安装supervisor时需要,后续对supervisor的操作,也要在此环境中)

cd venv   #进入到虚拟环境的目录

source bin/activate  #进入虚拟环境 成功后,命令行开头 有 (venv)

安装pip的包

pip install -r file.txt   #安装pip相关包(linux系统中去掉pywin32的包安装命令,并且出现 successfully字样 才是安装成功),先进入虚拟环境

在安装 pip install mysqlclient 报错如下:

 /bin/sh: 1: mysql_config: not found     

Traceback (most recent call last):       

File "<string>", line 1, in <module>       

File "/tmp/pip-install-sr_0u6nl/mysqlclient/setup.py", line 16, in <module>         

metadata, options = get_config()       File "/

先安装   apt-get install libmysqlclient-dev  

安装supervisor

如果 调换了python版本的优先级,把python3.6设置为最高优先级,在使用pip2.7命令时,如果报错如下:

root@zhimeng:/usr/bin# pip2
Traceback (most recent call last):
File "/usr/bin/pip2", line , in <module>
load_entry_point('pip==8.1.1', 'console_scripts', 'pip2')()
File "/usr/lib/python3/dist-packages/pkg_resources/__init__.py", line , in load_entry_point
return get_distribution(dist).load_entry_point(group, name)
File "/usr/lib/python3/dist-packages/pkg_resources/__init__.py", line , in load_entry_point
raise ImportError("Entry point %r not found" % ((group, name),))
ImportError: Entry point ('console_scripts', 'pip2') not found

则  打开错误提示中的“/usr/bin/pip2”文件,把文件中第一行的“#!/usr/bin/python”改为“#!/usr/bin/python2” 即可

原文网址如下:https://blog.csdn.net/llf_cloud/article/details/80160494

./bin/pip2.7 install supervisor  #通过pip2.7安装 superviosr(因为supervisor不支持python3)

echo_supervisord_conf > supervisord.conf  #生成superviosr配置文件   https://blog.csdn.net/wr166/article/details/79051725   在python2的环境下用supervisor来运行python3的web项目

vi supervisor.conf #打开后,输入相关配置

supervisord -c supervisord.conf  #通过配置文件启动supervisor服务

deactivate  #退出虚拟环境        # https://blog.csdn.net/charlie_heng/article/details/60573688    supervisor 在python3下的简易解决方案

防火墙/端口 开启和关闭

开启防火墙: ufw enable

关闭防火墙:ufw disable

开启防火墙的端口 :ufw allow 端口号; 如:ufw allow 5000

关闭防火墙的端口:ufw deny 端口号;

重启防火墙:ufw reload

查看防火墙端口的状态: ufw status

测试远程主机的端口是否开启:  telnet 192.168.1.103 80

启动服务并外网可以访问:

supervisor 中的配置文件(修改后,一定要 supervisorctl reload 命令 进行 重载配置文件):

[program:fws] #项目名
directory= /home/ubuntu/fws  #项目位置
environment = PATH='home/ubuntu/venv/bin'  #环境
command= /home/ubuntu/venv/bin/python3.6 run.py #运行命令
autostart = true #自动启动
startsecs = 1
autorestart = true #自动重启
stopasgroup = true 
killasgroup = true
user = ubuntu
stdout_logfile = /home/ubuntu/fws/logs/supevisor.log #输出日志
stderr_logfile = /home/ubuntu/fws/logs/supevisor_err.log #错误日志

run.py文件内容:

from fws import app

if __name__ == '__main__':
app.run(host='10.104.136.123',port=5000) #host为内网地址,端口号要检查外网是否可以访问,并且 阿里云 安全组要有此端口

nginx配置内容:

worker_processes  1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
log_format main escape=json '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for" "$request_body"';
access_log /home/ubuntu/fws/logs/nginx.log main;
error_log /home/ubuntu/fws/logs/nginx_err.log;
sendfile on;
keepalive_timeout 65;
server {
listen 8080;
location / {
proxy_pass http://10.104.136.123:5000;
proxy_set_header X-Real-Ip $remote_addr;
}
location ^~ /index.html {
alias /home/web/fws/fws/static/dist/;
}
location /static {
alias /home/web/fws/fws/static/;
}
} }

然后启动 supervisor,和nginx即可

gunicorn在 supervisor中启动的方式():

[program:oly]

directory       = /data/wwwroot/project
# 如果指定gunicorn为虚拟环境,则gunicorn路径为虚拟环境路径
# command         =/data/wwwroot/olympus/venv/bin/gunicorn -w 4 -b 0.0.0.0:5000 -t 160 manage:app   
user            = root
startsecs = autorestart =true
redirect_stderr =true stdout_logfile_maxbytes = 50MB
stdout_logfile_backups =
stdout_logfile=/data/wwwlogs/olympus/olympus_supervisor.log loglevel=info

linux系统,mysql开启远程连接(先保证安全组和防火墙对应的3306端口开启) :https://www.cnblogs.com/chenjw-note/p/5887908.html

netstat -tunlp |grep 端口号,用于查看指定的端口号的进程情况,如查看8000端口的情况,netstat -tunlp |grep 8000

其他相关命令记录

pip list --format freeze   # pip 列表

pip install -r file.txt   #pip批量安装

pip -V   #查看对应的python编译版本

whereis python3.6   #查看安装路径

https://www.cnblogs.com/yjlch1016/p/8641910.html       Ubuntu怎样安装Python3.6,pip

https://blog.csdn.net/San_South/article/details/80715682      Ubuntu16.04上pip报错ModuleNotFoundError: No module named 'pip._internal'

https://blog.csdn.net/wangtaoking1/article/details/51554959      安装Python mysqlclient出现“OSError: mysql_config not found”错误

https://blog.csdn.net/meteor_s/article/details/79115360             Error记录--ImportError: No module named apt_pkg

error: command 'x86_64-linux-gnu-gcc' failed with exit status 1     需要根据python版本安装对应的python-dev包,如apt-get install pyton3.6-dev

ubuntu环境部署项目的更多相关文章

  1. Linux环境部署项目引起Out of Memory Error: PermGen Space的解决方案

    1. 背景 前几天,在搭建项目时遇到到一些问题,现在整理记录一下. Linux环境:Red Hat Enterprise Linux Server release 6.4: # 查看命令cat /et ...

  2. Vue项目上线环境部署,项目优化策略,生成打包报告,及上线相关配置

    Node.js简介 Node.js是一个基于Chrome V8引擎的JavaScript运行环境,用来方便快速地搭建易于扩展的网络应用.Node.js使用了一个事件驱动.非阻塞式I/O的模型,使其轻量 ...

  3. NodeJS项目迁移兼Ubuntu下NodeJS环境部署

    前言 之前做的几个项目都托管在阿里云服务器,但是最近要到期了.想着到底要不要续期,毕竟100/月.后面看着阿里云有个活动,800/三年.果断买下.环境部署折腾了一天,其中也遇到几个坑. 目录 一.安装 ...

  4. Linux Ubuntu从零开始部署web环境及项目 -----部署项目 (三)

    上一篇讲了如何在linux搭建web环境,这边将如何部署项目. 1,打包项目包 2,上传项目包 将.war项目包通过xftp上传到tomcat目录wabapps目录下 3,启动项目 通过xshell命 ...

  5. 分布式版本库——Windows下Git的环境部署以及在GitHub上开源自己的项目

    分布式版本库--Windows下Git的环境部署以及在GitHub上开源自己的项目 这几天着实忙的焦头烂额,可惜不是搞技术,今天周日,难得闲下来,写篇大家都想学习的Git教程,其实廖雪峰老师的网站已经 ...

  6. Linux:Ubuntu下部署Web运行环境

    Linux:Ubuntu下部署Web运行环境 本次博客将会从三部分内容详述Ubuntu系统下Web运行环境的配置: 依次是:FTP服务器的搭建.MYSQL数据库的搭建.JDK的安装等. 参考文章如下: ...

  7. ubuntu Django + Uwsgi + Nginx 的生产环境部署

    一.概述 使用runserver可以使我们的django项目很便捷的在本地运行起来,但这只能在局域网内访问,如果在生产环境部署django,就要多考虑一些问题了.比如静态文件处理,安全,效率等等,本篇 ...

  8. Ubuntu部署项目

    一.Ubuntu目录结构 目录 说明 bin 存放二进制可执行文件(ls,cat,mkdir等) .exe== boot 存放用于系统引导时使用的各种文件 开机引导 dev 用于存放设备文件 打印机啥 ...

  9. jenkins+git+maven搭建自动化部署项目环境

    简介    折腾了两个晚上,趁着今晚比较有空,把jenkins+git+maven搭建自动化部署项目环境搭建的过程记录一下,这里我把github作为git的远程仓库(https://github.co ...

随机推荐

  1. D2 有关写博客新的体会以及面向对象

    之前几篇博客一大堆废话,着实浪费时间也没啥实际作用.除了总结一些java的知识点外,再用一些比喻或者形象化的语言来表述这些知识点,无可厚非.但是,现在看来,应当减少这种堆满偏理论式偏方法性的内容的博客 ...

  2. leetcode 222.Count Complete Tree Nodes

    完全二叉树是从左边开始一点点填充节点的,因此需要计算所有的节点的个数. 则分别从左边和右边来进行传递的,当左右是完全二叉树的时候,其节点个数就是pow(2,h)-1. /** * Definition ...

  3. Maven配置pom.xml,正在下载时网络不佳下载失败的解决方案

    环境:jdk1.7.0_17,Myeclipse 10,apache-maven-3.2.5 配置项目中pom.xml的dependencies时 ,如果本地仓库没有的话,就会自动下载.找不到仓库位置 ...

  4. PTA——求n以内k个质数和

    PTA 7-51 求n以内最大的k个素数以及它们的和 #include<stdio.h> #include<math.h> int isPrime(int n); int ma ...

  5. SpringMVC中post请求参数注解@requestBody使用问题

    一.httpClient发送Post 原文https://www.cnblogs.com/Vdiao/p/5339487.html public static String httpPostWithJ ...

  6. [原] inline operator delete & DLL boundary

    很久以前写在百度空间的这篇文章: [百度空间] [原] 全局operator delete重载到DLL 首先,纠正一个词“重载”,operator new/delete是替换(replacement) ...

  7. 注册Docker Hub、以及Push(九)

      一.注册   1.使用浏览器打开官网的时候,发现注册按钮点不了       2.下载google访问助手,添加到浏览器         下载地址:http://www.ggfwzs.com/,根据 ...

  8. Python之 Virtualenv简明教程

    virtualenv通过创建独立Python开发环境的工具, 来解决依赖.版本以及间接权限 问题. 比如一个项目依赖Django1.3 而当前全局开发环境为Django1.7, 版本跨度过大, 导致不 ...

  9. ORACLE数据库在导入导出时序列不一致的问题

    ORACLE数据库在导入导出时序列不一致的问题   在使用ORACLE数据库时,当给一个表设置自增字段时,我们经常会使用到序列+触发器来完成.但当你需要对数据库进行导入导出时,序列很容易出问题. 当你 ...

  10. C++vector针对排序操作练习

    目的: 定义5个学生,包含名字和分数,对成员进行从大到小排序,并输出 #include <iostream> #include <cstring> #include <v ...