?阿里云服務(wù)器超級詳細(xì)配置(FLASK+UWSGI+NGINX)
一準(zhǔn)備工作:
我們先到阿里云官網(wǎng)注冊和登錄以及實名認(rèn)證,然后可以在官網(wǎng)上購買收費的云服務(wù)器或者領(lǐng)取一個月免費的云服務(wù)器。
官網(wǎng):https://www.aliyun.com/
我們這次安裝的是Ubuntu? 18.04 64位? 阿里云目前最新版的系統(tǒng)。

輸入root密碼? 記住哦~這個就是登錄服務(wù)器的密碼

服務(wù)器地址,第一個( ̄▽ ̄)"復(fù)制一下~

配置安全組,主要設(shè)置容許你的網(wǎng)頁訪問的端口。。。go on~

端口范圍和授權(quán)對象必須要寫哦,0.0.0.0/0就是對所有人公開~

OK,下面我們進入我們的服務(wù)器,當(dāng)然如果你的不是阿里云的服務(wù)器也可以,你的服務(wù)器裝好系統(tǒng)之后可以從這一步開始:

下載putty,SSH啥的 你自己隨意,我覺得這個順手一點吧。黑色的地方填寫服務(wù)器地址 其他不變。然后OPEN!
二、進入ubunru終端界面并創(chuàng)建虛擬環(huán)境:
?? ?輸入密碼進來之后:
?? ?第一個命令,更新服務(wù)器列表? ?O(∩_∩)O
?? ?1.apt-get update? ? ?

?? ?2.這個mysql需要就裝。?
?? ??? ?如果你用的sqlite,這個可以不裝,以后需要再裝也行,但是還是要說一下:
?? ???apt-get install mysql-server
? ? ? apt-get install libmysqlclient-dev? ? ?
? ? ? 裝完之后可以用命令查看安裝的包和軟件:
? ? ? dpkg -s mysql-server

?? ?3.如果你安裝了mysql,就順便把redis也安裝一下。
????????redis是什么,后面有說明的,想了解的可以去看看。
?? ??? ?apt-get install redis-server? ? ? redis的安裝(緩存數(shù)據(jù)庫)
?? ?4.? 安裝 virtualenv? (虛擬環(huán)境):
? ? ? ? 如果這里提示要安裝 PIP 就? 安裝一下? pip??
?? ??? ?apt install python-pip
?? ?? ? 再安裝 :
? ???????pip install?virtualenv
?? ??? pip3 install virtualenvwrapper (虛擬環(huán)境管理工具) (如果是python3? 切換下)
? ? ? 至此虛擬環(huán)境就安裝好了 O(∩_∩)O?
? ? ? 恭喜你完成了很多人要爬很多坑的一步。
-----------------------------------------這里應(yīng)該有分割線---------------------------------------------
? ? ? ?接下來我們看下?virtualenvwrapper.sh 的位置,為什么要看呢,因為我們的服務(wù)器怕找不到虛擬環(huán)境所需要的文件,??
? ? ? ? ?使用命令 :which??virtualenvwrapper.sh? ?然后添加以下代碼
?? ??? ?編輯~/.bashrc文件,內(nèi)容如下: (vim~/.bashrc? ?修改文件用? i 命令,改完之后esc退出編輯模式 ,輸入:wq 保存退出)

?? ??? ?? ? (每一個用戶在進入home目錄后,其中都會有一個隱藏文件.bashrc ,按ctrl+h可以顯示隱藏文件,該文件保存該用戶角色下的環(huán)境變量,所以直接打開終端時,運行的命令都是從?這 個.bashrc中去尋找)。
在? .bashrc?文件中修改 :
export WORKON_HOME=$HOME/.virtualenvs/?
export PROJECT_HOME=$HOME/workspace/?
exportVIRTUALENVWRAPPER_PYTHON=/usr/bin/python3
source /usr/local/bin/virtualenvwrapper.sh

用的3.5版本安裝的這個環(huán)境,系統(tǒng)的2.7版本是沒有的。
“exportVIRTUALENVWRAPPER_PYTHON=/usr/bin/python3”
就是告訴服務(wù)器設(shè)置在python3的環(huán)境變量下
如果不指定python3的位置:
which python3
然后修改“ = ” 號后面的。
退出VIM后千萬一定要加上這條命令,馬上執(zhí)行:
source ~/.bashrc
后面如果報錯,那就是虛擬環(huán)境環(huán)境出問題了:
可以? ?whichvirtualenvwrapper.sh?
然后修改下:
“source /usr/local/bin/virtualenvwrapper.sh”的路徑。
理論上跟我的一步一步走 是不會錯的。這里要小伙伴們好好理解一下。
OK 虛擬環(huán)境已經(jīng)配置好了,
現(xiàn)在便是創(chuàng)建虛擬環(huán)境。
我們創(chuàng)建一個py3_flask的虛擬環(huán)境:
mkvirtualenv -p python3 py3_flask
查看剛剛創(chuàng)建的虛擬環(huán)境:
workon
進入虛擬環(huán)境:
workon py3_flask
這個時候 會有變化哦,是不是root前面已經(jīng)有(py3_flask)了,代表我們已經(jīng)進入這個虛擬環(huán)境了
(py3_flask) root@*******:
使用 pip list就可以查看當(dāng)前虛擬環(huán)境安裝了哪些包了。
附上虛擬環(huán)境常用命令:
mkvirtualenv env1:創(chuàng)建運行環(huán)境 env1
workon env1: 工作在 env1 環(huán)境 或 從其它環(huán)境切換到 env1 環(huán)境
deactivate: 退出終端環(huán)境
其它的:
rmvirtualenv ENV:刪除運行環(huán)境ENV
mkproject mic:創(chuàng)建mic項目和運行環(huán)境mic
mktmpenv:創(chuàng)建臨時運行環(huán)境
lsvirtualenv: 列出可用的運行環(huán)境
lssitepackages: 列出當(dāng)前環(huán)境安裝了的包
創(chuàng)建的環(huán)境是獨立的,互不干擾,無需sudo權(quán)限即可使用 pip 來進行包的管理。
三、安裝uwsgi:
升級下我們的 pip? ?(如果提示 PIP 需要升級? 可以這樣:pip3 install --upgrade pip??升級PIP)
進入到虛擬環(huán)境安裝:uwsgi
workon?py3_flask??進入:
uwsgi 的安裝:
?pip3 uwsgi
如果覺得慢可以選擇安裝源,比如這樣:
pip3 install -i?https://pypi.douban.com/simple?uwsgi
使用的 豆瓣的安裝源? 速度會快很多哦。
OK,安裝好了 uwsgi 那么下一步就要安裝 FLASK。
四、安裝FLASK
一樣的安裝方法:
pip3? install? flask??
OK下面 我們用Flask 來測試下我們的網(wǎng)頁:
用? vim 工具 修改下 app.py的一些小參數(shù)
如果你用 pycharm的話,應(yīng)該指定創(chuàng)建Flask后會有一個 自動生成的app.py
我們就來測試它,復(fù)制那段代碼,用vim創(chuàng)建一個test.py的文件。
(不測試,就可以跳過這段,完全不影響)
最后的app()修改如下:
app(host='0.0.0.0',port=5000 , debug='True')

然后保存退出? vim ,好了第一次運行我們的網(wǎng)站:
python3? app.py
瀏覽器打開 輸入:
你的網(wǎng)址:5000
不要忘記加端口哦。
是不是看到網(wǎng)頁了。
五、安裝? nginx:
nginx的安裝:
sudo apt-get install nginx

下載ngnix? 也是在虛擬環(huán)境。
很快就安裝好了。
如果出問題了,?@!
那好吧,升級下? sudo apt-get updata
在安裝就可以了。
安裝好了之后就是最重要的配置了。
六、配置uwsgi和nginx:
如果需要拷入你的項目文件到服務(wù)器:
一般推薦使用工具,比如【winscp】,把項目文件放好,一般放在HOME目錄。
說一下配置文件的位置:
nginx的在etc文件夾下的nginx文件夾里:
uwsgi的 需要自己創(chuàng)建ini文件 放在虛擬目錄就可以了,位置隨便。
運行ini文件的時候要在創(chuàng)建的目錄。
(復(fù)制下來后,注意去掉用 # 注釋的部分)
---------------------------------------------------------------------------------------------
[uwsgi]
chmod-socket = 666?? ??? ??? ?? ?
socket? =127.0.0.1:5000?? ?? ? #和nginx配置的端口號
#http=0.0.0.0:5000?? ??? ?? ? #單獨啟動uwsgi時使用
chdir=/home/51job/51_flask? ? #項目路徑
wsgi-file=app.py?? ??? ??? ?? ?#項目啟動文件
home = /root/.virtualenvs/py3_flask/? ?#這個是項目的虛擬路徑
callable=app?? ??? ??? ?? ??
processes=4?? ??? ??? ??? ?
threads=2
master=True
pidfile=uwsgi.pid
daemonize=uswgi.log
-------------------------------------------
如果只想測試下? uwsgi? 是否成功,
那么改成這樣:
[uwsgi]
#chmod-socket = 666
#socket? =127.0.0.1:5000
http=0.0.0.0:5000
chdir=/home/51job/51_flask?? ??? ?? ? #你的項目目錄
wsgi-file=app.py?? ??? ??? ??? ??? ?? ?#你的啟動文件?
home = /root/.virtualenvs/py3_flask/? ? #這就是你的虛擬目錄,還記的開始的時候說的怎么得到虛擬目錄嗎?
callable=app
processes=4
threads=2
master=True
pidfile=uwsgi.pid
daemonize=uswgi.log
就可以了在uwsgi上訪問了,注意瀏覽器的端口:5000哦
OK,下面就是ngnix的配置,so? easy?。?!
哎 說簡單 其實我可是趴了倆天的坑啊 -,-
events {
????????worker_connections 768;
????????# multi_accept on;
}
http {
server {
????????????????????????????????listen????????? 80;?? ??? ??? ?? ? #監(jiān)聽端口,就是網(wǎng)站端口啦
????????????????????????????????server_name???? XXX.XXX.XXX.XXX? ? #你的服務(wù)器地址,也可以是你的域名
????????????????????????????????charset???????? utf-8;
????????????????????????????????location /static {
????????????????????????????????????????????????????????alias?? /home/51job/51_flask/static;
?? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ?? ? #這個是你項目的JS文件地址,是不是很熟悉static
????????????????????????????????}
????????????????????????????????#location /upload {
????????????????????????????????????? #alias?? /var/www/datavis/taihesite/upload;
????????????????????????????????#}
????????????????????????????????location / {
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?uwsgi_pass?? 127.0.0.1:5000;#這個是與你對接的uwsg的地址端口
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? include????? /etc/nginx/uwsgi_params;
????????????????????????????????}
}
????????##
????????# Basic Settings
????????##
復(fù)制下面這段代碼到相應(yīng)位置就可以了,注意覆蓋哦,需要修改的地方 我都做了標(biāo)記了,如果復(fù)制下來 請把注釋去掉哦
七、啟動我們的 服務(wù)器:
uwsgi uwsgi.ini
service nginx start
這樣就啟動了。。。
順便說下停止服務(wù)器的方法:
sudo pkill -f uwsgi -9? 停止uwsgi? 最有效的辦法??都不需要輸入pid 去 KILL
service nginx stop?? ???停止 nginx
那就一其說一下吧:
service nginx restart?? ?重啟Nginx服務(wù)
service nginx status?? ?Nginx服務(wù)的狀態(tài)
service nginx reload在Nginx服務(wù)啟動的狀態(tài)下,重新加載nginx.conf這個配置文件
sudo nginx -t???? ? ?檢查nginx 配置是否正確
至此終于完成了所有的配置 ,你的服務(wù)器應(yīng)該已經(jīng)可以訪問了,假如,還不能啟動,那肯定都是小問題,無非就是版本不匹配啥的,
如果出問題不妨試一下:
?sudo atp-get update
如果喜歡的小伙伴可以轉(zhuǎn)載一下:)