阿里雲服務器配置(Ubuntu+Nginx+Flask)

阿里雲服務器配置(Ubuntu+Nginx+Flask)

Ubuntu 16.04
Nginx 1.12.0
MongoDB 3.4
Python 3

環境配置

配置 FTP 服務

sudo apt-get install vsftpd

啓動 vsftpd 服務:html

sudo service vsftpd restart

Windows 安裝 FileZilla,輸入主機、用戶名、密碼、端口,而後鏈接。python

Nginx 安裝

更改 nginx 安裝源,以保證安裝的是最新穩定版。:nginx

vim /etc/apt/sources.list

添加:ubuntu

deb http://nginx.org/packages/ubuntu/ xenial nginx
deb-src http://nginx.org/packages/ubuntu/ xenial nginx

更新源,不然會報錯vim

sudo apt-get update

安裝 Nginx:瀏覽器

sudo apt-get install nginx

啓動 Nginx 測試:bash

sudo /etc/init.d/nginx start
# 或者
service nginx start

此時打開瀏覽器訪問你的服務器,就能看到經典的 Nginx 歡迎頁面!
參看:Nginx Install服務器

Python 相關

安裝 Python3 環境的 pipapp

sudo apt-get install python3-pip

安裝建立獨立的Python 環境所需的 virtualenvssh

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 主進程 pid1628,則可用kill命令發送 QUIT 信號,關閉此進程:

kill -s QUIT 進程ID
相關文章
相關標籤/搜索