之前已经部署了Flask到在线环境中了:
【已解决】CentOS服务器中搭建Python的Flask的REST API
现在在本地已经搭建和调试好了前端页面,用于演示产品demo:
接着需要把本地的前端页面部署到在线的Flask环境中。
flask 部署 nginx
Flask+uWSGI+Nginx 部署笔记 – 后端 – 掘金
在Nginx上部署Python Flask应用 – 后端 – 掘金
阿里云部署 Flask + WSGI + Nginx 详解 – Ray Liang – 博客园
在 Ubuntu 上使用 uWSGI 和 Nginx 部署 Flask 项目 – 聪聪的个人网站
CentOS 下用 Nginx 和 uwsgi 部署 flask 项目 – EyEder的专栏 – SegmentFault 思否
flask 部署 nginx centos
CentOS 7 + Python Flask + MySQL + Nginx 配置 | iAcn’s Blog
centos+flask+uwsgi+nginx+supervisor部署小结 – CSDN博客
然后需要去搞清楚,此处的Flask中static的各种html,css,js,如何部署到服务器中
是放在Flask的static文件夹中
还是单独放在nginx的某个目录下
flask static nginx centos
centos deploy flask static files nginx
flask 部署静态文件 nginx
python – How to serve Flask static files using Nginx? – Stack Overflow
Python的Flask框架及Nginx实现静态文件访问限制功能_python_脚本之家
去看看默认配置:
<code>[root@xx-xx-01 conf.d]# cat /etc/nginx/nginx.conf # For more information on configuration, see: # * Official English Documentation: http://nginx.org/en/docs/ # * Official Russian Documentation: http://nginx.org/ru/docs/ user nginx; worker_processes auto; error_log /var/log/nginx/error.log; pid /run/nginx.pid; # Load dynamic modules. See /usr/share/nginx/README.dynamic. include /usr/share/nginx/modules/*.conf; events { worker_connections 1024; } http { log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; access_log /var/log/nginx/access.log main; sendfile on; tcp_nopush on; tcp_nodelay on; keepalive_timeout 65; types_hash_max_size 2048; include /etc/nginx/mime.types; default_type application/octet-stream; # Load modular configuration files from the /etc/nginx/conf.d directory. # See http://nginx.org/en/docs/ngx_core_module.html#include # for more information. include /etc/nginx/conf.d/*.conf; server { listen 80 default_server; listen [::]:80 default_server; server_name _; root /usr/share/nginx/html; # Load configuration files for the default server block. include /etc/nginx/default.d/*.conf; location / { } error_page 404 /404.html; location = /40x.html { } error_page 500 502 503 504 /50x.html; location = /50x.html { } } # Settings for a TLS enabled server. # # server { # listen 443 ssl http2 default_server; # listen [::]:443 ssl http2 default_server; # server_name _; # root /usr/share/nginx/html; # # ssl_certificate "/xxx/server.crt"; # ssl_certificate_key "/xxx/server.key"; # ssl_session_cache shared:SSL:1m; # ssl_session_timeout 10m; # ssl_ciphers HIGH:!aNULL:!MD5; # ssl_prefer_server_ciphers on; # # # Load configuration files for the default server block. # include /etc/nginx/default.d/*.conf; # # location / { # } # # error_page 404 /404.html; # location = /40x.html { # } # # error_page 500 502 503 504 /50x.html; # location = /50x.html { # } # } } [root@xxx-general-01 conf.d]# </code>
Nginx 踩坑 —— 自定义位置静态资源 | xlui 的个人博客
Make Python Faster with NGINX: Web Serving & Caching
现在需要先确定,静态文件的部署的逻辑:
目前暂定用:
直接把静态文件,不通过Flask,而是直接放到nginx的某个文件夹下面
然后网站上访问:
http://47.96.131.109/robotDemo
然后即可访问静态页面
所以此处和Flask没有关系了。
就只是:
centos nginx 配置
nginx 指定目录
nginx 指定 root
Nginx静态服务配置—详解root和alias指令 – 简书
nginx的location、root、alias指令用法和区别 – 运维与架构 – nginx.cn
nginx虚拟目录设置 alias 和 root – CSDN博客
Nginx虚拟目录alias和root目录 – 散尽浮华 – 博客园
结果把配置文件:
robotDemo.conf
<code>server { listen 80; server_name xxx.109; root /xxx/robotDemo; location / { proxy_pass http://127.0.0.1:port; # 反向代理 Gunicorn 本地的服务地址 proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } } </code>
放到:
/etc/nginx/conf.d
之后,结果访问主页就失败了:
http://x.x.x.109/
“Not Found
The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again.”
还是先去搞清楚:
【基本解决】nginx的配置参数含义和各个配置文件路径之间的关系
然后试了半天,比如:
<code>location /robotDemo/ { root /root/xxx/www; } </code>
放到:
<code>[root@xxx-general-01 conf.d]# pwd /etc/nginx/conf.d [root@xxx-general-01 conf.d]# ll total 4 -rw-r--r-- 1 root root 67 May 2 14:57 robotDemo_simple.conf </code>
结果访问:
http://x.x.x.x/xxx/index.html
还是出错,不过至少是:
至少是找到nginx了。
算了,直接修改根目录的配置,看看是否生效吧。
<code>vi /etc/nginx/nginx.conf 38 server { 39 listen 80 default_server; 40 listen [::]:80 default_server; 41 server_name _; 42 # root /usr/share/nginx/html; 43 root /xxx/www; </code>
重启nginx,结果forbidden了:
【已解决】CentOS中修改nginx配置中的root根目录后访问出错403 Forbidden
【总结】
至此,算是基本上完成了,把本地的静态文件部署到在线CentOS的nginx中了。
暂时是没有用到Flask。
后续如果用到,需要把这些静态文件整合到Flask的static文件夹中,再说。
此处整体流程是:
1.去centos中安装nginx
<code>yum -y install nginx </code>
2.修改nginx配置:
把
/etc/nginx/nginx.conf
中的root改为自己的目录:
<code> # root /usr/share/nginx/html; root /xxxx/www; </code>
注意:
需要确保此处的目录的所有层级都有读和写的权限
详细点说是:
此处,需要确保知道当前nginx的master和worker的用户是谁,此处通过:
<code>ps -ef | grep nginx </code>
看出好像是:master是root,worker是(/etc/nginx/nginx.conf中指定的)nginx用户
然后确保你的目录的所有的层级,此处的
<code>/root /root/xxx /root/xxx/yyy /root/xxx/yyy/www </code>
对于上述的nginx用户,都有:
读=read=r=4
执行=execute=x=1
的权限。
一个简单的方法是:
给上述目录,分别执行:
<code>chmod a+rx xxx </code>
添加上读和执行的权限。
注:我此处就是开始时没有注意到:
/root没有读和运行的权限
导致403错误没有解决。
3.把html等文件放到对应目录下
<code>[root@xxx-general-01 www]# pwd /root/xxx/yy/www [root@xxx-general-01 www]# ll total 24 -rwxr-xr-x 1 root root 3650 May 2 15:56 404.html -rwxr-xr-x 1 root root 3693 May 2 15:56 50x.html -rwxr-xr-x 1 root root 3700 May 2 15:56 index.html -rwxr-xr-x 1 root root 368 May 2 15:56 nginx-logo.png -rwxr-xr-x 1 root root 2811 May 2 15:56 poweredby.png drwxrwxrwx 6 root root 4096 May 2 14:18 robotDemo [root@xx-general-01 www]# cd zzz/ [root@xx-general-01 zzz]# ll total 28 drwxrwxrwx 4 root root 4096 Apr 28 18:20 css drwxrwxrwx 2 root root 4096 Nov 12 2014 fonts drwxrwxrwx 2 root root 4096 Apr 27 09:41 img -rwxrwxrwx 1 root root 5666 May 2 13:45 index.html drwxrwxrwx 5 root root 4096 Apr 28 17:23 js </code>
4.重启或重载nginx:
<code>systemctl reload nginx systemctl restart nginx </code>
即可生效。
转载请注明:在路上 » 【已解决】把本地前端页面部署到在线Flask环境中