阿里雲ECS部署python及flask(一)

因爲原先服務器是單位的,由於安全問題,不好放個人的東西,只好找一個虛擬主機之類的來放。但我對什麼雲或者虛擬主機都不懂,只是因爲在註冊域名的時候,看到阿里雲有一個免費套餐,反正不用錢,就想試試當練手,就弄了個雲服務器ECS基礎版。以下是就我個人的部署過程做個記錄:

  1. 下完單後,很快雲服務器 ECS實例就創建成功,登錄阿里雲管理控制檯,在實例中就可看到已經創建好的實例,並會看到實例的公網地址和私網地址。在其後邊的管理->基本信息->更多->重置密碼,可以修改root密碼。而實例後面的遠程連接,可以登錄上阿里雲上的這個實例。上去一看,其實就是一臺centOS的服務器。
  2. 在管理控制檯裏的遠程連接是網頁版的,不好看也麻煩。可以用mac的終端連接:ssh root@實例的公網地址。或者使用FinalShell遠程登錄更方便好用。
  3. 進入系統後,先對系統進行升級:

yum update

  1. 安裝python3:雲服務器裏已經安裝了python2.7,但我用的是python3。以下操作需要登錄到雲服務器
  • 首先安裝編譯的相關包。其命令如下:
    yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gcc make libffi-devel
  • 從https://www.python.org/ftp/python/ 找所需的版本,我下載3.7.1版本,命令:
    wget https://www.python.org/ftp/python/3.7.1/Python-3.7.1.tar.xz
  • 解壓:
    xz -d Python-3.7.1.tar.xz
    tar -xvf Python-3.7.1.tar
  • 解壓完成後,進入相應的解壓文件夾,進行編譯安裝:
    ./configure prefix=/usr/local/python3
    make && make install
    安裝完畢,/usr/local/目錄下就會有python3了
  • 設置軟連接
    ln -s /usr/local/python3/bin/python3 /usr/bin/python3
  1. 創建python的虛擬環境:

因爲是測試用,所以我沒有新建用戶。直接在/root下創建一個項目test。

  • mkdir /root/test
  • python3 -m venv /root/test/venv
  1. 上傳文件到雲服務器

將本地創建的test項目上傳到雲服務器,這一步是在本地機子上操作,在mac的終端上:

  1. 在虛擬環境中安裝所需的包
  • 在雲服務器端,進入剛纔創建的python虛擬環境:
    source /root/test/venv/bin/ activate
  • 安裝test項目所需的包(剛已經把requirements.txt上傳到雲服務器的/root/test/gh ):
    pip install -r /root/test/requirements.txt
  1. 依賴包安裝完成後,即可在虛擬環境中運行程序test。

python test.py

  1. 雲管理控制檯->安全組->配置規則->添加安全組規則,將test項目中使用的端口添加進去。(我的test項目使用的是4000端口,見下邊的test.py代碼)
  2. 在本地端使用瀏覽器打開該雲實例的公網地址:端口,就可以看到你的test項目了。test.py如下:
from flask import Flask

app=Flask(__name__)

@app.route('/')
def index():
    return '<center><h1>Hello Flask</h1></center>'

if __name__ == '__main__':
    app.run(host='0.0.0.0',port=4000)
  1. 安裝配置uwsgi,所有操作都需在雲服務器的虛擬環境裏。
  • 安裝uwsgi:

pip install uwsgi

  • 在項目中新建文件test_uwsgi.ini,編寫如下配置配置如下:
[uwsgi]

# uwsgi 啓動時所使用的地址與端口
socket = 127.0.0.1:8000

# 外網訪問端口,如果直接用uWSGI外網,這裏由於使用了Nginx,故註釋掉
# http= :80

# 指向網站目錄
chdir = /root/test/

# python 啓動程序文件
wsgi-file = test.py

# python 程序內用以啓動的 application 變量名
# app 是 manage.py 程序文件內的一個變量,這個變量的類型是 Flask的 application 類
callable = app

# 處理器數
processes = 4

# 線程數
threads = 2

#狀態檢測地址
stats = 127.0.0.1:9191

daemonize=/var/log/uwsgi.log
  • 啓動:uwsgi --ini test_uwsgi.ini
  • 使用uwsgi之後,將test.py裏的
app.run(host='0.0.0.0',port=4000)

改爲

app.run()

建議:

uwsgi服務啓動(start)停止(stop)重新裝載(reload) 一文來配置uwsgi。然後就可以使用以下命令來操作uwsgi:

uwsgi --ini uwsgin.ini # 啓動
uwsgi --reload uwsgi/uwsgi.pid # 重啓
uwsgi --connect-and-read uwsgi/uwsgi.status # 連接並查看狀態
uwsgi --stop uwsgi/uwsgi.pid # 停止服務

  1. 在雲服務器上安裝配置nginx。
  • 安裝nginx:

yum install nginx

  • 配置nginx.conf。使用find / grep nginx.conf查找nginx.conf的路徑,並修改其中的server{},如下:
    server {
        listen       80 default_server;
    #    listen       [::]:80 default_server;
        server_name  test;
    #    root         /usr/share/nginx/html;
        # Load configuration files for the default server block.
        include /etc/nginx/default.d/*.conf;
        location /static {
    #            alias /var/www/execution/static;
        }
        location / {
    #			這裏指向uwsgi裏socket=*設置的地址   
                uwsgi_pass 127.0.0.1:8000;
                include uwsgi_params;
        }
        error_page 404 /404.html;
            location = /40x.html {
        }
        error_page 500 502 503 504 /50x.html;
            location = /50x.html {
        }
    }
  • 驗證配置是否正確: nginx -t
  • 查看Nginx的版本號:nginx -V
  • 啓動Nginx:nginx -c /etc/nginx/nginx.conf
  • 快速停止或關閉Nginx:nginx -s stop
  • 正常停止或關閉Nginx:nginx -s quit
  • 配置文件修改重裝載命令:nginx -s reload
  1. 安裝mysql:
  • 下載並添加存儲庫:
    下載地址可以在https://www.mysql.com/downloads/ ->Yum Repository ->找到Red Hat Enterprise Linux 7 / Oracle Linux 7 (Architecture Independent), RPM Package(mysql80-community-release-el7-1.noarch.rpm),點擊右邊的Download ->最低下的“No thanks, just start my download”即是該下載地址。

sudo yum localinstall https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm

  • 設置安裝版本,默認是mysql5.7

vi /etc/yum.repos.d/mysql-community.repo

將原先版本下的enabled改爲0,想安裝的版本下的enabled改成 1 即可。

  • 安裝MySQL包

yum install mysql-community-server

  • 安裝完成後,啓用並啓動MySQL服務類型:

sudo systemctl enable mysqld
sudo systemctl start mysqld

  • MySQL安全:
    當第一次啓動MySQL服務器時,爲MySQL根用戶生成一個臨時密碼。 您可以通過運行以下命令找到密碼:

sudo grep ‘temporary password’ /var/log/mysqld.log

運行mysql_secure_installation命令來提高MySQL安裝的安全性,並重設root密碼。其後會有一些刪除匿名用戶和臨時數據庫、是否允許root遠程訪問等操作,一路“y”下去就可以了:

sudo mysql_secure_installation

連接上mysql,並創建數據庫:

mysql -u root -p
CREATE DATABASE test;


配置多項目自啓動,可參考《阿里雲ECS部署python及flask(二):使用uwsgi emperor +Nginx部署自動啓動多個web項目》

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章