Web项目部署指南
Web项目部署指南
本文记录了部署Vue项目到阿里云服务器上的过程,其中云服务器的操作系统是CentOS 7,Web服务器用的是nginx。因为项目涉及发送异步请求,而由Flask编写的后端应用监听的并非80端口,存在跨域的问题,在部署Vue项目的过程中给我带来了困扰,因此将部署Flask应用的过程一并记录。
安装和配置nginx
安装并启动nginx
yum install -y nginx
systemctl start nginx
systemctl status nginx
上传打包后的项目到
/var/www/
目录mkdir -p /var/www
cd /var/www && unzip dist.zip
chown -R nginx:nginx /var/www/
这里需要注意的是需要使用
chown
命令修改目录/var/www/
的所有者是nginx,否则通过浏览器访问应用时会提示Internal Server Error,而通过查看nginx日志文件发现这一异常状况是由权限问题引起的:“stat() "xxx" failed (13: Permission denied)”配置nginx
首先要通过配置安全组规则,确保云服务器允许公网通过HTTP、HTTPS等服务访问实例
修改nginx配置文件
vi /etc/nginx/nginx.conf
http {
// 省略部分内容
server {
listen 80;
server_name xxx.xxx.xxx.xxx;
location / {
root /var/www/dist/;
try_files $uri $uri/ @router;
index index.html index.htm;
}
location @router {
rewrite ^.*$ /index.html last;
}
}
}
重启nginx
nginx -s reload
部署Flask项目
项目采用Gunicorn作为WSGI容器,用Supervisor管理进程,另外还用到了部分Flask插件,比如flask-cors。
准备Python环境
conda create --name flask Python
conda activate flask conda install flask
pip install flask-cors
pip install gunicorn
pip install supervisor
配置supervisor
# 创建目录,初始化配置文件
mkdir -p /usr/supervisor/supervisord.d
echo_supervisord_conf > /usr/supervisor/supervisord.conf # 修改supervisor配置文件
vi /usr/supervisor/supervisord.conf
[include]
files = /usr/supervisor/supervisord.d/*.conf
配置项目
vi /usr/supervisor/supervisord.d/appname.conf
[program:appname] ; 每个program就是一个或一组进程
directory = /root/Programs/app-folder/ ; 指定项目所在目录
command = /opt/miniconda/envs/flask/bin/gunicorn -w 4 -b 0.0.0.0:5000 main:app ; 启动命令
autorestart = true ; 设置在Supervisord启动的时候也自动启动
startsecs = 5 ; 启动5秒后没有异常退出,就当作已经正常启动了
startretries = 3 ; 启动失败自动重试次数,默认是3次
user = root
redirect_stderr = true
这里注意不要配置
nodaemon=True
,否则会引发异常:“FATAL Exited too quickly (process log may have details)”启动supervisor
# 启动supervisor
supervisord -c /usr/supervisor/supervisord.conf
# 查看supervisor
supervisorctl -c /usr/supervisor/supervisord.conf
解决跨源问题
# 修改nginx配置文件
vi /etc/nginx/nginx.conf
http {
// 省略部分内容
server {
listen 80;
server_name xxx.xxx.xxx.xxx;
// 省略部分内容
location @router {
rewrite ^.*$ /index.html last;
}
// 当请求跨域时配置端口转发
location /api {
proxy_pass http://xxx.xxx.xxx.xxx:5000/api;
}
}
}
参考资料
Web项目部署指南的更多相关文章
- 如何将Java Web项目部署到服务器上
转自:(此处更详细)http://blog.csdn.net/gulu_gulu_jp/article/details/50994003 一.前言 前面我们已经尝过了在云服务器上部署代码的甜头了,现在 ...
- 怎样将本地web项目部署到腾讯云服务器上?
怎样将本地web项目部署到腾讯云服务器上? 1.本地计算机的工作: (1).用eclipse新建一个web项目,然后在webcontent下新建一个index.html,然后在本地部署到Tomcat服 ...
- Maven Web项目部署到Tomcat下问题
但是也遇到了很多问题,下面记录一下Web项目部署到Tomcat下的问题 1.普通的WEB项目,就是虽然是用maven搭建的,但是没有使用profiles.xml文件来配置参数.这样的项目可以通过以下的 ...
- Spring整合Redis&JSON序列化&Spring/Web项目部署相关
几种JSON框架用法和效率对比: https://blog.csdn.net/sisyphus_z/article/details/53333925 https://blog.csdn.net/wei ...
- web项目部署在不同环境中需要修改配置文件的解决方法
web项目部署中存在的配置文件问题: web项目以war包的形式,部署在tomcat中,同时项目需要访问一些其他的东东,例如访问数据库,调用别的项目的API.在开发中,这些需要访问的外部地址通常以配置 ...
- Eclipse导入git上的maven web项目 部署 - lpshou
http://www.tuicool.com/articles/fqm2Qf 推酷 文章 微博 主题 站点 活动 应用 周刊 登录 Eclipse导入git上的maven web项目 部署 - ...
- eclipse修改web项目部署路径 wtpwebapps webapps 的设置
eclipse修改web项目部署路径 wtpwebapps webapps 的设置,在添加完server------>tomcat后,到server控制台进行设置 eclipse默认的部署 ...
- eclipse中将web项目部署到tomcat
eclipse中将web项目部署到tomcat. myeclipse部署WEB项目到tomcat比较方便,但eclipse貌似默认是不会替你将web自动部署到tomcat下的.你Run as该web项 ...
- 配置JDK、tomcat及Java Web项目部署
一.JDK的安装 (1)下载安装JDK: 这个就不用说了,直接官网下载jdk安装即可.http://www.oracle.com/technetwork/java/javaee/downloads/i ...
随机推荐
- 各种环境下反弹shell
0x00 NC命令详解 在介绍如何反弹shell之前,先了解相关知识要点. nc全称为netcat,所做的就是在两台电脑之间建立链接,并返回两个数据流 可运行在TCP或者UDP模式,添加参数 -u 则 ...
- P3956 [NOIP2017 普及组] 棋盘
P3956 [NOIP2017 普及组] 棋盘 题目 题目描述 有一个 m×m 的棋盘,棋盘上每一个格子可能是红色.黄色或没有任何颜色的.你现在要从棋盘的最左上角走到棋盘的最右下角. 任何一个时刻,你 ...
- Mysql查询优化器之基本优化
对于一个SQL语句,查询优化器先看是不是能转换成JOIN,再将JOIN进行优化 优化分为: 1. 条件优化 2.计算全表扫描成本 3. 找出所有能用到的索引 4. 针对每个索引计算不同的访问方式的成本 ...
- 微服务部署 docker-compose
1.docker-maven-plugin 介绍 在我们持续集成过程中,项目工程一般使用 Maven 编译打包,然后生成镜像,通过镜像上线,能够大大提供上线效率,同时能够快速动态扩容,快速回滚,着实很 ...
- @RequestMapping 注解?
该注解是用来映射一个URL到一个类或一个特定的方处理法上.
- java-設計模式-工場方法
工廠方法: 一种创建型设计模式, 其在父类中提供一个创建对象的方法, 允许子类决定实例化对象的类型. 定义一个创建产品对象的工厂接口,将产品对象的实际创建工作推迟到具体子工厂类当中. 这满足创建型 ...
- spring-boot-learning-REST风格网站
什么是REST风格: Representational State Transfer :表现层状态转换,实际上是一种风格.标准,约定 首先需要有资源才能表现, 所以第一个名词是" 资源&qu ...
- Thymeleaf+Spring使用自己的工具类
第一种.提供思路,继承SpringStandardDialect,重写getExpressionObjectFactory方法,设置expressionObjectFactory的实际对象,并在Tem ...
- 描述 Java 中的重载和重写?
重载和重写都允许你用相同的名称来实现不同的功能,但是重载是编译时活动, 而重写是运行时活动.你可以在同一个类中重载方法,但是只能在子类中重写方 法.重写必须要有继承.
- 什么是基于 Java 的 Spring 注解配置? 给一些注解的例子?
基于 Java 的配置,允许你在少量的 Java 注解的帮助下,进行你的大部分 Spring 配置而非通过 XML 文件. 以@Configuration 注解为例,它用来标记类可以当做一个 bean ...