网络上能搜索到的资源基本都有些疏漏的地方,把自己的配置过程Po上来做个参考防止重复踩坑。
https://zhuanlan.zhihu.com/p/22126999 这篇专栏写得还不错,参考了其中的一些内容做了自己的配置,不过这篇里也有一些没写清楚的超级坑点,坑了我好久,我在这里补充一些内容来防止重复踩坑了。
相关版本清单如下:
系统: Ubuntu 16.04 64位
WSGI: Gunicorn
进程监控: Supervisor
服务器软件:nginx
Python版本: python3.5.2
云服务器相关
笔者用的是阿里云ECS的学生机,当然你用其它家的产品也大同小异啦。
ssh连接:
1 | ssh root@xxx.xxx.xxx.xxx |
建立普通用户账号:
1 | useradd www -d /home/www -m |
安装相关支持
1 | pip install flask |
如果安装virtualenv遇到以下报错:
1 | IOError: [Errno 2] No such file or directory: '/tmp/pip-kYFqUa-build/setup.py' |
尝试:
1 | pip install --upgrade pip |
页面配置
先保留root终端,新开一个终端并使用刚才新建的用户登录服务器。
1 | ssh www@xxx.xxx.xxx.xxx |
创建网站根目录:
1 | cd ~ |
创建了工程的文件夹,这里用blog来代替,根据实际情况要换成其它的命名。
下面创建虚拟环境:
1 | cd blog |
使用SFTP可以上传本地的工程文件到blog文件夹。建议使用www用户。
pip包生成requiements.txt:
1 | pip freeze > requirements.txt |
Gunicorn配置
下面配置Gunicorn:
1 | source venv/bin/activate |
之后用vim写入:
1 | # 进程数 |
:wq
保存退出。
安装组件:
1 | pip install -r requirements.txt |
创建日志文件夹:
1 | mkdir logs |
退出虚拟环境:
1 | deactivate |
Supervisor配置
使用root用户:
配置supervisor:
1 | apt install supervisor |
vim写入:
1 | # 进程的名字,取一个以后自己一眼知道是什么的名字。 |
:wq
保存。
回到supervisor的目录:
1 | cd /etc/supervisor |
启动supervisor:
1 | service supervisor start |
加载配置:
1 | sudo supervisorctl reread |
Nginx配置
开始配置nginx:
1 | apt install nginx |
输入对于blog的配置:
1 | server { |
检查并根据实际情况修改上面的server_name和root配置。检查监听端口和上面设置是否一致。:wq
保存。
下面链接配置文件到sites-enabled:
1 | cd /etc/nginx/sites-enabled/ |
重启nginx:
1 | service nginx restart |
阿里云安全组配置允许入方向80端口。完成。
键入域名或ip即可访问。