【小白系列】阿里云服务器超级详细配置(FLASK+UWSGI+NGINX)by LY 2020-4-21
阿里云服务器超级详细配置(FLASK+UWSGI+NGINX)
一准备工作:
我们先到阿里云官网注册和登录以及实名认证,然后可以在官网上购买收费的云服务器或者领取一个月免费的云服务器。
我们这次安装的是Ubuntu 18.04 64位 阿里云目前最新版的系统。

输入root密码 记住哦~这个就是登录服务器的密码
服务器地址,第一个( ̄▽ ̄)"复制一下~

配置安全组,主要设置容许你的网页访问的端口。。。go on~

端口范围和授权对象必须要写哦,0.0.0.0/0就是对所有人公开~

OK,下面我们进入我们的服务器,当然如果你的不是阿里云的服务器也可以,你的服务器装好系统之后可以从这一步开始:

下载putty,SSH啥的 你自己随意,我觉得这个顺手一点吧。黑色的地方填写服务器地址 其他不变。然后OPEN!
二、进入ubunru终端界面并创建虚拟环境:
输入密码进来之后:

第一个命令,更新服务器列表 O(∩_∩)O
1.apt-get update
2.这个mysql需要就装。
如果你用的sqlite,这个可以不装,以后需要再装也行,但是还是要说一下:
apt-get install mysql-server
apt-get install libmysqlclient-dev
装完之后可以用命令查看安装的包和软件:
dpkg -s mysql-server

3.如果你安装了mysql,就顺便把redis也安装一下,redis是什么,后面有说明的,想了解的可以去看看。
apt-get install redis-server redis的安装(缓存数据库)
4. 安装 virtualenv (虚拟环境):
安装一下 pip
apt install python-pip
再安装 pip install virtualenv
pip3 install virtualenvwrapper (虚拟环境管理工具) (如果是python3 切换下)
至此虚拟环境就安装好了 O(∩_∩)O 恭喜你完成了很多人要爬很多坑的一步。
这里应该有分割线--------------------------------------------------------------------------------------
接下来我们看下 virtualenvwrapper.sh 的位置,为什么要看呢,因为我们的服务器怕找不到虚拟环境所需要的文件,
使用命令 :which virtualenvwrapper.sh 然后添加以下代码

编辑~/.bashrc文件,内容如下:(vim ~/.bashrc 修改文件用 i 命令,改完之后 ,输入:wq 保存退出)
( 每一个用户在进入home目录后,其中都会有一个隐藏文件.bashrc
按ctrl+h可以显示隐藏文件,该文件保存该用户角色下的环境变量,所以直接打开终端时,运行的命令都是从 这 个.bashrc中去寻找)
如果一切顺利的话 那么在创建可能会提示 【/usr/bin/python: No module named virtualenvwrapper】
这样的提示,没关系,那是因为:
我这个用的3.5版本安装的这个环境,系统的2.7版本是没有的。解决:
先查看python3 的位置:
which python3
然后在刚刚的 .bashrc 文件中修改 :
export WORKON_HOME=$HOME/.virtualenvs/
export PROJECT_HOME=$HOME/workspace/
export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3
source /usr/local/bin/virtualenvwrapper.sh

最后千万一定要加上这条命令,马上执行:
source ~/.bashrc
这个时候 虚拟环境已经配置好了
这个时候便是创建虚拟环境。
创建py3_flask的虚拟环境:
mkvirtualenv -p python3 py3_flask
进入虚拟环境:
workon py3_flask
这个时候 会有变化哦,是不是root前面已经有(py3_flask)了,代表我们已经进入这个虚拟环境了
(py3_flask) root@*******:
使用 pip list就可以查看当前虚拟环境安装了哪些包了。
附上虚拟环境操作命令:
mkvirtualenv env1:创建运行环境 env1
workon env1: 工作在 env1 环境 或 从其它环境切换到 env1 环境
deactivate: 退出终端环境
其它的:
rmvirtualenv ENV:删除运行环境ENV
mkproject mic:创建mic项目和运行环境mic
mktmpenv:创建临时运行环境
lsvirtualenv: 列出可用的运行环境
lssitepackages: 列出当前环境安装了的包
创建的环境是独立的,互不干扰,无需sudo权限即可使用 pip 来进行包的管理。
三、安装uwsgi:
再升级下我们的 pip (如果提示 PIP 需要升级 可以这样:pip3 install --upgrade pip 升级PIP)
安装也很简单,进入到虚拟环境安装,查看虚拟环境 :workon
我的就提示py3_flask
workon py3_flask 进入:
查看当前的路径 和虚拟环境 是不一样的 比如pwd 命令显示的路径并没有 虚拟路径在内,尤其注意。
那要怎么查看虚拟环境 包安装的位置呢?很简单,我们只要看下我们知道的其中一个包的位置就可以了
比如 python3
输入: which python3
/root/.virtualenvs/py3_flask/bin/python
你看 就得到了当前的虚拟环境/root/.virtualenvs/py3_flask
uwsgi 的安装 就是pip3 uwsgi
如果觉得慢可以选择安装源,比如这样:
pip3 install -i https://pypi.douban.com/simple uwsgi
使用的 豆瓣的源 速度会快很多哦。
OK,安装好了 uwsgi 那么下一步就要安装 FLASK
四、安装FLASK
一样的安装方法:用pip install flask
哦 ~ 失败,呵呵 那就pip3 install flask :)
呵呵 刚刚和你开个玩笑,让你明白现在的环境是pip3说了算 - -!
其实很快就装好了 对不对,
OK下面 我们用Flask 来测试下我们的网页:
你要用 vim工具 修改下 app.py的一些小参数
app(host='0.0.0.0',port=5000 , debug='True')

这个界面是不是很熟悉
如果你是云服务器的话 就这样改就可以,端口你随意,我干了。
然后保存退出 vim ,好了第一次运行我们的网站:
python3 app.py
浏览器打开 输入网址:5000
不要忘记加端口哦。
是不是看到网页了。OK,
五、安装 nginx:
sudo apt-get install nginx

下载ngnix 也是在虚拟环境。
安装ngnix的方法也很简单
很快就安装好了
如果出问题了,?@!
那好吧,升级下 sudo apt-get updata
在安装就可以了。
安装好了之后就是最重要的配置了。
六、配置uwsgi和nginx:
需要拷入你的项目到文件夹下:
一般推荐使用工具,比如【winscp】,把项目文件放好,一般放在HOME目录。

说一下配置文件的位置:
nginx的在etc文件夹下的nginx文件夹里:
uwsgi的 需要自己创建ini文件 放在虚拟目录就可以了,位置随便。

[uwsgi]
chmod-socket = 666
socket =127.0.0.1:5000 #和nginx配置的端口号
#http=0.0.0.0:5000 #单独启动uwsgi时使用
chdir=/home/51job/51_flask #项目路径
wsgi-file=app.py #项目启动文件
home = /root/.virtualenvs/py3_flask/ #这个是项目的虚拟路径
callable=app
processes=4
threads=2
master=True
pidfile=uwsgi.pid
daemonize=uswgi.log
-------------------------------------------
如果只想测试下 uwsgi 是否成功,
那么改成这样:
[uwsgi]
#chmod-socket = 666
#socket =127.0.0.1:5000
http=0.0.0.0:5000
chdir=/home/51job/51_flask #你的项目目录
wsgi-file=app.py #你的启动文件
home = /root/.virtualenvs/py3_flask/ #这就是你的虚拟目录,还记的开始的时候说的怎么得到虚拟目录吗?
callable=app
processes=4
threads=2
master=True
pidfile=uwsgi.pid
daemonize=uswgi.log
就可以了在uwsgi上访问了,注意浏览器的端口:5000哦
OK,下面就是ngnix的配置,so easy!!!
哎 说简单 其实我可是趴了俩天的坑啊 -,-
events {
worker_connections 768;
# multi_accept on;
}
http {
server {
listen 80; #监听端口,就是网站端口啦
server_name XXX.XXX.XXX.XXX #你的服务器地址,也可以是你的域名
charset utf-8;
location /static {
alias /home/51job/51_flask/static;
#这个是你项目的JS文件地址,是不是很熟悉static
}
#location /upload {
#alias /var/www/datavis/taihesite/upload;
#}
location / {
uwsgi_pass 127.0.0.1:5000;#这个是与你对接的uwsg的地址端口
include /etc/nginx/uwsgi_params;
}
}
##
# Basic Settings
##
复制下面这段代码到相应位置就可以了,注意覆盖哦,需要修改的地方 我都做了标记了,如果复制下来 请把注释去掉哦
七、启动服务器:
uwsgi uwsgi.ini
service nginx start
这样就启动了。。。
顺便说下停止服务器的方法:
sudo pkill -f uwsgi -9 停止uwsgi 最有效的办法 都不需要输入pid 去 KILL
service nginx stop 停止 nginx
那就一其说一下吧:
service nginx restart 重启Nginx服务
service nginx status Nginx服务的状态
service nginx reload 在Nginx服务启动的状态下,重新加载nginx.conf这个配置文件
sudo nginx -t 检查nginx 配置是否正确
至此终于完成了所有的配置 ,你的服务器应该已经可以访问了,假如,还不能启动,那肯定都是小问题,无非就是版本不匹配啥的,
对于这样的问题 最好的办法就是 sudo atp-get update
下面说一下其他的一些问题的解决办法:
1、uwsgi uwsgi.ini
此时如果提示端口已经被占用,则可以尝试换个端口或者使用kill命令杀死占用该端口的进程。
使用:
ps -aux | grep uwsgi
会列出和uwsgi相关的进程,然后使用:kill -9 [PID] 杀死进程。
2、卸载包或则软件:
在终端中找到你需要卸载的软件的名称,列表是按照首字母排序。用这个命令:
dpkg -s 包的名字检查 ,是否安装了某个软件
dpkg -l 列出所有安装的软件
比如卸载:
sudo apt-get --purge remove uwsgi
3、安装文件 这个就不说了吧,算了还是提一下:
sudo apt-install xxx 安装软件 (最高权限安装 sudo 表示 “superuser do”,前提你是超级管理员)
sudo apt-get是用来安装linux下的各种工具包的。
4、为什么要安装两个数据库(mysql,redis)?
本身的持久化,会可能丢失数据,因为本身的持久化,不是实时的,是数据先在百内存,再定时的保存到硬盘来达到持久化,当然,这个定时的时间相度隔,是可以配置的。
这个配置的时问间,如果太短,那么使用redis的效率就低,如果长了,那么可能丢失的数据就会多,所以,要根据自己的答业务来取得一个均衡。保存到数据库的,可以理解为比较保险,redis出现问题,还可以从数据库中恢复内过来
从两者的擅长角度来看,数据库擅长的容是存储和检索redis相当于内存数据库,擅长的地方是读结合两个的擅长点来使用,才是王道。
5、指定安装包的版本比如:
sudo pip install flask==0.10.1
6、查看当前工作路径只需要一个命令即可:pwd ,啥意思不就是 password缩写吗,hhhhh。好记吧。
7、一下杂项:
•查看目录内容 ls
• 切换目录 cd
• 创建和删除操作 touch , mkdir , rm
ls 命令:
• ls 是英文单词 list 的简写,其功能为列出目录的内容,是用户最常用的命令之一,类似于 DOS 下的 dir 命令
ls 常用选项
参数 含义
-a 显示指定目录下所有子目录与文件,包括隐藏文件
-l 以列表方式显示文件的详细信息
-h 配合 -l 以人性化的方式显示文件大小
Ls 的相关选项
-a 显示所有(包括隐藏)
-l 以列表形式显示每个文件的详细信息
8、还有什么呢?我想想:
vim 编辑器推出的方式
先是 选择文件 进行编辑 vim ~/ 加文件名
进去之后 按 i 插入的意思 进行编辑
编辑结束 按 冒号 : 然后输入 WQ 意思 就是 写入 推出。
还有俩种方法 :
1:在最后输入命令时,直接输入"x",也是一样的,即X=wq。
2:最快捷的方法:按了ESC后,直接按shift+zz,或者切换到大写模式按ZZ,就可以保存退出了,即是按2下大 写的Z。
9、查看命令:cat 可以查看文件内容:如:cat /usr/local/con.cfg
source命令也称为“点命令”,也就是一个点符号(.)。source命令通常用于重新执行刚修改的初始化文件,使之立即 生效,而不必注销并重新登录
10、加入有人告诉你,遇到问题 只要 rmdir, 那是在坑你哦~
删除目录:rmdir 可使用rmdir命令删除一个目录。必须离开目录,并且目录必须为空目录,不然提示删除失败。
删除文件:rm(推荐使用)加上 i 询问是否删除 -f 是强制删除 -r递归删除目录下的所有内容
sudo rm /文件路径
11、设置python版本的优先级,我觉得很重要吗,前面也说过了:
设置python3 优先级
首先使python3.6优先级较高:
sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.5 1
sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.6 2
最后修改为默认:
sudo update-alternatives --install /usr/bin/python python /usr/bin/python2 100
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 150
根据自己的版本修改哦。
12、这个有点不一样:
为Python 3安装pip:
sudo apt install python3-pip
13、安装开发工具
我们还将安装用于构建Python模块所需的开发工具,以供Python 3运行:
sudo apt install build-essential python3-dev python3-setuptools
假设我们想要安装一个名为scrapy的包,我们可以通过发出以下命令来实现:
pip install scrapy
scrapy是用于抓取网站并提取结构化数据的Python库
卸载程序包运行:
pip uninstall scrapy
从PyPI搜索软件包:
$pip search "search_query"
列出已安装的软件包:
$pip list
要列出过期的软件包:
$pip list --outdated
ps -aux |grep uwsgi 列出uwsgi 运行目录
14、查看版本和日志:
查看日志,命令: tali -f catalina.out
查看版本 :java -version
15、端口占用和文件查找的问题:
查看运行文件及目录
which python
查看文件安装及目录
whereis python
查看端口占用
lsof -i :8000
杀死端口占用程序
sudo kill -9 pid
杀死所有有nginx有关的进程
sudo killall -9 nginx
查询与nginx有关的进程
ps aux | grep nginx

浙公网安备 33010602011771号