CentOS + Flask +Python +MySql 部署網(wǎng)站運行在阿里云--筆記

叨嘮幾句

此筆記僅作為在學(xué)習(xí)部署阿里云后臺項目的時候土居,踩的坑,和填的坑嬉探,也許很多不對和不妥的地方擦耀,還請指出....

等一下,還有句話

這個筆記的前提是涩堤,已經(jīng)在本地或者哪里都可以眷蜓,已經(jīng)學(xué)習(xí)完,編寫好了 python + flask + mysql 的工程胎围,本地運行是OK的哦

沒有寫好的項目吁系?教程?

網(wǎng)上有大把鴨,我也是初學(xué)萌新白魂,打擾了汽纤,下一個.....┭┮﹏┭┮

開工,沖鴨

1碧聪、注冊購買一個ECS 服務(wù)器冒版,選擇CentOS,登錄液茎,常規(guī)操作逞姿。

配置只有最重要的一步是辞嗡,要在管理頁面中配置添加好安全組規(guī)則添加打開要使用公網(wǎng)訪問的端口號(這步不配置,公網(wǎng)無法訪問該端口V驮臁P摇!Z搜)

怎么連接服務(wù)器挺狰?

xshell 了解一下

2、基本環(huán)境配置

  • 安裝python 买窟,但CentOS 默認安裝有

如果沒有丰泊,自行安裝

安裝setuptools

這是個啥

setuptools是Python distutils增強版的集合,它可以幫助我們更簡單的創(chuàng)建和分發(fā)Python包始绍,尤其是擁有依賴關(guān)系的瞳购。用戶在使用setuptools創(chuàng)建的包時,并不需要已安裝setuptools亏推,只要一個啟動模塊即可

安裝吧

#wget https://pypi.python.org/packages/2.7/s/setuptools/setuptools-0.6c11-py2.7.egg  --no-check-certificate 
#chmod +x setuptools-0.6c11-py2.7.egg 
#sh setuptools-0.6c11-py2.7.egg

pip的安裝

# wget https://pypi.python.org/packages/source/p/pip/pip-1.3.1.tar.gz --no-check-certificate


#chmod +x pip-1.3.1.tar.gz 
#tar xzvf pip-1.3.1.tar.gz 
#cd pip-1.3.1 
#python setup.py install 

安裝flask相關(guān)包

需要安裝的清單学赛,根據(jù)需要配置 requirements.txt

內(nèi)容如下

Flask==1.0.2
Flask-SQLAlchemy==2.3.2
Jinja2==2.10
MarkupSafe==1.1.0
PyMySQL==0.9.3
SQLAlchemy==1.2.15

一鍵安裝,方便吞杭,不用一個個install 盏浇,很麻煩

pip install -r requirements.txt

安裝 uWSGI

pip install uwsgi

這里使用這個的話,還需要配置賊多東西芽狗,我配置多次绢掰,一直出錯,這里先挖坑童擎,后面再填B隆!柔昼!

上傳項目文件

直接把寫好的項目文件哑芹,比如在PyCharm 上寫好,并且運行OK的項目放到服務(wù)器自定義文件夾

怎么放捕透?

xftp 了解一下

比如目錄如下

MySQLProject
    ---app
        ---run.py
        ---....py 其他代碼文件
    ---venv
        ---Include
        ---Lib
        ---....其他文件

其中 app運行的host 要配置成 阿里云的購買的服務(wù)器的私有IP

這樣聪姿,使用公網(wǎng)訪問才可以訪問,類似如下

host 換成自己的

app.run(host='172.17.25.***', port=5005,debug=True)
            

否則會無響應(yīng)乙嘀,我也不知道為啥D┕骸!虎谢!藍過~

運行

在項目app路徑下執(zhí)行需要執(zhí)行的py代碼文件就可以

python run.py

這里99.99% 會出現(xiàn)執(zhí)行不了的情況


    Traceback (most recent call last):
    File "run.py", line 2, in <module>
    from app import app
    ModuleNotFoundError: No module named 'app'

主要是環(huán)境變量的問題盟榴,因為這個工程是在PyCharm IDE 上運行的,IDE默認配置當(dāng)前目錄為工作目錄了婴噩,已經(jīng)把工作目錄添加到了 sys.path 中了

所以只要添加修改環(huán)境變量就可以擎场,網(wǎng)上說在代碼中添加我試了沒成功羽德,可能我打開方式錯了

我使用的辦法是,修改 python 環(huán)境變量迅办,設(shè)置PYTHONPATH

在命令窗口添加路徑

export PYTHONPATH=$PYTHONPATH:/root/mypro/MySQLProject

設(shè)置成你當(dāng)前的項目

但是宅静,此方法只在當(dāng)前命令窗口生效,即如果打開一個新的Terminal 窗口站欺,定位到當(dāng)前目錄姨夹, 打印PYTHONPATH 是沒有剛才加入的路徑的

更好的辦法,后面試了再更新矾策。

如果想偷懶磷账,有個笨重的辦法,寫一個 mybuild.sh

#!/bin/bash

: << !   

======================================================================
         =      修改 python 環(huán)境變量贾虽,設(shè)置PYTHONPATH                          =
         =      export PYTHONPATH=$PYTHONPATH:/root/mypro/MySQLProject        =
         ======================================================================

!


echo "======================================================================"
if [ ! -n "$1" ]
        then
        echo "請輸入需要設(shè)置的工程路徑够颠,例如 sh mybuild.sh MySQLProject"
        else
        # 先clear
        export PYTHONPATH=
        echo "設(shè)置為 :"  $1
        export PYTHONPATH=$PYTHONPATH:/root/mypro/$1
fi

echo "現(xiàn)在 PYTHONPATH 環(huán)境變量為是 : "
echo $PYTHONPATH

echo "======================================================================"

然后下次需要運行哪個項目,就執(zhí)行下

sh mybuild.sh MySQLProject/

就接著干其他的吧

其他安裝榄鉴,根據(jù)項目需要

因為該項目需要用到 MySQL履磨,所以還需要安裝配置 MySQL

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 repolist all | grep mysql

安裝最新版本

sudo yum install mysql-community-server

啟動 MySQL 服務(wù)

sudo service mysqld start
sudo systemctl start mysqld #CentOS 7
sudo systemctl status mysqld

出現(xiàn)下面信息庆尘,就說明啟動成功了

● mysqld.service - MySQL Server
   Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled)
   Active: active (running) since Fri 2019-01-04 11:56:54 CST; 1 day 3h ago
     Docs: man:mysqld(8)
           http://dev.mysql.com/doc/refman/en/using-systemd.html
  Process: 2869 ExecStart=/usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid $MYSQLD_OPTS (code=exited, status=0/SUCCESS)
  Process: 2852 ExecStartPre=/usr/bin/mysqld_pre_systemd (code=exited, status=0/SUCCESS)
 Main PID: 2872 (mysqld)
   CGroup: /system.slice/mysqld.service
           └─2872 /usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid

Jan 04 11:56:54 iZ2zedad0aqoqx2mzuft73Z systemd[1]: Starting MySQL Server...
Jan 04 11:56:54 iZ2zedad0aqoqx2mzuft73Z systemd[1]: Started MySQL Server.

查看原始密碼

grep "temporary password" /var/log/mysqld.log 

    2019-01-04T02:18:49.750334Z 1 [Note] A temporary password is generated for root@localhost: z#<BkahqU3XK
    
z#<BkahqU3XK 這個就是原始密碼
    

修改密碼

mysql -u root -p

輸入上面原始密碼登錄進入MYSQL

然后

update user set password=password('AndJun_123') where user='root';

flush privileges;

退出MySQL

使用新密碼重新登錄剃诅,OK即可

創(chuàng)建數(shù)據(jù)庫

CREATE DATABASE 數(shù)據(jù)庫名;
    
.......
        

其他操作自行學(xué)習(xí)MYsql 吧

使用公網(wǎng)訪問

如無意外,配置好上面驶忌,運行成功矛辕,即可使用瀏覽器打開公網(wǎng)+端口+url 測試

比如

http://公網(wǎng)地址/index

啥的.......

不過這只是debug測試的部署方式,正式使用還是不能這樣部署付魔,好像得用

1. Web 服務(wù)器采用 uwsgi host Flask
2. 用 Supervisor 引用 uwsgi 作常規(guī)啟動服務(wù)
3. 基于 Nginx 作反向代理

所以得安裝聊品,配置

uwsgi

Nginx

Supervisor

這個待更新,在配置研究中......??

看起來內(nèi)容不多几苍,配置簡單翻屈,可是對我一個沒接觸過的后端和這些什么配置的

emmmmm這里花了我兩天半鴨,瘋狂百度妻坝,Google 不說了伸眶,說多都是淚┭┮﹏┭┮

重點是網(wǎng)上的資料有些參差不齊,或者使用的工具和我又不太一樣

所以需要自己去踩各種坑刽宪,再慢慢填坑.....

這個作為記錄厘贼,為了下次別再踩同樣的坑了,快速簡單部署好圣拄,然后研究更優(yōu)化的方式會慢慢更新

這個筆記嘴秸,慢慢完善達到從0配置,到最好成熟一鍵啟動,遷移啥的吧.....

See U

......

更新

有一個博客的小項目岳掐,運行查詢用戶博文的時候凭疮,結(jié)果一直給我發(fā)生異常,可是本地運行卻沒事

UnicodeDecodeError('ascii', '\xe5\x85\xa8\xe9\x83\xa8\xe5\x8d\x9a\xe6\x96\x87', 0, 1, 'ordinal not in range(128)'))

雖然知道是編碼的問題岩四,卻迷迷糊糊搞了好久,哎哥攘,記錄下

在出錯的.py 文件頭中剖煌,加入以下代碼

import sys   #reload()之前必須要引入模塊
reload(sys)
sys.setdefaultencoding('utf-8')

運行,完美 博文都出來了 O(∩_∩)O

使用Navicat連接阿里云ECS服務(wù)器上的MySQL數(shù)據(jù)庫

先登錄進入mySql

mysql -u root -p

然后授權(quán)逝淹,root 賬號 123456 密碼(換成自己的)

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;

然后看到

Query OK, 0 rows affected (0.00 sec)

然后就可以使用 Navicat 去連接了

詳細配置如下

先配置好常規(guī)配置耕姊,主機記住寫這個 localhost

Navicat 常規(guī)配置

然后配置 ssh,填寫好阿里云服務(wù)器公網(wǎng)地址即可

Navicat SSH 配置

然后就可以連接了....暢享UI界面操作吧 O(∩_∩)O

填坑

服務(wù)器搭好了栅葡,apk也寫好了茉兰,想用apk去通信下,操作所有接口看看

結(jié)果欣簇,發(fā)現(xiàn) post 的時候规脸,怎么后臺都獲取不到參數(shù) ?熊咽?莫鸭?what happen !!

apk 也沒錯啊,只能是后臺接口的問題了

再看看

.......

原來是后臺在接收post 參數(shù)的時候横殴,錯了被因,我一直接收的是get 類型的參數(shù),管不得獲取不到

flask獲取參數(shù)方式:

request.form.get("key", type=str, default=None) 獲取表單數(shù)據(jù)

request.args.get("key") 獲取get請求參數(shù)

request.values.get("key") 獲取所有參數(shù)

修改完衫仑,apk 也正常工作

記錄下~~ 下班 O(∩_∩)O

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末梨与,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子文狱,更是在濱河造成了極大的恐慌粥鞋,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,311評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件瞄崇,死亡現(xiàn)場離奇詭異陷虎,居然都是意外死亡,警方通過查閱死者的電腦和手機杠袱,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,339評論 2 382
  • 文/潘曉璐 我一進店門尚猿,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人楣富,你說我怎么就攤上這事凿掂。” “怎么了?”我有些...
    開封第一講書人閱讀 152,671評論 0 342
  • 文/不壞的土叔 我叫張陵庄萎,是天一觀的道長踪少。 經(jīng)常有香客問我,道長糠涛,這世上最難降的妖魔是什么援奢? 我笑而不...
    開封第一講書人閱讀 55,252評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮忍捡,結(jié)果婚禮上集漾,老公的妹妹穿的比我還像新娘。我一直安慰自己砸脊,他們只是感情好具篇,可當(dāng)我...
    茶點故事閱讀 64,253評論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著凌埂,像睡著了一般驱显。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上瞳抓,一...
    開封第一講書人閱讀 49,031評論 1 285
  • 那天埃疫,我揣著相機與錄音,去河邊找鬼孩哑。 笑死熔恢,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的臭笆。 我是一名探鬼主播叙淌,決...
    沈念sama閱讀 38,340評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼愁铺!你這毒婦竟也來了鹰霍?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,973評論 0 259
  • 序言:老撾萬榮一對情侶失蹤茵乱,失蹤者是張志新(化名)和其女友劉穎茂洒,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體瓶竭,經(jīng)...
    沈念sama閱讀 43,466評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡督勺,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,937評論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了斤贰。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片智哀。...
    茶點故事閱讀 38,039評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖荧恍,靈堂內(nèi)的尸體忽然破棺而出瓷叫,到底是詐尸還是另有隱情屯吊,我是刑警寧澤,帶...
    沈念sama閱讀 33,701評論 4 323
  • 正文 年R本政府宣布摹菠,位于F島的核電站盒卸,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏次氨。R本人自食惡果不足惜蔽介,卻給世界環(huán)境...
    茶點故事閱讀 39,254評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望煮寡。 院中可真熱鬧虹蓄,春花似錦、人聲如沸洲押。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,259評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽杈帐。三九已至,卻和暖如春专钉,著一層夾襖步出監(jiān)牢的瞬間挑童,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工跃须, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留站叼,地道東北人。 一個月前我還...
    沈念sama閱讀 45,497評論 2 354
  • 正文 我出身青樓菇民,卻偏偏與公主長得像尽楔,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子第练,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,786評論 2 345