阿里云服务器配置(Ubuntu+Nginx+Flask)
Ubuntu 16.04
Nginx 1.12.0
MongoDB 3.4
Python 3
环境配置
配置 FTP 服务
sudo apt-get install vsftpd
启动 vsftpd 服务:
sudo service vsftpd restart
Windows 安装 FileZilla,输入主机、用户名、密码、端口,然后连接。
Nginx 安装
更改 nginx
安装源,以保证安装的是最新稳定版。:
vim /etc/apt/sources.list
添加:
deb http://nginx.org/packages/ubuntu/ xenial nginx
deb-src http://nginx.org/packages/ubuntu/ xenial nginx
更新源,否则会报错
sudo apt-get update
安装 Nginx:
sudo apt-get install nginx
启动 Nginx 测试:
sudo /etc/init.d/nginx start
# 或者
service nginx start
此时打开浏览器访问你的服务器,就能看到经典的 Nginx 欢迎页面!
参看:Nginx Install
Python 相关
安装 Python3 环境的 pip
sudo apt-get install python3-pip
安装创建独立的Python 环境所需的 virtualenv
pip install virtualenv
在指定路径下创建 Python3 虚拟环境:
virtualenv -p /usr/bin/python3 py3env
启动虚拟环境:
source py3env/bin/activate
退出虚拟环境:
deactivate
uWSGI
配置复杂,用 Gunicorn 替代。
进入虚拟Python 环境:
pip3 install uwsgi
Gunicorn
使用 Gunicorn 配置更简单。在虚拟环境下,pip install gunicorn
,安装 Gunicorn,新建配置文件 deploy_config.py
,内容如下:
import os
bind='127.0.0.1:8080' #绑定的端口
workers=4 #worker数量
backlog=2048
debug=True
proc_name='gunicorn.pid'
pidfile='/var/log/gunicorn/debug.log'
loglevel='debug'
启动 Gunicorn:
gunicorn -c deploy_config.py myapp:app
myapp
是入口Python文件名,app
是Flask 实例名。如果输出 worker 相关信息,表明启动成功。
配置 Nginx
修改 /etc/nginx/sites-available/
下的defalut
文件为如下内容:
server {
listen 80;
server_name example.com; # 这是HOST机器的外部域名,用IP地址也行
location / {
proxy_pass http://127.0.0.1:8080; # 这里是指向 gunicorn host 的服务地址
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
配置完了之后软链接一份到 /etc/nginx/sites-enabled/defalut
下面
ln -s /etc/nginx/sites-available/defalut /etc/nginx/sites-enabled/defalut
注:也可以删除default
文件的,新建自己的配置文件,并建立软链接。
配置 Supervisor
安装:
apt-get install python-setuptools
easy_install supervisor
echo_supervisord_conf > /etc/supervisord.conf
配置文件中添加:
[program:myapp]
command=/home/www/myapp/py3env/bin/gunicorn -c /home/www/myapp/deploy_config.py myapp:app
autorstart=true
directory=/home/www/myapp
autorestart=true
startsecs=10
startretries=20
[program:nginx]
command=/usr/sbin/nginx
startsecs=0
stopwaitsecs=0
autostart=true
autorestart=true
stdout_logfile=/var/deploy/log/nginx.log
stderr_logfile=/var/deploy/log/nginx.err
如出现端口占用的错误,则:
sudo unlink /tmp/supervisor.sock
sudo unlink /var/run/supervisor.sock
启动 Supervisord:
supervisord -c /etc/supervisord.conf
关闭 supervisor:
supervisorctl shutdown
重新载入配置
supervisorctl reload
补充
Linux 命令
命令 | 功能 | 实例 |
---|---|---|
cp | 复制文件或目录 | cp file1 file2 |
监听端口:
lsof -i tcp | grep LISTEN
******************************
sshd 837 root 3u IPv4 8888 0t0 TCP *:ssh (LISTEN)
vsftpd 4463 root 3u IPv4 19989 0t0 TCP *:ftp (LISTEN)
Nginx 知识补充
tree /etc/nginx/
/etc/nginx/
├── conf.d
├── fastcgi_params
├── koi-utf
├── koi-win
├── mime.types
├── naxsi_core.rules
├── naxsi.rules
├── naxsi-ui.conf.1.4.1
├── nginx.conf
├── proxy_params
├── scgi_params
├── sites-available
│ └── default
├── sites-enabled
│ └── default -> /etc/nginx/sites-available/default
├── uwsgi_params
└── win-utf
文件夹
sites-enabled
中的文件为sites-available
文件夹中文件的硬链接。配置文件从
sites-avalidable中加载,默认配置文件为其中的
default` 文件。nginx.conf
为主配置文件。uwsgi_parems
是与 Python 相关的文件。fastcgi_parms
是与 PHP 相关的文件。nginx 的默认网站目录
/usr/share/nginx/html
。
常用命令:
nginx -s stop 快速关闭 nginx
nginx -s quit 优雅的关闭 nginx
nginx -s reload 重新加载配置
nginx -s reopen 重新打开日志文件
获取所有运行中的 nginx 进程列表:
ps -ax | grep nginx
若 nginx 主进程 pid
为 1628
,则可用kill
命令发送 QUIT
信号,关闭此进程:
kill -s QUIT 进程ID