從零開始配置Django在Centos7的生產(chǎn)環(huán)境

首先需要有一個(gè)能運(yùn)行的django項(xiàng)目.
本文不會(huì)從頭開始實(shí)現(xiàn)如何寫一個(gè)django項(xiàng)目,而是記錄在完成django并且在pycharm測試通過后,如何配置到生產(chǎn)環(huán)境的過程.

生產(chǎn)環(huán)境搭建如下:
系統(tǒng):Centos7
數(shù)據(jù)庫:Mysql 8.0
項(xiàng)目配置:Nginx + uWSGI + Django

獲取并安裝Centos7

  1. 選擇需要的映像文件下載

下載鏈接: https://www.centos.org/download/

  1. 下載并安裝UltraISO
  2. 使用UltraISO 文件-> 打開ISO文件
  3. 插入U(xiǎn)盤(重要數(shù)據(jù)提前備份)并在UltraISO中 啟動(dòng) ->寫入硬盤映像

至此,安裝盤(U盤)制作完成.

安裝Centos7

  1. 語言隨意

  2. 選擇最小安裝

  3. 配置網(wǎng)絡(luò)

  4. 分區(qū)

    • /boot:256M

    • /swap:16G

    • 其余空間全分給 /

  5. 輸入服務(wù)器密碼,創(chuàng)建新用戶

至此系統(tǒng)安裝完成.

安裝Xshell6遠(yuǎn)程工具(太簡單略)

安裝后升級及配置

  1. 更新Yum

     yum update
    
  2. 更新組件

     yum install -y net-tools setuptool ntsysv iptables system-config-securitylevel-tui  system-config-network-tui tree vim
    
  3. 更新開發(fā)工具

     yum groupinstall "Development tools" -y
    
  4. 安裝依賴包

     yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel wget -y
    

安裝python3

  1. 新建下載目錄和安裝目錄并進(jìn)入下載目錄

     mkdir /home/download
     cd /home/download
    
  2. 下載python3并解壓進(jìn)入目錄

     wget https://www.python.org/ftp/python/3.6.6/Python-3.6.6.tar.xz
     tar xf Python-3.6.6.tar.xz
     cd Python-3.6.6
    
  3. 編譯安裝

     ./configure --prefix=/usr/local/python3 
     make && make install
    
  4. 創(chuàng)建軟連接(python3和pip3)

     ln -s /usr/local/python3/bin/python3 /usr/bin/python3
     ln -s /usr/local/python3/bin/pip3 /usr/bin/pip3
    
  5. pip升級

     pip3 install -upgrade pip
    
  6. 安裝包

     pip3 install uwsgi django==1.11 jieba  pymysql django-pure-pagination
    
  7. 創(chuàng)建uwsgi和django的軟連接

     ln -s /usr/local/python3/bin/django-admin /usr/bin/  
     ln -s /usr/local/python3/bin/uwsgi /usr/bin/
    

安裝mysql8.0

  1. 下載源

     wget https://dev.mysql.com/get/mysql80-community-release-el7-1.noarch.rpm
    
  2. 安裝并更新緩存

     rpm -ivh mysql80-community-release-el7-1.noarch.rpm  
     yum clean all  
     yum makecache
    

插曲:查看倉庫及修改要安裝的版本

    # 查看倉庫
    yum repolist all | grep mysql
    # 使用 yum-config-manager 命令修改相應(yīng)的版本為啟用狀態(tài)最新版本為禁用狀態(tài)
    yum-config-manager --disable mysql80-community
    yum-config-manager --enable mysql57-community
    # 或者可以編輯 mysql repo文件
    cat /etc/yum.repos.d/mysql-community.repo
    # 更改相應(yīng)版本下面的enable為1
  1. 安裝Mysql

     yum install mysql-community-server -y
    
  2. 重啟mysql(必須!)

     # 重啟
     systemctl restart mysqld.service
     # 關(guān)閉
     systemctl stop mysqld.service
     # 啟動(dòng)
     systemctl start mysqld.service
    
  3. 獲取初始密碼

     cat /var/log/mysqld.log | grep password
    
  4. 修改密碼及創(chuàng)建新用戶

     # 修改密碼
     ALTER USER 'root'@'localhost' IDENTIFIED BY 'password';
     # 刷新
     flush privileges; 
     # 創(chuàng)建新用戶
     CREATE USER 'django'@'192.168.1.132' IDENTIFIED BY 'password';
     # 查看權(quán)限
     SHOW GRANTS FOR 'django'@'192.168.1.132';
     # 賦予權(quán)限
     GRANT EXECUTE,INSERT,SELECT,UPDATE DROP ON *.* TO 'DJANGO'@'192.168.1.132';
     # 開啟遠(yuǎn)程登錄權(quán)限
     # 不推薦這樣做
     # 同樣不推薦上面創(chuàng)建新用戶來管理,因?yàn)橐_端口
     # 可以使用SSH通道
     update user set host = '%' where user = 'root';
     flush privileges;
     alter user 'root'@'%' identified with mysql_native_password by  'password';
    
  5. 以下是舊版mysql:

    1. 登陸并修改密碼(舊版mysql使用)
      mysql -u root
      use mysql;
      update user set password=password(‘123456‘) where user=‘root‘;
      flush privileges;
      exit;
    2. 開啟遠(yuǎn)程連接
      mysql -u root -p
      GRANT ALL PRIVILEGES ON . TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;
  6. 編譯安裝(如果非要這樣的話)

    https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.12-linux-glibc2.12-x86_64.tar.xz

防火墻開啟端口

  1. 關(guān)閉,開啟,重啟防火墻

     # 關(guān)閉
     service iptables stop
     # 開啟
     service iptables start
     # 重啟
     service iptables restart
    
  2. 增加打開端口

     # 編輯配置文件
     vim /etc/sysconfig/iptables
     # 按相應(yīng)端口新增下面內(nèi)容
     -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
    

測試并配置uwsgi

  1. 把jdango項(xiàng)目上傳至指定目錄

  2. 測試django項(xiàng)目

     # 注意:要在上面防火墻一步開啟相應(yīng)端口,測試后再關(guān)閉
     python3 manage.py runserver 192.168.1.132:8080
    
  3. 測試uwsgi托管django服務(wù)

     # 確保出于和manage.py同一層目錄
     # module后是項(xiàng)目的主名稱,也就是包含wsgi.py文件的目錄名稱
     # 此時(shí)uwsgi無法處理靜態(tài)文件
     uwsgi --http :8080 --module Standard_server.wsgi
    
  4. 創(chuàng)建uwsgi配置文件

     # 在項(xiàng)目根目錄(與manage.py同級目錄)建立uwsgi配置文件
     >vim /home/server/uwsgi.ini
    
     [uwsgi]
     # 通過外網(wǎng)直接訪問uwsgi服務(wù)的地址(通常測試后即關(guān)閉此端口)
     http = :8080
     # nginx通過這一項(xiàng)和項(xiàng)目相連
     socket =  127.0.0.1:8001
     # 項(xiàng)目目錄,BASE_DIR
     chdir = /home/server
     # 相對BASE_DIRr的wsgi文件
     wsgi-file = Standard_server/wsgi.py
     # 進(jìn)程數(shù)
     processes = 4
     # 線程數(shù)
     threads = 2
     stats = 127.0.0.1:9191
     vacum = true 
     # 靜態(tài)文件目錄
     static-map = /static=/home/server/static
    
     # 開啟服務(wù),開啟式務(wù)必開放配置文件內(nèi)端口(測試后即關(guān)掉)
     >uwsgi /home/server/uwsgi.ini
    

安裝并配置nginx

  1. 查看源

    http://nginx.org/packages/

  2. 下載并安裝源

     http://nginx.org/packages/centos/7/x86_64/RPMS/nginx-1.14.0-1.el7_4.ngx.x86_64.rpm
     rpm -ivh nginx-1.14.0-1.el7_4.ngx.x86_64.rpm
     # 下一步貌似可以省略
     yum install -y nginx
    
  3. 啟動(dòng),停止,重啟nginx

     # 啟動(dòng)
     service nginx start
     # 停止
     service nginx stop
     # 重啟
     service nginx restart
    
  4. 使用nginx托管django服務(wù)的原理

    • 使用uwsgi開啟django服務(wù)(通過配置文件啟動(dòng))
    • 防火墻關(guān)閉uwsgi端口(uwsgi的websocket一定要使用127.0.0.1的方式配置))
    • 編寫nginx配置文件,通過nginx訪問uwsgi,再通過uwsgi訪問django
  5. nginx配置文件

     # 編輯創(chuàng)建配置文件(擴(kuò)展名必須是.conf)
     vim /home/server/server_nginx.conf
    
     # 編輯配置文件
     upstream django {
         server 127.0.0.1:8001;
     }
     server {
                 listen          80;
                 server_name     DLSC;
                 charset         utf-8;
    
                 client_max_body_size    75M;
    
                 location /media {
                         alias   /path/media;
                 }
    
                 location /static/ {
                         alias   /home/server/static/;
                 }
    
                 location / {
                         uwsgi_pass      django;
                         include         /home/server/uwsgi_params;
                 }
     }
    
  6. 注意地方

    1. nginx配置文件可以放在項(xiàng)目目錄,但是要建立去向nginx目錄下的軟連接

       ln -s /home/server/server_nginx.conf /etc/nginx/conf.d
      
    2. nginx版本不同,建立軟連接的目標(biāo)也可能不同,具體參照nginx目錄下nginx.inf文件中include:

       # 例如例子里的版本中是
       include /etc/nginx/conf.d/*.conf;
      
    3. 如果軟連接目標(biāo)地方還有其他配置文件(例如默認(rèn)的default.conf),并且監(jiān)聽的端口和建立配置文件沖突的,修改或者改名(擴(kuò)展名不能是.conf)

  7. 最后重啟nginx,配置完成.

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容