加入收藏 | 设为首页 | 会员中心 | 我要投稿 源码网 (https://www.900php.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长资讯 > 外闻 > 正文

带你迈过那些部署服务器时的坑?

发布时间:2018-08-31 03:10:16 所属栏目:外闻 来源:程序猿与吉他狗
导读:副标题#e# 在开发环境完成了Flask项目的开发以后,就需要将项目部署到服务器上,开发时由Werkzeug提供的开发服务器是无法应用于实际项目的,在生产环境中必须使用专门的服务器程序,web服务器程序非常多,本文服务器操作系统为Centos7,网站服务器采用的是uw

导入数据库表

  1. (venv)$ python3 manage.py db init 
  2. (venv)$ python3 manage.py db migrate 
  3. (venv)$ python3 manage.py db upgrade 

退出虚拟环境

  1. (venv)$ deactivate 

2.配置uwsgi

在项目文件夹中新建一个uwsgi.py的文件和uwsgi.ini的文件,并填入配置

  1. $ cd /path/to/your/project 

新建uwsgi.py

  1. $ vi uwsgi.py 

导入创建应用的工厂函数

  1. from webapp import create_app 
  2. app = create_app("production)" 

新建uwsgi.ini

  1. $ vi uwsgi.ini 

输入以下内容:

  1. [uwsgi] 
  2. module = uwsgi:app 
  3. master = true 
  4. processes = 5 
  5. uid = user 
  6. socket = /run/uwsgi/myapp.sock 
  7. chown-socket = user:nginx 
  8. chmod-socket = 660 
  9. vacuum = true 
  10. die-on-term = true 

上面的配置文件中的user是你新建的Linux用户名,第一句是告诉uwsgi我们的应用是uwsgi文件中的app,master和processes是服务器是否启用主进程和进程数,uid是启动uwsgi的用户,scoket是指把uwsgi生成的sock放在什么地方,chown-socket是修改sock的所有者,这样nginx和uwsgi可以同时访问,chmod-socket是修改sock的权限,vacuum是在程序退出时移除sock,因为后面我们会使用systemd来控制uwsgi,因为其中控制信号存在差别,所以使用die-on-term参数。

使用systemd控制uwsgi

新建uwsgi服务

  1. $ sudo vi /etc/systemd/system/uwsgi.service 

填入如下内容:

  1. [Unit] 
  2. Description=uWSGI instance to serve myapp 
  3. [Service] 
  4. ExecStartPre=-/usr/bin/bash -c 'mkdir -p /run/uwsgi; chown user:nginx /run/uwsgi' 
  5. ExecStart=/usr/bin/bash -c 'cd /home/user/myapp; source myappenv/bin/activate; uwsgi --ini myapp.ini' 
  6. [Install] 
  7. WantedBy=multi-user.target 

这样就完成了uwsgi的配置,我们可以像控制mysql一样来控制uwsgi了。

  1. $ sudo systemctl start uwsgi 
  2. $ systemctl status uwsgi 
  3. $ sudo systemctl enable uwsgi 
  4. $ sudo systemctl stop uwsgi 

3.配置nginx

nginx的配置文件位于/etc/nginx/nginx.conf

  1. $ sudo vi /etc/nginx/nginx.conf 

我们只需要修改相应部分就可以了,关于nginx更多的细节将单独再写。

  1. server { 
  2.  
  3.     listen 80; 
  4.  
  5.     server_name server_domain_or_IP; 
  6.  
  7.     location / { 
  8.  
  9.         include uwsgi_params; 
  10.  
  11.         uwsgi_pass unix:/run/uwsgi/myapp.sock; 
  12.  
  13.     } 
  14.  
  15.            location /static/ { 
  16.  
  17.                      alias /home/user/myapp/static/; 
  18.  

这里我们添加了location /static/,这是为了让js css这些静态文件直接由nginx接管,所以要修改这些静态文件的访问权限。

  1. $ cd /home/user/myapp/static/ 
  2. $ chown -R user:nginx static 
  3. $ chmod -R 660 static 

最后还有一个小坑,nginx在启动加载时会报错。

  1. $ sudo mkdir /etc/systemd/system/nginx.service.d  
  2. $ cd /etc/systemd/system/nginx.service.d 
  3. $ sudo vi override.conf 

填入如下内容:

  1. [Service]  
  2. ExecStartPost=/bin/sleep 0.1 

保存退出!

到此配置就完成了,启动服务看看效果吧!

测试nginx

  1. $ sudo nginx -t 

启动nginx

  1. $ sudo systemctl start nginx 

设置开机启动

  1. $ sudo systemctl enable nginx 

(编辑:源码网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读