主要是写好的Flask项目想配置在阿里云上太麻烦了,网上的教程没有一个完整好用的,重置了3次系统后终于弄好了,这个得赶紧记录一下。
主要是参考这篇幅文章配的,但是没有新建新的用户,进程也改成了1,
1.先安装Python的pip 和Virtualenv
(这一步主要是为服务安装虚拟环境)
apt install python3-pip
pip3 install virtualenv
2.上传自己的项目在/home/www 目录下面(用Filezilla,sftp连接到服务器,用户名用root就行),咱上传的是SM3
注意:后面说的根目录就指的是:/home/www/SM3(你的项目)
3.安装Gunicorn
(这一步的作用是为你的项目开启多个进程,支持更多人的访问)
先进入虚拟环境:
source venv/bin/activate
可以用 python -V
测试一下是否在虚拟环境下(如果是3版本的就是)
安装Gunicorn:pip install gunicorn
4.配置Gunicorn:
4.1新建一个名为gunicorn.conf 的配置文件
vim gunicorn.conf
4.2输入:
# 进程为1,因为3的话会导致数据库无法实时更新。
workers = 1
# 监听本地8000端口,之后这个端口来的就是看这个网站的。
bind = '127.0.0.1:8000'
这里端口号可以自己定,后面也会写,写一样的就行
4.3保存文件
4.4安装依赖pip install -r requirements.txt
这里可以直接进入项目的根目录,直接用python xxx.py 启动试一下,看看目前能不能在默认的5000端口跑起来。
(如果你想在本地浏览器看结果的话,还得在阿里云开启 ‘安全组’里面的端口,以及使用0.0.0.0:5000才能哦。)
4.5在网站根目录下新建一个名为logs的文件夹,留以后用:
mkdir logs
5.安装Supervisor
(这一步是为你的项目加一个监听,如果服务器重启了它可以自动的重启你的项目)
apt install supervisor
5.1配置Supervisor:
转到Supervisor的配置文件目录:
cd /etc/supervisor/conf.d/
新建并打开一个名为SM3.conf的配置文件(名字无所谓):
touch blog.conf
vim blog.conf
输入如下配置内容:
# 进程的名字,取一个以后自己一眼知道是什么的名字。
[program:blog]
# 定义命令。你只要注意后面的目录对就行。
command=/home/www/SM3/venv/bin/gunicorn SM3:app -c /home/www/SM3/gunicorn.conf
# 网站跟目录
directory=/home/www/SM3
# 进程所属用户。
user=root
# 自动重启设置。
autostart=true
autorestart=true
# 日志存放位置。
stdout_logfile=/home/www/blog/logs/gunicorn_supervisor.log
5.2保存文件
5.3加载并生效Supervisor配置:
sudo supervisorctl reread
supervisorctl update
sudo supervisorctl start SM3
如果看见类似于「already:started」这样的提示就说明成功了。
6.安装Nginx:
(web服务器,作为主要的入口)
sudo apt-get install nginx
如果出现安装失败的提示,尝试更新一下源:
sudo apt-get update
配置:
(1)cd /etc/nginx/sites-available/
这里可以删除默认的default文件
(2)vim SM3
(3)输入:
server {
listen 80;
server_name 阿里云的IP或者域名都行;
root /home/www/SM3;
access_log /home/www/SM3/logs/access.log;
error_log /home/www/SM3/logs/access.log;
location / {
proxy_set_header X-Forward-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_redirect off;
if (!-f $request_filename) {
proxy_pass http://127.0.0.1:8000;
break;
}
}
}
如果你上面配置的时候不是8000端口记得改一下
(4)启用配置文件:
进入sites-enabled目录:
cd ../sites-enabled
建立引用之前配置文件的链接:
ln -s /etc/nginx/sites-available/SM3 ./SM3
查看一下链接是否成功建立:
ls -l
如果成功建立,能看到类似「XXX-> /etc/nginx/sites-available/xxx」这样一段信息。
最后:重启Nginx sudo service nginx restart
到这里就结束了。
有几点一定要注意:
1.如果你更新了项目文件,一定要重启Supervisor,命令如下:
sudo service supervisor stop
sudo service supervisor start
否则可能不能实时更新
2.阿里云安全组的端口开放要确认