centos+nginx+uwsgi+Django實(shí)現(xiàn)IP+port訪問服務(wù)器
環(huán)境
- MacBookAir
- 阿里云ESC: Centos7.0
- nginx+1.16.1
- uwsgi=2.0.18
- django=2.2.7
服務(wù)器
進(jìn)入阿里云網(wǎng)站注冊(cè)賬號(hào)進(jìn)行購(gòu)買,選擇地區(qū)和服務(wù)器系統(tǒng)配置
購(gòu)買成功之后添加安全組(設(shè)置可訪問端口,不知道怎么設(shè)置的,網(wǎng)站有文檔,這里不贅述了)
購(gòu)買成功之后已經(jīng)創(chuàng)建了一個(gè)實(shí)例,點(diǎn)擊遠(yuǎn)程連接會(huì)有一個(gè)密碼(不記得了可以重啟實(shí)例進(jìn)行設(shè)置)自己本地做好文檔記錄
進(jìn)入遠(yuǎn)程連接界面后使用root+登錄密碼(這個(gè)密碼我是重置實(shí)例密碼獲取到的)進(jìn)行連接
遠(yuǎn)程連接服務(wù)器工具
我使用的是fianlshell
安裝
cd dir(進(jìn)入你安裝的目錄) curl -o finalshell_install.sh www.hostbuf.com/downloads/finalshell_install.sh; chmod +x finalshell_install.sh; sudo ./finalshell_install.sh
連接
完成連接進(jìn)行環(huán)境配置
環(huán)境配置
python3安裝: 參考這篇文章進(jìn)行安裝(編譯安裝前(make && make install) 先執(zhí)行命令:yum install libffi-devel -y (解決:ModuleNotFoundError: No module named '_ctypes'))
pip3的使用:
因?yàn)橐呀?jīng)安裝了python3,python3安裝目錄下已經(jīng)存在了pip3,很多安裝包必須使用pip3進(jìn)行安裝;centos已經(jīng)安裝的python2中存在pip我們需要建立軟連接(ln -s /usr/local/python3/bin/pip3 /usr/bin/pip3)
mysql安裝
下載mysql源安裝包:wget http://dev.mysql.com/get/mysql57-community-release-el7-8.noarch.rpm 安裝mysql源:yum localinstall mysql57-community-release-el7-8.noarch.rpm 安裝mysql源:yum install mysql-devel 安裝MySQL(總計(jì)851M,翻墻):yum install mysql-community-server 執(zhí)行命令:pip3 install mysqlclient 啟動(dòng)MYSQL服務(wù):systemctl start mysqld 查看MYSQLd的啟動(dòng)狀態(tài):systemctl status mysqld 開機(jī)啟動(dòng):systemctl enable mysqld 修改root本地登錄密碼: 獲取密碼:grep 'temporary password' /var/log/mysqld.log 進(jìn)入mysql:mysql -uroot -p 設(shè)置密碼:set password for 'root'@'localhost'=password('你的數(shù)據(jù)庫(kù)密碼');
* 安裝過(guò)程中可能出現(xiàn)重置密碼失敗的情況,我實(shí)現(xiàn)的情況是:1、實(shí)現(xiàn)mysql免密登錄;2、重置密碼(可能出現(xiàn)password不存在的情況,更password為authentication_string );3、刷新重置列表:FLUSH PRIVILEGES 4、退出mysql; 5、輸入mysql -u root -p。進(jìn)行密碼登錄;復(fù)制代碼
Django安裝
執(zhí)行:pip3 install django
執(zhí)行:django-admin help 進(jìn)行驗(yàn)證是否安裝成功
uwsgi安裝
執(zhí)行:pip3 install uwsgi
驗(yàn)證:uwsgi --version
注意:如果出現(xiàn)錯(cuò)誤需要建立軟連接:ln -s /usr/local/python3/bin/uwsgi /usr/bin/uwsgi
nginx安裝
執(zhí)行:yum install nginx
驗(yàn)證:nginx -V
注意:使用yum安裝可能出現(xiàn)錯(cuò)誤,這是因?yàn)榘惭b了python3導(dǎo)致的,這個(gè)時(shí)候需要去修改文件內(nèi)容(根據(jù)報(bào)錯(cuò)信息進(jìn)行百度,進(jìn)行錯(cuò)誤修改)
注意
上面我們已經(jīng)將所需要的環(huán)境和軟件已經(jīng)安裝完畢了,這中間可能出現(xiàn)一些問題,我們需要搜索一些資料進(jìn)行修改。因?yàn)檫@里每個(gè)人遇見的問題可能不一樣,因此沒有一一列舉,還請(qǐng)包涵;
下面我們就創(chuàng)建django項(xiàng)目,實(shí)現(xiàn)IP加port對(duì)服務(wù)器進(jìn)行訪問;
創(chuàng)建Django項(xiàng)目
在根目錄下創(chuàng)建Django項(xiàng)目
cd / mkdir projects cd projects django-admin startproject test
數(shù)據(jù)庫(kù)中創(chuàng)建test 數(shù)據(jù)庫(kù)
mysql -u root -p creat database test;
*test項(xiàng)目的settings 文件
DEBUG = False ALLOWED_HOSTS = ['你的服務(wù)器IP'] INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'test' #你的項(xiàng)目名稱 ] DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'test', 'USER': 'root', 'PASSWORD': 'mysql登錄密碼', 'HOST': 'localhost', 'PORT': '3306', } }
:warning:這里最好是一個(gè)本地項(xiàng)目能夠正常運(yùn)行的項(xiàng)目拖入到projects目錄下,進(jìn)行上面的修改就好了
執(zhí)行數(shù)據(jù)遷移指令
python3 manage.py makemigrations python3 manage.py migrate
完成Django項(xiàng)目的創(chuàng)建
nginx.conf文件的配置
文件路徑:/etc/nginx/nginx.conf
對(duì)下面的內(nèi)容進(jìn)行修改
這里的IP(如果是阿里云esc服務(wù)器的化)要使用服務(wù)器的私有IP
nginx的一些操作指令
systemctl start nginx.service 開啟 systemctl stop nginx.service 暫停 systemctl reload nginx.service 重啟 systemctl status nginx.service 查看狀態(tài)
注意:在你重復(fù)開啟nginx的時(shí)候,你需要先殺死nginx進(jìn)程才可以開啟nginx不然會(huì)有錯(cuò)誤。
錯(cuò)誤文檔查看路徑:/var/log/nginx/error.log和/var/log/nginx/access.log
uwsgi的使用和配置
在/projects/test路徑下創(chuàng)建uwsgi.ini文件(與manage.py在同一個(gè)目錄下)
uswgi中的內(nèi)容如下
[uwsgi] wsgi-file=/server/http_practice/http_practice/wsgi.py # 項(xiàng)目目錄 chdir=/projes/test # 指定項(xiàng)目的application module=test.wsgi:application # 指定sock的文件路徑 #socket=你的IP+端口號(hào)(這里的IP要使用服務(wù)器(如果是阿里云esc服務(wù)器的化)的私有IP,端口要與nginx.conf中寫的IP+port一致) # 進(jìn)程個(gè)數(shù) workers=5 pidfile=uwsgi.pid # 指定IP端口 http=172.18.81.20:80 # 指定靜態(tài)文件 #static-map=/static=/opt/proj/teacher/static # 啟動(dòng)uwsgi的用戶名和用戶組 uid=root gid=root # 啟用主進(jìn)程 master=true # 自動(dòng)移除unix Socket和pid文件當(dāng)服務(wù)停止的時(shí)候 vacuum=true # 序列化接受的內(nèi)容,如果可能的話 thunder-lock=true # 啟用線程 enable-threads=true # 設(shè)置自中斷時(shí)間 harakiri=30 # 設(shè)置緩沖 post-buffering=4096 # 設(shè)置日志目錄 daemonize=uwsgi.log
啟動(dòng)項(xiàng)目
啟動(dòng)nginx:systemctl start nginx.service
啟動(dòng)uwsgi:uwsgi3 --ini uwsgi.ini(若出現(xiàn)端口被占有,輸入:sudo fuser -k 8080(你配置的端口)/tcp)
訪問你的Django項(xiàng)目
瀏覽器輸入:IP+port+django中設(shè)置的url
瀏覽器訪問失敗問題查找
uwsgi錯(cuò)誤文檔查詢:/projects/test/uwsgi.log(該文件啟動(dòng)uwsgi會(huì)自動(dòng)生成) nginx錯(cuò)誤文檔查詢:/var/log/nginx/error.log和/var/log/nginx/access.log
結(jié)語(yǔ)
開發(fā)中總是會(huì)出現(xiàn)很多問題,重要的是要找到錯(cuò)誤的根源在那里,那里可以找錯(cuò)誤的詳細(xì)描述,然后再根據(jù)詳細(xì)描述去查找。不要盲目的查找問題,更不要臆測(cè),面對(duì)瀏覽器,你輸入的關(guān)鍵跟問題聯(lián)系緊密才能夠給你準(zhǔn)確的找到答案。
一篇文章不可能解決所有問題,更不可能解決所有人的問題。還是那句話,踩過(guò)坑才能對(duì)知識(shí)有更深的感悟。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Python實(shí)現(xiàn)在PDF插入頁(yè)眉頁(yè)腳
在處理篇幅較長(zhǎng)、結(jié)構(gòu)復(fù)雜的PDF文檔時(shí),頁(yè)眉和頁(yè)腳的設(shè)計(jì)與插入就顯得尤為重要,本文主要介紹了如何使用Python代碼操作PDF文檔,在PDF文檔中插入自定義的頁(yè)眉和頁(yè)腳,有需要的可以參考下2024-04-04簡(jiǎn)單了解python的內(nèi)存管理機(jī)制
這篇文章主要介紹了簡(jiǎn)單了解python的內(nèi)存管理機(jī)制,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-07-07Windows環(huán)境中Python應(yīng)用服務(wù)自啟動(dòng)及其監(jiān)控問題
這篇文章主要介紹了Windows環(huán)境中Python應(yīng)用服務(wù)自啟動(dòng)及其監(jiān)控問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-06-06Python讀取大量Excel文件并跨文件批量計(jì)算平均值的方法
這篇文章主要介紹了Python讀取大量Excel文件并跨文件批量計(jì)算平均值,介紹基于Python語(yǔ)言,實(shí)現(xiàn)對(duì)多個(gè)不同Excel文件進(jìn)行數(shù)據(jù)讀取與平均值計(jì)算的方法,需要的朋友可以參考下2023-02-02使用python tkinter實(shí)現(xiàn)各種個(gè)樣的撩妹鼠標(biāo)拖尾效果
這篇文章主要介紹了使用python tkinter實(shí)現(xiàn)各種個(gè)樣的撩妹鼠標(biāo)拖尾效果,本文通過(guò)實(shí)例代碼,給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-09-09Python實(shí)戰(zhàn)小項(xiàng)目之Mnist手寫數(shù)字識(shí)別
MNIST 數(shù)據(jù)集已經(jīng)是一個(gè)被”嚼爛”了的數(shù)據(jù)集, 很多教程都會(huì)對(duì)它”下手”, 幾乎成為一個(gè) “典范”. 不過(guò)有些人可能對(duì)它還不是很了解, 下面通過(guò)一個(gè)小實(shí)例來(lái)帶你了解它2021-10-10Python3自動(dòng)安裝第三方庫(kù),跟pip說(shuō)再見
很多朋友私信小編Python安裝第三方庫(kù)安裝技巧,在這就不一一回復(fù)大家了,今天小編給大家分享一篇教程關(guān)于Python自動(dòng)安裝第三方庫(kù)的小技巧,本文以安裝plotly為例給大家詳細(xì)講解,感興趣的朋友跟隨小編一起看看吧2021-10-10