源码安装python +NGINX 的坎坷路 +uwsgi安装 部署django 的CRM项目
一、Nginx安装(基于ubuntu17.10 版本)
首先我们是基于源码安装,主要有如下步骤
1、安装依赖包
1、安装gcc g++的依赖库 sudo apt-get install build-essential sudo apt-get install libtool 2、安装pcre依赖库 sudo apt-get update sudo apt-get install libpcre3 libpcre3-dev 3、安装zlib依赖库 sudo apt-get install zlib1g-dev 4、安装SSL依赖库 sudo apt-get install openssl 说实话我一直不知道为什么linux安装个软件需要先安装依赖包这个东西,有时间查询一下,不过如果你要安装nginx,请相信我,一定要执行上述步骤。
2 、安装过程
wget http://nginx.org/download/nginx-1.13.6.tar.gz #下载nginx安装包 #解压: tar -zxvf nginx-1.13.6.tar.gz #解压安装包 #进入解压目录: cd nginx-1.13.6 #配置: ./configure --prefix=/usr/local/nginx #配置安装目录 #编译: make #安装: sudo make install #启动: sudo /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf 注意:-c 指定配置文件的路径,不加的话,nginx会自动加载默认路径的配置文件,可以通过-h查看帮助命令。 #查看进程: ps -ef | grep nginx #查看当前运行的进行,如果nginx已经运行,可以通过0.0.0.0:80 进行访问了 以上都是最友好的过程,请看下面安装过程遇到的坑
3、安装过程踩的坑
1、 一开始,安装完成时,启动nginx ,会提示无法绑定80端口。
其实就是被占用了,so
1 killall -9 nginx(先停掉nginx)
2 service nginx restart
2、make 编译的过程,提示编译有警告变为错误,一直编译不成功
export CFLAGS = "-Wno-error"
我记得export 是获取环境变量的,这个也是对环境变量做一些配置,就能解决这个问题,具体是怎么个原理,哥也不清楚。反正有效果。
3、还有一个好像是启动nginx时候,提示权限的问题,其实就是用户权限不过,给用户加一个root用户的权限组,或者直接sudo su 切换到root用户即可
二、源码安装python3
安装老套路,先安装依赖包,然后下载安装包,第三部编译安装
1、安装依赖
1、sudo apt-get update #更新软件源 2、安装依赖 sudo apt-get install -y gcc make build-essential libssl-dev zlib1g-dev \ libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev \ libncursesw5-dev xz-utils tk-dev libffi-dev liblzma-dev ---------------------
2、下载源码、解压、配置暗装
2.下载python源代码 wget https://www.python.org/ftp/python/3.4.7/Python-3.4.7.tar.xz 3.解压缩python源代码 xz -d Python-3.4.7.tar.xz tar -xf Python-3.4.7.tar 4.切换进入python源代码目录 cd /opt/Python-3.4.7 5.开始编译安装,释放编译文件 ./configure --prefix=/opt/python347/ #此时还不会生成这个文件夹!这一步的作用你可以理解成先检测一遍你的安装平台,然后指定一下安装目录 6.开始编译,编译安装 make make install #直到这两步走完,才会生成。创建/opt/python347/
3、首先去执行一下python有没有问题,没有问题,去设置永久的环境变量
1、rm /usr/bin/python3 #删除原有的软连接2、添加一个新的软连接 ln -s /usr/python371/bin/python3 /usr/bin/python3设置一些永久的环境变量3、vim /etc/profile2、export PATH=/usr/python3/bin:$PATH3、source /etc/profile
三、python 和nginx都安装好了也测试好了,下面是去下载一个django ,然后去执行一下django,看看能不能正常访问
1、使用豆瓣源安装django真的超级快,这个说起来有一个坑,就是我,孕妈下载python的时候,那十几k的下载,我都呀崩溃了
pip install -i https://pypi.doubanio.com/simple/ Django 你可能想问,能不能指定安装版本,我也不知道能不能,妮可google一下。
2、启动django
安装启动django #创建django项目 django-admin startproject mysite #修改django settings.py配置文件 ALLOWED_HOSTS = ['*'] #启动django python3 manage.py runserver 0.0.0.0:9000 #可能出现的问题 网页访问不到 解决办法: iptables -F setenforce 0 关闭防火墙 因为我用的不是啥虚拟机,我直接弄了一开电脑,安装了一个ubuntu ,所以,在指定ip+port时,我用的是ubuntu的实际ip 192.168.0.12:8000.才能访问。如果是虚拟机好像用上面的没啥关系。
四、介绍两个好玩的东西,一个是virtualenv模块 ,一个是virtualenvwrapper
1、virtual
先介绍virtualenv ,从英文上就能看出来就是虚拟环境简写,这个是python的一个模块,能够穿件虚拟环境。
这玩意的原理 ,简单来理解,就是复制出一份python解释器可以执行的一个环境。然后你可以在这个环境下在做一些事情,和你实际的物理环境隔离,相互不影响。
安装virtualenv: #通过pip3安装 pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple virtualenv #创建虚拟环境 venv(venv就是一个环境命名) virtualenv --no-site-packages --python=python3 venv 后面这个--python=python3 是说指定复制哪一个解释器
#激活虚拟环境,进入虚拟环境!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!() 重点,这个虚拟环境不是什么虚拟的linux,只是复制了一份python解释器! #激活虚拟环境 source /data/mydjango1.11.15/venv/bin/activate #退出虚拟环境 decactive #此时你的环境变量,已经被修改,添加了虚拟环境 可以查看echo $PATH
2、确保开发环境一致
安装完虚拟环境后,还有一个非常重要的一步,就是这个确保开发环境一致,我们想一个问题,我们的django都是在window环境下进行安装的,和写代码的
确保开发环境一致性的操作
二、确保开发环境的一致性
1.假设我们在本地开发环境,准备好了项目+依赖包环境
2.现在需要将项目上传至服务器,上线发布
3.那么就要保证服务器的python环境一致性
复制代码
解决方案:
1.通过命令保证环境的一致性,导出当前python环境的包
pip3 freeze > requirements.txt #这个文件重定向后,文件的位置在C盘的用户下面,例如我自己的重定向后(C:\Users\gsl)
这将会创建一个 requirements.txt 文件,其中包含了当前环境中所有包及 各自的版本的简单列表。
可以使用 “pip list”在不产生requirements文件的情况下, 查看已安装包的列表。
2.上传至服务器后,在服务器下创建virtualenv,在venv中导入项目所需的模块依赖
需要将这个文件上传到虚拟环境的目录下
然后执行这条命令
pip3 install -r requirements.txt
3、关于virtualenvwrapper
这个东西就是用来管理虚拟环境的,让我们使用虚拟环境操作更加简便一些(这个东西有一步安装,哥们直接把python所有依赖都删除掉了,然后我就跪,重新装的系统)
1、先创建一个路径用来管理虚拟环境的 mkdir ~/envs 2.vim ~/.bashrc #打开这个文件,写入下面三行信息(根据自己目录结构修改参数) export WORKON_HOME=~/envs #设置virtualenv的统一管理目录 VIRTUALENVWRAPPER_PYTHON=/usrpython371/bin/python3 #赋值一个virtualenvwrapper变量,这个也可以不写,可以通过 mkvirtualenv --python==/usr/bin/python3 ,或者指定自己源码安装的路径 source /opt/python347/bin/virtualenvwrapper.sh #执行virtualenvwrapper安装脚本 3、source ~/.bashrc #读取一下系统变量,然后永久生效
关于virtualenvwrapper的相关命令
基本使用virtualenvwrapper,管理virtualenv
创建一个虚拟环境,默认会激活当前这个虚拟环境
mkvirtualenv my_django115
#任意切换不同的虚拟环境,workon提供tab补全功能,非常方便
workon my_django115
workon my_django2
这个命令非常方便的用法就是,在物理环境下,快速进入虚拟环境
当然也可以手动停止虚拟环境
deactivate
删除虚拟环境,需要先退出虚拟环境
rmvirtualenv my_django115
lsvirtualenv
列举所有的环境。
cdvirtualenv
导航到当前激活的虚拟环境的目录中,比如说这样您就能够浏览它的 site-packages 。
cdsitepackages
和上面的类似,但是是直接进入到 site-packages 目录中。
lssitepackages
显示 site-packages 目录中的内容。
完整官网介绍:https://virtualenvwrapper.readthedocs.io/en/latest/command_ref.html
大爷的,就上面这些不断采坑,大概就花了我2天时间
四、(开始进入正戏了)安装uwsgi
1、apt-get install uwsgi (这个是在虚拟环境下安装的) 2、创建uwsgi配置文件 uwsgi.ini (这个文件的路径也只要在虚拟环境下就好,就是一个启动uwsgi的配置文件) [uwsgi] #使用nginx连接时使用 socket=0.0.0.0:9000 #不用nginx直接当做web服务器使用 #http=0.0.0.0:9000 #项目目录绝对路径(django项目的绝对路径) chdir=/root/Envs/django15/mysite15 #wsgi文件路径,在项目底下(django项目下面的wsgi文件) wsgi-file=mysite15/wsgi.py #指定解释器目录 home=/root/Envs/django15 processes=4 threads=2 master=True pidfile=uwsgi.pid
五、配置 nginx转发请求到uwsgi
配置nginx支持转发uwsgi请求
主要修改配置如下:
#负载均衡池 ,这个负载均衡就是nginx分发服务端请求的规则,
#upstream 后面指定分发的 服务器组 ,里面是具有相同服务的服务器们
#nginx 负载均衡支持2中,一种是轮询,就是循环分发情况,一种是权重。指定weight。
upstream django {
server 0.0.0.0:9000 weight=10;
}
#gzip on;
#虚拟主机标签段,在这定义mytb.com
server {
listen 80;
server_name www.s12django.com;
location /
#访问nginx的根路径时,转发请求给uwsgi的8000端口,这里要和uwsgi.ini写的一致
include /opt/nginx1-12/conf/uwsgi_params;
uwsgi_pass django;
#root /opt/static/mytb/;
#index index.html index.htm;
}
#nginx处理静态资源配置
location /static {
alias /opt/static/django;
}
六、nginx配置静态资源
首先我们现在做的事情是,nginx接到client请求,将请求分发给uwsgiServer进行处理,而我们说nginx只返回静态文件(html、js、css)所以就要将我们的静态文件指定的放在nginx的一个能读取到的目录下 ,就是上述的那个 ,nginx 处理静态资源配置的那个路径,这个路径是自定义的。
.配置django项目,收集静态文件(这两步的作用是,将我们用到的静态文件,放到nginx的静态文件目录下) #关闭debug模式 debug=False #收集静态文件的目录,静态文件内容都放这里了(要保证和nginx配置的是一致的路径,不然你的页面非常丑) STATIC_ROOT='/opt/static/django'(这个路径需要自己先创建一下) STATIC_URL = '/static/' STATICFILES_DIRS=[ os.path.join(BASE_DIR,"static"), ] .执行命令统一收集静态文件,使得网站正常加载js,css python3 manage.py collectstatic
7、安装一个叫做supervisor的进程管理工具
为什么要这个东西是因为,我们uwsgi是一个webserver ,我们一直用手工去重启有点麻烦,直接配置这个东西,我们管理uwsgi简单一些。当然这个东西不是必要的
1、apt-get supervisor
2.生成supervisor配置文件
echo_supervisord_conf > /etc/supervisord.conf
3.添加进程管理命令
[program:my_django15] 给你要管理的usgi起个名字
#这个地方要配置好 ,就是前面你安装的uwsgi的文件,用这个你自己配置的启动ini文件启动的意思。
command=/root/Envs/django15/bin/uwsgi --ini /root/Envs/django15/mysite15/uwsgi.ini
4.启动supervosr,管理uwsgi
supervisord -c /etc/supervisord.conf #启动supervisor
supervisorctl #开始进程管理
start django15
stop django15
八、如果以上无误,就可以正常访问到了。
有一个地方 ,忘记记录了 ,就是关于nginx虚拟主机设置域名的时候,这个我们在windows下访问,找到hosts 文件的路径,将域名和ip+端口配置一下要。不然,你访问的域名,解析不到正确额ip会提示访问不到。
源码安装python +NGINX 的坎坷路 +uwsgi安装 部署django 的CRM项目的更多相关文章
- Linux 源码编译Python 3.6
Linux 源码编译Python 3.6 1.操作系统以及版本显示 # uname -sr Linux 3.10.0-514.el7.x86_64 # uname -sr Linux 3.10.0-5 ...
- SUSE10 SP4源码升级Python到2.6.6
1.安装依赖包(CentOS可采用yum) zypper in gcc gcc-c++ openssl-devel-32bit openssl-devel readline-devel readlin ...
- linux和windows下安装python拓展包及requirement.txt安装类库
python拓展包安装 直接安装拓展包默认路径: Unix(Linux)默认路径:/usr/local/lib/pythonX.Y/site-packagesWindows默认路径:C:\Python ...
- centos7下采用Nginx+uwsgi来部署django
之前写过采用Apache和mod_wsgi部署django,因为项目需要,并且想比较一下Nginx和Apache的性能,尝试采用Nginx+uwsgi的模式来部署django. 1.安装uwsgi以及 ...
- Centos 7.x 源码编译搭建Nginx
环境: centos 7 防火墙关闭 Selinx关闭 Nginx Web安装 安装依赖库 yum install pcre-devel pcre gcc gcc-c++ zlib zlib-deve ...
- django源码分析 python manage.py runserver
django是一个快速开发web应用的框架, 笔者也在django框架上开发不少web应用,闲来无事,就想探究一下django底层到底是如何实现的,本文记录了笔者对django源码的分析过程 I be ...
- flask 源码专题(八):路由加载
1.示例代码 from flask import Flask app = Flask(__name__,static_url_path='/xx') @app.route('/index') def ...
- vs2008 c#项目调试dll源码,问题:“若要调试此模块,请将其项目生成配置更改为“调试”模式” 的解决方案
情况: 1:有程序 Trans.exe 的vs2008 c#源码:Trans.exe项目里引用了 Water.dll: 2:有Water.dll的项目源码: 3:想在Trans.exe里调试Water ...
- 安装python和pycharm,以及常见安装问题
目录 安装python 输入第一个python程序 安装python文本编辑器pycharm 执行main.py文件出现的问题 python编码规范 python是当前很常用的一门语言了,和Java, ...
随机推荐
- spring cloud 学习笔记(1)
SpringCloud + Eureka / Nacos git:https://github.com/huanmsf/springCloudLearn.git 项目目录: 父pom: <?xm ...
- Android 插件化和热修复知识梳理
概述 在Android开发中,插件化和热修复的话题越来越多的被大家提及,同时随着技术的迭代,各种框架的发展更新,插件化和热修复的框架似乎已经日趋成熟,许多开发者也把这两项技术运用到实际开发协作和正式的 ...
- Django models文件模型变更注意事项(表结构的修改)
表结构的修改 1.表结构修改后,原来表中已存在的数据,就会出现结构混乱,makemigrations更新表的时候就会出错 比如第一次建模型,漏了一个字段,后来补上了.(经常遇到模型字段修改) 重新ma ...
- JS监听浏览器的返回、后退、上一页按钮的事件方法
在实际的应用中,我们常常需要实现在移动app和浏览器中点击返回.后退.上一页等按钮实现自己的关闭页面.调整到指定页面或执行一些其它操作的需求,那在代码中怎样监听当点击微信.支付宝.百度糯米.百度钱包等 ...
- 出错:Failed to convert property value of type 'org.apache.ibatis.session.defaults.DefaultSqlSessionFactory' to required type 'java.lang.String' for property 'sqlSessionFactoryBeanName';
出错的详细信息: 3 ERROR [http-nio-80-exec-3] org.springframework.web.servlet.DispatcherServlet - Context in ...
- mysql 函数学习(常用)
1.时间函数(组1) SELECT CURRENT_DATE() AS date, CURRENT_TIME() AS `time`, CURRENT_TIMESTAMP() AS `timestam ...
- hibernate-第一章-基础
一,简介 hibernate是一个开源的ORM框架,它对我们的jdbc进行了轻量级的对象封装,它将我们的POJO与数据库表简历映射关系,是一个全自动的ORM框架;hibernate可以自动生成SQL语 ...
- VMware与Hyper-V的冲突解决 VMware Workstation 与 Device/Credential Guard 不兼容 解决方案
win10专业版官方解决方案https://kb.vmware.com/s/article/2146361 win10家庭版解决方案win10家庭版本身是不支持Hyper-V服务的,但是如果是“win ...
- SpringBoot的事件监听
事件监听的流程分为三步:1.自定义事件,一般是继承ApplicationEvent抽象类.2.定义事件监听器,一般是实现ApplicationListener接口.3.a.启动的时候,需要将监听器加入 ...
- Taro父子组件通信
父组件 testEvent = () =>{ console.log('abc123') } <Test test={1231323} onTestEvent={this.testEven ...