Linux项目部署之发布路飞学城
python3
uwsgi wsgi(web服务网关接口,就是一个实现了python web应用的协议)
virtualenvwrapper
路飞的代码
vue的代码
nginx (一个是nginx对静态文件处理的优秀性能,一个是nginx的反向代理功能,以及nginx的默认80端口,访问nginx的80端口,就能反向代理到应用的8000端口)
mysql
redis 购物车订单信息
supervisor 进程管理工具
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工具
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命令
	3.检测node和npm
	node -v 
	npm  -v 
	4.安装vue项目所需的包
	cd /opt/s15vuedrf/07-luffy_project_01
	输入npm install  
		npm run build  
	这两条都正确配置之后,就会生成一个 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 web文件
			uwsgi --http :8000 --wsgi-file   s15testuwsgi.py
					--http 指定http协议 
					--wsgi-file  指定一个python文件
			
			通过uwsgi启动django项目,并且支持热加载项目,不重启项目,自动生效 新的 后端代码
			
			uwsgi --http  :8000 --module s15drf.wsgi    --py-autoreload=1
		
					--module 指定找到django项目的wsgi.py文件
					
					
	5.使用uwsgi的配置文件,启动项目
			1.创建一个uwsgi.ini配置文件,写入参数信息
				touch uwsgi.ini 
									
					[uwsgi]
					# Django-related settings
					# the base directory (full path)
					#指定项目的绝对路径的第一层路径!!!!!!!!!!!!!!!!!!!!!!!!
					chdir           = /opt/s15vuedrf/luffy_boy/
					# Django‘s wsgi file
					#  指定项目的 wsgi.py文件!!!!!!!!!!!!
					#  写入相对路径即可,这个参数是以  chdir参数为相对路径
					module          = luffy_boy.wsgi
					# the virtualenv (full path)
					# 写入虚拟环境解释器的 绝对路径!!!!!!
					home            = /root/Envs/s15vuedrf
					# process-related settings
					# master
					master          = true
					# maximum number of worker processes
					#指定uwsgi启动的进程个数				
					processes       = 1
					#这个参数及其重要!!!!!!
					#这个参数及其重要!!!!!!
					#这个参数及其重要!!!!!!
					#这个参数及其重要!!!!!!
					# the socket (use the full path to be safe
					#socket指的是,uwsgi启动一个socket连接,当你使用nginx+uwsgi的时候,使用socket参数
					socket          = 0.0.0.0:8000
					#这个参数是uwsgi启动一个http连接,当你不用nginx只用uwsgi的时候,使用这个参数
					#这个参数是uwsgi启动一个http连接,当你不用nginx只用uwsgi的时候,使用这个参数
					#这个参数是uwsgi启动一个http连接,当你不用nginx只用uwsgi的时候,使用这个参数
					#这个参数是uwsgi启动一个http连接,当你不用nginx只用uwsgi的时候,使用这个参数
					#这个参数是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 ,注意,此时要退出虚拟环境!!!!
2.安装supervisor,使用python2的包管理工具 easy_install ,注意,此时要退出虚拟环境!!!!
2.安装supervisor,使用python2的包管理工具 easy_install ,注意,此时要退出虚拟环境!!!!
如果没有命令,使用以下命令,安装
yum install python-setuptools
easy_install supervisor
3.通过命令,生成一个配置文件,这个文件就是写入你要管理的进程任务
echo_supervisord_conf > /etc/supervisor.conf
4.编辑这个配置文件,写入操作  django项目的 命令 
vim /etc/supervisor.conf  
直接到最底行,写入以下配置
[program:s15luffy]
command=/root/Envs/s15vuedrf/bin/uwsgi  --ini  /opt/s15vuedrf/luffy_boy/s15drf/uwsgi.ini
5.启动supervisord服务端,指定配置文件启动
supervisord -c  /etc/supervisor.conf
6.通过supervisorctl管理任务
supervisorctl -c /etc/supervisor.conf 
7.supervisor管理django进程的命令如下
supervisorctl直接输入命令会进入交互式的操作界面
>  stop s15luffy 
>  start s15luffy 
>  status s15luffy 
8.启动luffy的后端代码
配置nginx步骤如下
1.编译安装nginx
2.nginx.conf配置如下
#第一个server虚拟主机是为了找到vue的dist文件, 找到路飞的index.html
server {
        listen       80;
        server_name  192.168.13.79;
		
		#当请求来自于 192.168.13.79/的时候,直接进入以下location,然后找到vue的dist/index.html 
        location / {
            root   /opt/s15vuedrf/07-luffy_project_01/dist;
            index  index.html;
        }
		
	}
	
#由于vue发送的接口数据地址是 192.168.13.79:8000  我们还得再准备一个入口server
server {
	listen 8000;
	server_name  192.168.13.79;
	
	#当接收到接口数据时,请求url是 192.168.13.79:8000 就进入如下location
	location /  {
		#这里是nginx将请求转发给  uwsgi启动的 9000端口
		uwsgi_pass  192.168.13.79:9000;
		# include  就是一个“引入的作用”,就是将外部一个文件的参数,导入到当前的nginx.conf中生效
		include /opt/nginx112/conf/uwsgi_params;
	}
}
3.启动nginx 
./sbin/nginx  直接启动 
此时可以访问 192.168.13.79  查看页面结果
启动路飞项目,这个项目用的是sqllite,因此安装mysql自行选择
redis必须安装好,存放购物车的数据
原文:https://www.cnblogs.com/duhong0520/p/11687529.html