618心血来潮买了一台阿里云服务器,准备吧自己写的flask接口布置上去,我买的服务器是最低配的,选择的时centos864位系统,物料准备好了,开始弄
1.阿里云的centos8自带python3和pip3,所以我就用现成的,首先安装项目的虚拟运行环境,我用的是root账号,在/usr/local下面新建一个文件夹,名字自己写,我用的是soft(其实放哪都行,我习惯这样做),然后切换到soft文件夹,执行pip3 install virtualenv
2.进入自己的项目文件夹,比如我的项目文件在/usr/local/soft,然后用git拉取自己远端的代码到本地,此时我的目录就多了一个文件夹,我的文件夹名称叫flask_backend,里面存放着项目代码,然后执行 virtualenv venv生成一个虚拟环境,(venv可以是别的名称,他只是虚拟环境的名称)这一步执行完你会发现目录下多出来一个文件夹加venv
3.执行source venv/bin/activate ,此时会进入虚拟环境中,里面就是运行python 的基本环境的工具与指令和包,执行这个命令后前面会出现一个venv的标志,进入虚拟环境后,执行 deactivate 可以退出虚拟环境
4.在虚拟环境中安装uwsgi,flask使用uwsgi这种方式配置比较多,执行pip3 install uwsgi 进行安装
5.在虚拟环境中安装项目依赖 进入项目目录,我的项目中已经生成了requirements.txt 文件,直接执行pip3 -r install requirements,执行完毕后虚拟环境中就安装好该项目的插件了
6.执行deactivate,退出虚拟环境,此时我们在项目目录下,给大家看一下我的项目结构,manage.py是项目入口文件,App存放着业务代码
7.在该目录下新建一个uwsgi.ini文件,内容如下,
socket 字段是nginx配置中用到的,端口号和ip可以自定义,但是本人这样写肯定能通
chdir表示项目路径,要换成你自己的项目路径
wsgi-file 就是项目入口文件
callable 程序内用以启动的 application 变量名,一般都叫app,只要在项目里按标准写就不会有问题
processes 和threads分别表示处理器数和进程数
daemonize 是日志文件,
pidfile是启动时的pid 文件,这个文件在项目目录下,自己新建一个叫uwsgi.pid文件内容写自己的pid号就行了,如右下图
[uwsgi]
# nginx
socket=0.0.0.0:8000
# http server
#http=0.0.0.0:8000
# project path
chdir=/usr/local/soft/flash_backend
# wsgi manage ru kou
wsgi-file=manage.py
# router
callable=app
# common
processes=2
threads=2
master=True
pidfile=uwsgi.pid
daemonize=uwsgi.log
8.运行 uwsgi,在项目目录下执行 uwsgi uwsgi.ini 就启动了,有的文章下一步就是安装supervisor,但是不安装也可以,本人安装没成功,先省略这一步,因为不安装它也不影响服务的部署,当有新代码上传时,要重启uwsgi,不然代码不会生效,
重启命令 uwsgi --reload uwsgi.pid 停止命令 uwsgi --stop uwsgi.pid
9.安装nginx,我的这个步骤只适合centos8系统安装,其他系统可能不适用
首先检查系统有没有安装gcc,因为nginx是用c语言写的,输入gcc -v命令,如果出现以下提示,说明安装的有
否则需要安装gcc,安装命令
以下命令依次执行即可
yum -y install gcc (如果有gcc,不用执行这一条)
yum install -y pcre pcre-devel
yum install -y zlib zlib-devel
yum install -y gcc pcre pcre-devel openssl openssl-devel gd gd-devel
然后就开始正式安装nginx了,使用wget 下载安装包,如果没有wget,用yum -y install wget 安装一下
切换到/usr/local目录,执行下面命令
wget http://nginx.org/download/nginx-1.18.0.tar.gz
下载完成后执行 tar -xzvf nginx-1.18.0.tar.gz 解压
使用whereis java 命令,查找一下自己的java安装在哪(需要先安装java,才能安装nginx),比如我的安装在/usr/java
然后切换到 /usr/java 这个文件夹,ls一下,你会发现文件夹下多了一个nginx目录
进入该目录,依次执行下面三个命令
-
./configure
-
make
-
make install
执行完毕后, 切换到/usr/local这个文件夹,ls一下,会发现多了一个nginx目录,进入该目录下的conf文件夹
编辑nginx.conf 文件,修改server_name
server_name是阿里云的外网ip
uwsgi_pass是前面uwsgi.ini中配置的socket字段,要保持一样
uwsgi_param UWSGI_PYHOME /usr/local/soft/venv; 表示虚拟环境的目录
uwsgi_param UWSGI_CHDIR /usr/local/soft/flash_backend; 表示项目目录
uwsgi_param UWSGI_SCRIPT manage:app; 表示项目入口文件
server {
listen 80;
server_name xxxxxxxx;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
include uwsgi_params;
uwsgi_pass 0.0.0.0:8000;
uwsgi_param UWSGI_PYHOME /usr/local/soft/venv;
uwsgi_param UWSGI_CHDIR /usr/local/soft/flash_backend;
uwsgi_param UWSGI_SCRIPT manage:app;
}
编辑完毕后,启动nginx,启动方法进入到sbin文件夹
执行 ./nginx 就启动了,可以通过ps -ef|grep nginx查看是否启动,下图为启动状态
./nginx -s reload 重新载入配置文件
./nginx -s stop 停止nginx
./nginx -s reopen 重启nginx
然后用jmete测试服务器是否畅通,可以看到已经成功了!!!
小贴士:服务器默认对外开放端口是80,需要再服务器防火墙打开80端口,还要在阿里云服务器管理平台--安全组里添加80对外开放,具体方法可以自己百度