阿里雲伺服器配置(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