基于Centos7+Flask+Nginx+uWSGI+Python3的服务器网页搭建教程
之前完成了贴吧签到系统的搭建,笔者想将这个功能分享给更多人使用,所以尝试搭建了一个网页,一路遇到了很多问题,最终解决了,记录下过程分享给大家
首先安装 uWSGI ,和 Nginx 配套使用,具体用途自行查阅(已配置Python3环境)
pip3 install uwsgi
新建一个 uWSGI 的配置文件,路径自选,笔者配置文件路径为 /root/uwsgi.ini ,项目路径为 /root/flask ,配置文件内容如下
[uwsgi]
socket = 127.0.0.1:
processes =
threads =
master = true
pythonpath = /root/flask
module = manage
callable = app
memory-report = true
其中需要修改的是 callable 名,即 app = Flask(__name__) 名字,一般是 app ,笔者含有这行代码的文件名为 manage.py ,所以 module 名为 manage ,socket 最后的8000需要记下,后面配置 Nginx 需要,这个值可以修改成自己需要的
如果已经运行过 uWSGI,可以先杀掉进程
killall - uwsgi
然后启动 uWSGI
uwsgi --ini /root/uwsgi.ini -d /root/uwsgi.log
不要使用 uWSGI -x 命令,一般此命令使用的是 xml 配置文件,如果要用此命令,则需要安装
yum install libxml*
然后重新安装 uWSGI 即可
使用yum安装 Nginx
sudo yum install epel-release
sudo yum install nginx
使用systemctl控制Nnginx
systemctl start nginx
systemctl restart nginx
systemctl enable nginx 设置开机启动
killall -9 nginx
然后打开Nginx配置文件,路径一般为
/etc/nginx/nginx.conf
也可以使用以下命令查找路径
find / -name nginx.conf
编辑配置文件,可以使用vim或者使用ftp软件,笔者使用的是WinSCP,因为后文需要将本地的项目传到VPS服务器,找到下文中位置(http段内),添加红色的两句,地址填写上文uWSGI里的地址,如果在 Flask 中配置了错误页面的路由,则不用修改这里的其他内容
location / {
include uwsgi_params;
uwsgi_pass 127.0.0.1:8000;
root html;
index index.html index.htm;
}
修改防火墙配置,允许HTTP和HTTPS通信
sudo firewall-cmd --permanent --zone=public --add-service=http
sudo firewall-cmd --permanent --zone=public --add-service=https
sudo firewall-cmd --reload
然后用上文的命令重启Nginx服务
之后就是配置Flask项目相关的库,如果有 requirements.txt 文件,可以直接使用以下命令安装所有依赖包,如没有则需手动安装
pip3 install -r /root/flask/requirements.txt
笔者使用的是 MySQL ,所以也记录下 MySQL 的安装过程
下载解压安装 MySQL
wget http://repo.mysql.com/mysql57-community-release-el7-10.noarch.rpm
rpm -Uvh mysql57-community-release-el7-.noarch.rpm
yum install -y mysql-community-server
启动 MySQL 服务,(CentOS7 已经用 systemctl 指令替代了原来的 service 命令)
systemctl start mysqld.service
新版MySQL安装后又默认密码,密码储存在 /var/log/mysqld.log 中,可以直接使用查找命令获得
grep 'temporary password' /var/log/mysqld.log
然后使用默认密码登陆,-p 为带密码登陆,回车后再输入密码
mysql -u root -p
然后修改密码强度保护
set global validate_password_policy=;
set global validate_password_length=;
然后再修改密码(红色部分为你的密码)
ALTER USER 'root'@'localhost' IDENTIFIED BY 'yourpassword';
就可以正常使用了,退出 MySQL 界面使用 exit 命令
但是 Flask 项目使用 MySQL 时还需要安装 mysqlclient 库(如果使用 pymysql 之类的第三方库就不需要,使用 Flask 自带的 Flask-SQLAlchemy则需要)
yum install mysql-devel
yum install gcc python-devel
pip install mysqlclient
MySQL 配置大致如此,然后通过 WinSCP 等 sftp 软件传输到 vps 服务器即可
至此,大部分功能就能够正常实现了,如果你已经购买了域名,笔者使用的是阿里云,购买了域名和一年的云解析服务,然后配置云解析目标地址为服务器地址,记录类型为A,域名为 *.你的域名 即可,接下来就可以尝试打开你的网站了(初步设置完域名解析可能要一段时间才能访问)
如果一切顺利,现在就能显示你的网站了,如果出现问题,可以通过以下途径查看问题所在
直接运行 Flask 项目,查看是否是库安装的问题
python3 manage.py
如果已经访问过网站,可以在 Nginx 和 uWSGI 的日志里面查看问题
/root/uwsgi.log
/usr/local/nginx/log/
如果已经能访问网站,操作数据库时出现问题,可以查看数据库的日志
/var/log/mysqld.log
基本能通过日志发现问题,解决方法请自行搜索报错内容
如果是安装过程中出现问题,则可以清理完再重新安装,搜索安装过的软件和文件,先卸载软件再删除参留文件(以 MySQL 为例)
yum remove mysql mysql-server mysql-libs mysql-server;
如果是 yum 安装的则用 yum 卸载,用 pip 安装的用 pip卸载
rpm -qa | grep -i mysql
rpm 查找到的软件用 yum remove 卸载,因为依赖问题无法卸载可以使用 rpm -e --nodeps卸载,安装时不要使用 --nodeps 跳过依赖检查
find / -name mysql
find 查找到的文件用 rm -rf 删除(记得验证是否是正确的路径)
chkconfig --list | grep -i mysql
删除相关的服务 chkconfig --del mysql
卸载完之后再查找一遍,若清理干净则可以重新安装,可同理卸载 Nginx 和 uWSGI
理论上网页已经能正常运行在VPS上了,如果还出现其他问题,读者可以自行尝试解决并留言写下解决方法
在此感谢以下Geeks
CentOS 7下搭建Nginx+uWSGI+Flask
https://blog.csdn.net/qq965194745/article/details/79417976 nginx和uwsgi配置
https://blog.csdn.net/guoqingpei/article/details/52749101
如何在CentOS 7上安装Nginx
https://blog.csdn.net/oldguncm/article/details/78855000
Centos7. 安装Mysql5.7并修改初始密码
https://blog.csdn.net/zyw_java/article/details/70949596 Centos pip install mysqlclient Error
https://blog.csdn.net/cemao4548/article/details/78287086 centos下彻底删除MYSQL 和重新安装MYSQL
https://www.cnblogs.com/cyl048/p/6879085.html
更新时间 2018.07.21
基于Centos7+Flask+Nginx+uWSGI+Python3的服务器网页搭建教程的更多相关文章
- Flask+Nginx+uWSGI在Ubuntu服务器上的配置
Flask+Nginx+uWSGI在Ubuntu服务器上的配置 Step1 安装系统环境 Ubuntu服务器选择是阿里云的ECS服务,ECS提供单独的内存\CPU\带宽\存储规格可以选择,并且提供合适 ...
- 基于centos7+nginx+uwsgi+python3+django2.0部署Django项目
0.序言 本文讲解如何基于centos7+nginx+uwsgi+python3+django2.0把windows上的本地项目部署到云服务器上. 本文服务器上的django项目和虚拟环境的路径将建立 ...
- [阿里云部署] Ubuntu+Flask+Nginx+uWSGI+Mysql搭建阿里云Web服务器
部署地址:123.56.7.181 Ubuntu+Flask+Nginx+uWSGI+Mysql搭建阿里云Web服务器 这个标题就比之前的"ECS服务器配置Web环境的全过程及参考资料&qu ...
- 基于CentOS7系统一键配置Aria2 实现服务器离线下载工具
我们有些网友购买的海外VPS主机并不是用来做网站的,而是用来作为下载资源工具使用的.确实用这样的工具搭建之后是比本地下载速度快,因为有些资源.软件等是海外资源,而且挂载在服务器上不占用本地的资源.在这 ...
- Python3 flask nginx uwsgi 环境搭建
配置项目的时候一般使用虚拟环境,是各个项目的环境独立起来,更多方便管理.至于如何使用搜索即可,并不难 1.安装python3 yum -y install zlib-devel bzip2-devel ...
- Ubuntu Nginx Uwsgi Python布置服务器Django项目
1 安装python 3.6 ubuntu预装了2.7,不需要卸载预装库,直接安装python3.6(其实现在的阿里云18.04会给你自动装python2.7.15和3.6.8) 你可以分别查看一下 ...
- Ubuntu16.04 flask + nginx + uWSGI 部署
前言 又有段时间没写博客了,最近一直在写外包项目,都没啥空余时间.这几天花了不少时间做项目部署,也看了不少教程,这里就记录下整个过程,也方便以后要做类似部署的时候不用再查来查去了. flask + u ...
- Centos+nginx+uwsgi+Python多站点环境搭建
前言 新公司的第一个项目,服务器端打算用python作为restful api.所以需要在Centos上搭建nginx+fastcgi+python的开发环境,但后面网上很多言论都说uwsgi比fas ...
- centos7下部署Django(nginx+uwsgi+python3+django)
系统版本 centos7 python版本 使用官方python3.6.3正式版 django版本 使用本文发布时最新的1.11.7 uwsgi版本 使用本文发布时最新的2.0.15 nginx版本 ...
随机推荐
- a++与++a,谈谈C++的参数传递
先看一段代码: #include<iostream> using namespace std; void func(int a, int b) { cout << a < ...
- C语言conio.h部分解释
#include <conio.h> int getch(void);// 从控制台得到下一个字符,以ASCII值返回,并不在屏幕显示该字符 int getche(void);// 从控制 ...
- Golang ---基准测试
什么是基准测试 基准测试,是一种测试代码性能的方法,比如你有多种不同的方案,都可以解决问题,那么到底是那种方案性能更好呢?这时候基准测试就派上用场了. 基准测试主要是通过测试CPU和内存的效率问题,来 ...
- 在O(1)的时间内删除链表节点
题目: 在O(1)的时间内删除链表节点.给定链表的头指针和待删除的节点指针,定义一个函数在O(1)的时间内删除该节点. 剑指offer的思路,顿时觉得极妙.删除节点node1,先把其下一个节点node ...
- CentOS7配置网卡上网、安装wget、配置163yum源
2019/09/12,CentOS 7 VMware 摘要:CentOS7安装完成(最小化安装)后,不能联网(已选择桥接网络),需要修改配置文件及配置yum源 修改配置文件 进入网卡配置目录 cd / ...
- 七牛云图床存储+Alfread工作流+使用QSHELL
layout: post title: 七牛云图床存储+Alfread工作流+使用QSHELL 来源:http://www.cnblogs.com/cmi-sh-love/p/8901620.html ...
- wind安装Jenkins+sonar+jdk
最近公司在用Jenkins持续集成软件,自己研究的头痛,而且还是和C#项目融合到一起的,网上看到的都是Java的,我自己配了一套和C#的,和你们分享. Jenkins是一个开源软件项目,旨在提供一个开 ...
- springmvc 注解二
@SessionAttributes @sessionattributes注解应用到Controller上面,可以将Model中的属性同步到session作用域当中. SessionAttribute ...
- 获取form表单默认提交的返回值
1.经常用form表单提交的小伙伴有没有发现,form表单默认的提交是没有返回值的,而且默认提交成功之后是跳转,跳转的action的路径,下面写一下默认的提交如何获取到form表单的返回值json,并 ...
- 创建图 figure & figcaption
如报纸.杂志.报告等其他媒介上看到过图.通常,图是由页面上的文本引述出. 在HTML5出现之前,没有专门实现这个目的的元素,因此一些开发人员想出了他们自己的解决办法(通常会使用不那么理想的.没有语义的 ...