Centos7系統,Nginx+uwsgi+flask框架部署web應用

Centos7系統,Nginx+uwsgi+flask框架部署web應用python

參考 https://www.jianshu.com/p/da28ec28ef4b
參考 https://blog.csdn.net/woshizhiwu/article/details/78237921mysql

1.安裝git
yum install gitlinux

  1. 安裝 Mysql
    添加 MySQL YUM 源
    $wget 'https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm'
    $sudo rpm -Uvh mysql57-community-release-el7-11.noarch.rpm

安裝最新版本
yum install mysql-community-servernginx

啓動 MySQL 服務
#CentOS 7
$sudo service mysqld start
$sudo systemctl start mysqld
$sudo systemctl status mysqldgit

修改密碼
Mysql安裝時會生成一個默認密碼,使用 grep "temporary password" /var/log/mysqld.log命令,返回結果最後引號後面的字符串就是root的默認密碼
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewPassword';github

  1. 安裝python3 pip3

安裝 Python 3
sudo mkdir /usr/local/python3 # 建立安裝目錄
$ wget --no-check-certificate https://www.python.org/ftp/python/3.6.2/Python-3.6.2.tgz # 下載 Python 源文件 web

注意:wget獲取https的時候要加上:--no-check-certifica

$ tar -xzvf Python-3.6.2.tgz # 解壓縮包
$ cd Python-3.6.2 # 進入解壓目錄
sudo ./configure --prefix=/usr/local/python3 # 指定建立的目錄
sudo make
sudo make install # 編譯安裝sql

配置兩個版本共存
建立 python3 的軟連接:
$ sudo ln -s /usr/local/python3/bin/python3 /usr/bin/python3flask

安裝 Python 3 的 pipcentos

下載源代碼

$ wget --no-check-certificate https://github.com/pypa/pip/archive/9.0.1.tar.gz

$ tar -zvxf 9.0.1.tar.gz # 解壓文件

$ cd pip-9.0.1

$ python3 setup.py install # 使用 Python 3 安裝

建立連接:

$ sudo ln -s /usr/local/python3/bin/pip /usr/bin/pip3

建立虛擬環境
cd /home/www/blog
mkdir venv
python3 -m venv venv

激活虛擬環境:
source venv/bin/activate

而後根據requirements.txt文件安裝依賴包:
pip3 install -r requirements.txt

開始正式部署:

  1. 簡單介紹
    在linux上,nginx+uwsgi是最多見的部署方式之一。整個部署過程大致分爲三部分。

    • nginx,uwsgi安裝。
    • 上傳app文件。
    • nginx,uwsgi配置。
  2. nginx,uwsgi安裝
    nginx安裝過程能夠直接 # yum install nginx
    python開發頭文件安裝 # yum install python-devel

安裝uwsgi。
pip install uwsgi
uwsgi官方文檔地址:http://uwsgi-docs.readthedocs.io/en/latest/

  1. 上傳項目到服務器

4.nginx,uwsgi配置
打開nginx配置文件nginx.conf,這個文件默認位置爲安裝目錄下的conf目錄中。
只須要修改server塊下的location塊內容就能夠,
若須要其餘的配置,日誌,多應用等能夠參考nginx官方文檔,或者相應書籍。
location塊配置以下。

location / {
include uwsgi_params;
uwsgi_pass 127.0.0.1:3031;
 }

接下來在項目根目錄下新建uwsgi.ini文件用以啓動uwsgi。

[uwsgi]
master = true
socket = 127.0.0.1:3031
virtualenv = ./venv
wsgi-file = manage.py
callable = app
processes = 4
threads = 2
stats = 127.0.0.1:919

socket選項必定要與nginx,conf中相同。
若是用了虛擬環境,將virtualenv選項設置你的虛擬環境位置。沒用虛擬環境則不加次條。
wsgi-file,運行項目打開的第一個文件。
callable ,manage.py中你建立的app的名字。
進程和線程根據硬件性能設置相應數值。
把工做目錄定位到nginx安裝目錄下,運行nginx:
./sbin/nginx
把工做目錄定位到項目根目錄下,
uwsgi uwsgi.ini

若是沒有報錯,那麼在瀏覽器中輸入你的服務器ip或者解析到該ip的域名便可訪問你的應用了。

後臺啓動 uwsgi : uwsgi deploy_new/uwsgi.ini -d uwsgi.log

安裝 killall: centos7精簡安裝後,使用中發現沒有killall命令。 安裝這個包便可: yum install psmisc

關掉 uwsgi # killall -9 uwsgi

5.可能遇到的問題配置完成後,鏈接失敗。 可能服務器沒有開放80號端口,這個是默認端口。打開方法以下 firewall-cmd --zone=public --add-port=80/tcp --permanent 命令做用: –zone :做用域 –add-port : 添加的端口,格式爲 端口/通信協議 –permanent : 永久生效,重啓後不失效。 (21,22端口打開方法相同)nginx配置修改後必定要重啓服務。若是須要開機啓動,能夠使用Supervisor。

相關文章
相關標籤/搜索