Flask网站搭建:Ubuntu 14.04 sever (阿里云64bit) 部署 flask + uWSGI + Ngnix

第一次写技术类的博客,有点小激动。这篇文章整合了多方资源,将在文末附上链接,非常感谢作者的帮助。同时也希望这篇博客能帮助像我一样的外行玩家快速搭建自己的网站。如果文章有什么不妥的地方,希望大家留个脚印哈~

一、购买云服务器+域名

1、购买服务器和域名  

  一开始我是购买的购买腾讯的学生特惠套餐,结果忘(lao)了(nian)续(chi)费(dai),所以只好转投阿里的云翼计划,也是相当实惠的,不过腾讯的用户体验是真心好(除了要每月续费外)。域名我是从新网那边迁到万网的,需要重新备案外加续费一年。下面就以阿里云为例吧。

  先在云翼计划首页购买云服务器(ECS),包年有赠品,我没有包年,但是后来也送了云对象存储(OSS)等功能,还有各种阿里营销体验你懂得=-=。系统我用的是Ubuntu14.04 64bit,当然大家也可以选用更受欢迎的CentOS,不过我等小白还是选一个自己熟悉的更舒服一些。购买成功后系统随时可以更换,还可以建立磁盘快照。随时备份文件、定时备份系统非常非常重要,否则可以来高歌一曲:啊~多么痛的领悟~。阿里的优惠域名好像.xin后缀,我没有试过,就不多说了,大家及时备案就好,阿里云和腾讯云一样,都有域名备多久服务器便送多久的活动。

2、连接服务器

  购买成功后进入服务器实例列表,如果你本地是用的Windows系统,可以在网页上用密码远程登录,如果本地也是Linux/Mac OS的话可以使用密钥,我本地用的是Ubuntu16.04,也就以此为例啦。将服务器关机,选择后边“更多”选项中的更换系统盘,选择Ubuntu14.04 64bit,输入计算机名称,下载密钥,并将其移动到可信的地方起一个你喜欢的名字。

我们需要对密钥文件更改权限:

sudo chmod 400 /密钥的绝对路径

接下来就可以连接我们的服务器了:

ssh -i /密钥的绝对路径 [email protected]服务器公.网.IP

二、服务器初始配置

1.创建用户

因为root用户的权限实在太高,手抖的话容易出事,比如说随手rm点啥,或者一不小心就把自己的Windows系统盘格式化了,别问我怎么知道,来和我一起高歌一曲:啊~多么痛的领悟~

所以我们要先来新建一个用户:

adduser demo

接下来会有一串的问题,想填就填,不想填直接回车跳过就行。

2.更改用户组

我们需要用到超级用户权限,所以要将新建的用户添加到“sudo”用户组:

gpasswd -a demo sudo

3.生成ssh密钥

用密钥连接服务器更快捷更安全,所以我们来创建密钥对(注意下面在local字样的命令都是在本地终端上进行的):

locai$ ssh-keygen

接下来会有如下输出:

Generating public/private rsa key pair.
Enter file in which to save the key (/Users/localuser/.ssh/id_rsa):

括号里的内容便是即将输出密钥文件的绝对地址,可以在冒号后面输入自定义的文件名。回车确认之后便会有两个文件输出, id_rsa 是私钥, 如同他的名字一样,不能拿着到处宣扬;id_rsa.pub是公钥,稍后会上传到服务器上。打个比方就是:我们要给服务器配一把锁(公钥),在本机上存的是钥匙(私钥),所以只要别人愿意用,锁可以多发几枚,但钥匙要自己保存好。

4.安装公钥

在服务器上创建并编辑下面的文件:

su - demomkdir .ssh
chmod 700 .ssh
nano .ssh/authorized_keys

本地读取公钥:

local$ cat ~/.ssh/id_rsa.pub

复制以上命令输出的内容,粘贴到在服务器上刚刚创建的文件中并保存。

注:nano 是一款很简便的文本编辑器,编辑好后按“CTRL+X”退出编辑,随后按“Y”确认保存,“ENTER”确认文档名称。

改变文件权限:

chmod 600 .ssh/authorized_keys

5. 测试连接

local$ ssh 服务器公.网.IP

这样是不是就简单多了呀 。

三、安装Flask

安装Flask及相关依赖,保证我们写的程序能在服务器上运行。

1.搭建虚拟环境

安装virtualenv:

sudo apt-get update
sudo apt-get install python-devsudo pip install virtualenv

建立工作目录:

mkdir ~/myproject
cd ~/myproject

如果你的网站已经写好,可以传到Github上直接 git clone http:项目地址 ,这样是最方便的。也可以用其他的云盘下载或者直接用sftp从本地传到服务器。

创建虚拟环境:

virtualenv myprojectenv

在此我们默认Python=3.4.3,当然你需要在创建虚拟环境的时候添加相关选项: virtualenv --python=3.4 myprojectenv 。

激活虚拟环境:

source myprojectenv/bin/activate

2.安装Flask及相关依赖

安装Flask:

pip install flask

至于其他的就需要大家按需安装了,下面是我的安装列表,仅做参考:

======================分割线1,按需取舍=========================

创建txt文件:

nano requirements.txt

文件内容:

Flask-WTF==0.10.2
Mako==1.0.0
Markdown==2.5.1
MarkupSafe==0.23
SQLAlchemy==0.9.8
WTForms==2.0.1
Werkzeug==0.9.6
six==1.8.0
awesome-slugify==1.6
python-docx
cffi
Flask-WeasyPrint
Pillow

先安装相关依赖:

sudo apt-get install libcairo2-dev  libffi-dev libpango-1.0-0
sudo apt-get install libtiff5-dev libjpeg8-dev zlib1g-dev libfreetype6-dev liblcms2-dev libwebp-dev tcl8.6-dev tk8.6-dev python-tk

需要更高版本的pango需要自行下载安装,如果还缺少其他东西的话,根据终端提示来安装就可以。

安装我们表单的内容:

pip install -r requirements.txt

注意看好一定要已经进入了虚拟环境哈,强迫症装到全局会很难受的。

==========================END1=============================

如果还没有写好自己的网页也没关系,我们还是以hello world!为例,建一个简单的程序:

nano myproject.py
from flask import Flask
application = Flask(__name__)

@application.route("/")
def hello():
    return "<h1 style=‘color:blue‘>Hello World!</h1>"

if __name__ == "__main__":
    application.run(host=‘0.0.0.0‘)

退出保存。

运行程序:

python myproject.py

成功的话终端会输出: * Running on http://0.0.0.0:5000/ (Press CTRL+C to quit)

四、配置服务器安全组

为了我们的测试工作可以顺利进行,需要在阿里云的控制台配置安全组,开放相关端口的访问权限。

首先进入阿里云的控制台找到正在运行中的实例,点击右侧的”更多->安全组配置“,进入安全组的规则列表,点击配置规则->添加安全组规则。

然后端口范围填写5000/5000,授权对象0.0.0.0/0,其他保持默认,我们便可以访问服务器的5000端口了。

接下来重复以上步骤,添加8000和80端口的访问权限。

这样我们在本地浏览器输入 服务器IP:5000  来访问网页了,试一试有没有正常输出蓝色的Hello World!

五、配置WSGI与Nginx

1、安装

sudo apt install nginx
pip install uwsgi

创建wsgi.py文件:

nano ~/myproject/wsgi.py

文件内容:

from myproject import application

if __name__ == "__main__":
    application.run()

这个文件在uwsgi运行时会自动调用。

来测试一下uwsgi有没有正常工作:

uwsgi --socket 0.0.0.0:8000 --protocol=http -w wsgi:application

在本地浏览器访问 服务器IP:8000 ,便会看到熟悉的字样。

成功之后我们就不需要在虚拟环境里了,可以交给uwsgi操作。

deactivate

2、配置uwsgi

创建配置文件:

nano ~/myproject/myproject.ini

文件内容:

[uwsgi]
module = wsgi:application
master = true processes = 5 socket = myproject.sock 

chmod-socket = 660 vacuum = true 

die-on-term = true

由于我在这方面懂得也不多,只是看别人的教程而已,就不托大了,大家可以自己深入研究。

创建自动启动文件,保证在服务器重启之后我们的程序还可以正常运行:

sudo nano /etc/init/myproject.conf

文件内容:

description "uWSGI server instance configured to serve myproject"

start on runlevel [2345]
stop on runlevel [!2345]

setuid demo
setgid www-data

env PATH=/home/demo/myproject/myprojectenv/bin
chdir /home/demo/myproject
exec uwsgi --ini myproject.ini

保存退出后,启动配置:

sudo start myproject

3、配置Nignx代理

sudo nano /etc/nginx/sites-available/myproject

文件内容:

server {
    listen 80;
    server_name 服务器地址或域名;
    location / {
        include uwsgi_params;
        uwsgi_pass unix:/home/demo/myproject/myproject.sock;
    }
}

监听服务器的80端口,也就是我们浏览器一般会访问的端口。

保存退出,链接文件,保证配置成功:

sudo ln -s /etc/nginx/sites-available/myproject /etc/nginx/sites-enabled

删除默认的配置文件:

sudo rm /etc/nginx/sites-available/default

测试一下Nginx配置是否正常:

sudo nginx -t

没有错误之后重启nginx:

sudo service nginx restart

六、测试网页访问

最后一步啦,在浏览器输入域名,还没备案通过的输入地址,看下能不能正常访问了。

一切正常之后我们就可以关闭不需要的端口了,还是在阿里云安全组配置那里,删除我们创建的8000和5000,留下浏览器需要访问的80端口就可以啦。

祝好~

参考资料:

https://www.digitalocean.com/community/tutorials/how-to-serve-flask-applications-with-uwsgi-and-nginx-on-ubuntu-14-04

https://www.cnblogs.com/Ray-liang/p/4173923.html

时间: 2024-07-31 02:44:38

Flask网站搭建:Ubuntu 14.04 sever (阿里云64bit) 部署 flask + uWSGI + Ngnix的相关文章

Ubuntu 14.04 更换阿里云源

sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak #备份 sudo vim /etc/apt/sources.list #修改 sudo apt-get update #更新列表 阿里云源 deb http://mirrors.aliyun.com/ubuntu/ trusty main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ trust

ubuntu 14.10 更改阿里云

网上应该可以找到很多关于ubuntu源的设置方法,但是如果不搞清楚就随便设置的话,不仅不能起到应有的效果,还会由于一些问题导致apt不可用. 最正确的更换源的方法应该如系统提示的: ## a.) add 'apt_preserve_sources_list: true' to /etc/cloud/cloud.cfg## or do the same in user-data## b.) add sources in /etc/apt/sources.list.d## c.) make chan

Ubuntu 16.04添加阿里云源

添加国内源有个好处,比如下载软件时直接时国内的服务器,速度有保证. 以下是操作方法: 1.备份 sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak 2.编辑 sudo gedit /etc/apt/source.list 提示:可以使用vi.vim这些 3.覆盖源文件的所有内容 # deb cdrom:[Ubuntu 16.04 LTS _Xenial Xerus_ - Release amd64 (20160420.1)]/ xeni

ubuntu 16.04使用阿里云镜像

vim /lib/systemd/system/docker.service ExecStart=/usr/bin/dockerd -H fd:// --registry-mirror=https://3hn88wev.mirror.aliyuncs.com systemctl daemon-reload systemctl restart docker.service

阿里云 Ubuntu 14.04 JavaWeb 应用部署

最近双11阿里云云服务器ECS搞活动,之前一直想买个服务器来玩一玩,正好最近阿里云有优惠,就买了个域名和ECS服务器来倒腾倒腾了. 我先是在万网上面购买了一个域名,然后在阿里云ECS购买了一个ECS服务器,配置如下: CPU:1核 RAM:512M 操作系统:ubuntu 14.04 带宽:1M 因为主要是为了体验一把,所以所有的配置都是买的最低配置,而且宽带也是选择了按量计费,在流量使用较低的情况下,能比按月计费少一些支出.大家可以酌情选择. 好了废话不多说,接下来就讲讲我环境搭建的步骤. 1

在Ubuntu 14.04.5 LTS上搭建WordPress环境

晚饭后闲着无聊,看着自己虚拟机里很久前安装的 Ubuntu 14.04.5 LTS ,突然想在上面搭建个网站,选来选去,决定使用WordPress环境,下面就来一步步搭建它. 1.下载WordPress程序包 wget https://cn.wordpress.org/wordpress-4.8.1-zh_CN.tar.gz 下载界面 2.安装Apache2.0 apt-get install apache2 由于我当前用户是root,如果是非root用户要在上面的命令中加上sudo 没有报错,

在阿里云Ubuntu 14.04 Linux服务器上安装docker

参考 How To Install and Use Docker: Getting Started 这篇最靠谱的文档在阿里云 Ubuntu  14.04 服务器上成功安装 docker . 1)更新 apt 的安装包列表 sudo apt-get update 2)升级所有已安装的包 sudo apt-get -y upgrade 3)添加 apt 验证密钥 sudo apt-key adv --keyserver hkp://pgp.mit.edu:80 --recv-keys 58118E8

烂泥:ubuntu 14.04搭建OpenVPN服务器

本文由秀依林枫提供友情赞助,首发于烂泥行天下 公司分部需要连接公司内部的服务器,但是该服务器只允许公司内部的网络访问. 为了解决这个问题,打算使用VPN.对于VPN以前使用最多的是PPTP这个解决方案,但是PPTP相对于openvpn来说,没有openvpn安全,而且PPTP在linux下命令行支持不是很好,稳定性也不如openvpn.所以最后就选择openvpn来搭建VPN. PS:本文在ubuntu 14.04上安装,openvpn服务器地址为192.168.1.8. 有关openvpn在c

在Ubuntu 14.04上搭建github Pages博客

背景 github是一个全球性的代码托管平台,支持github Pages服务.这个服务可以为个人.组织或项目建立静态主页.github为用户提供项目托管.git.pages等用于项目开发的功能.我们使用的就是其pages服务.相对于其他提供免费博客的网站,github的最大优点是无任何广告且提供git版本管理工具对博客进行管理.但劣势是需要一定的命令行操作,对于普通用户有一定门槛.Octopress是一款优秀的静态化博客系统,官方将它简称为:"A blogging framework for