centos7 + django + nginx+uwsgi 部署網站

1.概要

由于python web的學習,在研究django框架,框架非常強大,內部已經實現了很多web搭建幾乎所有的功能,點個贊

2.部署

網站單件完成,接著就是部署到服務器上了,本人的服務器時阿里云的服務器1cpu1G最低配,部署我的網站也是夠用,順便還能部署下我的爬蟲= =嘿嘿。
python3.6.2
django 1.11.5
nginx
uwsgi

3.開始

安裝python3.6
  1. 獲取
    wget https://www.python.org/ftp/python/3.6.2/Python-3.6.2.tgz
    tar -xzvf Python-3.6.2.tgz -C /tmp
    cd /tmp/Python-3.6.2/
  2. 把Python3.6安裝到 /usr/local 目錄
    ./configure --prefix=/usr/local
    make
    make altinstall
  3. 更改/usr/bin/python鏈接
    ln -s /usr/local/bin/python3.6 /usr/bin/python3
    這里時為了避免和原生的python3發生沖突 也可以替換原生的python映射
    替換
    mv /usr/bin/python2.7 /usr/bin/python2.7.5  # 保留默認版本python為python2.7.5
    sudo vi /usr/bin/yum
    因為 yum 使用 Python 2,因此替換為 Python 3 后可能無法正常工作,因此修改 yum 配置文件。將第一行指定的 python 版本改為 python2.7(#!/usr/bin/python 改為 #!/usr/bin/python2.7)
安裝maridb(mysql)
  1. 安裝
    sudo yum install mariadb-server
  2. 啟動, 重啟
    sudo systemctl start mariadb
    sudo systemctl restart mariadb
  3. 設置bind-ip
    vim /etc/my.cnf
    在 [mysqld]:
    下面加一行
    bind-address = 0.0.0.0
  4. 設置外部ip可以訪問
    先進入mysql才能運行下面命令:
    mysql 直接進入就行
    GRANT ALL PRIVILEGES ON . TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;
    FLUSH PRIVILEGES
  5. 設置阿里云的對外端口
    在服務器后臺管理中->選擇實例->安全組配置->配置規則->快速創建規則->添加相應的規則接口就行
    6.安裝pymysql
    我用的pymysql一個python管理mysql的包
    后面會通過pip3安裝,可以在這里提前安裝
安裝nginx

sudo yum install epel-release
sudo yum install nginx
(sudo /usr/sbin/nginx 啟動)
(killall -9 nginx 停止)
參考資料:https://www.digitalocean.com/community/tutorials/how-to-install-nginx-on-centos-7

安裝virtualenvwrapper

我沒有安裝虛擬環境所以沒有使用到,這里我只是提一下,具體可以自己搜索
yum install python-setuptools python-devel
pip install virtualenvwrapper

編輯.bashrc文件
export WORKON_HOME=$HOME/.virtualenvs
source /usr/local/bin/virtualenvwrapper.sh

重新加載.bashrc文件
source ~/.bashrc
新建虛擬環境
mkvirtualenv mxonline
進入虛擬環境
workon mxonline

安裝pip包

我們可以通過 pip freeze > requirements.txt 將本地的虛擬環境安裝包相信信息導出來
然后將requirements.txt文件上傳到服務器之后運行:
pip3 install -r requirements.txt 其中pip使用對應版本,我用的是pip3
安裝依賴包

安裝uwsgi

pip3 install uwsgi
我這邊把安裝好的uwsgi 映射到 uwsgi3
ln -s 你的uwsgi目錄 /usr/bin/uwsgi3
可以使用which uwsgi查找

配置nginx

新建uc_nginx.conf

the upstream component nginx needs to connect to
upstream django {
server unix:///path/to/your/mysite/mysite.sock; # for a file socket
server 127.0.0.1:8000; # for a web port socket (we'll use this first)
}
configuration of the server
server {
the port your site will be served on
listen 80;
the domain name it will serve for
server_name 你的ip地址 ; # substitute your machine's IP address or FQDN
charset utf-8;
max upload size
client_max_body_size 75M; # adjust to taste
Django media
location /media {
alias 你的目錄/Mxonline/media; # 指向django的media目錄
}
location /static {
alias 你的目錄/Mxonline/static; # 指向django的static目錄
}
Finally, send all non-media requests to the Django server.
location / {
uwsgi_pass django;
include uwsgi_params; # the uwsgi_params file you installed
}
}

將該配置文件加入到nginx的啟動配置文件中

sudo ln -s 你的目錄/Mxonline/conf/nginx/uc_nginx.conf /etc/nginx/conf.d/

拉取所有需要的static file 到同一個目錄

在django的setting文件中,添加下面一行內容:
STATIC_ROOT = os.path.join(BASE_DIR, "static/")
運行命令
python3 manage.py collectstatic
這里可能會失敗,可以是嘗試指定PYTHONPATH = 你安裝的地址/python3.6/site-packages:/another/path/etc 能夠加載相應的模塊

運行nginx

sudo /usr/sbin/nginx

通過配置文件啟動uwsgi

新建uwsgi.ini 配置文件, 內容如下:

# mysite_uwsgi.ini file
[uwsgi]

# Django-related settings
# the base directory (full path)
chdir           = /home/bobby/Projects/MxOnline
# Django's wsgi file
module          = MxOnline.wsgi
# the virtualenv (full path)

# process-related settings
# master
master          = true
# maximum number of worker processes
processes       = 10
# the socket (use the full path to be safe
socket          = 127.0.0.1:8000
# ... with appropriate permissions - may be needed
# chmod-socket    = 664
# clear environment on exit
vacuum          = true
virtualenv = /home/bobby/.virtualenvs/mxonline

logto = /tmp/mylog.log

注:
chdir: 表示需要操作的目錄,也就是項目的目錄
module: wsgi文件的路徑
processes: 進程數
virtualenv:虛擬環境的目錄

workon mxonline
uwsgi -i 你的目錄/Mxonline/conf/uwsgi.ini &

訪問

http://你的ip地址/

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,321評論 6 543
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,559評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,442評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,835評論 1 317
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,581評論 6 412
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,922評論 1 328
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,931評論 3 447
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 43,096評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,639評論 1 336
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,374評論 3 358
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,591評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,104評論 5 364
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,789評論 3 349
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,196評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,524評論 1 295
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,322評論 3 400
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,554評論 2 379

推薦閱讀更多精彩內容