首先需要有一個(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
- 選擇需要的映像文件下載
- 下載并安裝UltraISO
- 使用UltraISO 文件-> 打開ISO文件
- 插入U(xiǎn)盤(重要數(shù)據(jù)提前備份)并在UltraISO中 啟動(dòng) ->寫入硬盤映像
至此,安裝盤(U盤)制作完成.
安裝Centos7
語言隨意
選擇最小安裝
配置網(wǎng)絡(luò)
-
分區(qū)
/boot:256M
/swap:16G
其余空間全分給 /
輸入服務(wù)器密碼,創(chuàng)建新用戶
至此系統(tǒng)安裝完成.
安裝Xshell6遠(yuǎn)程工具(太簡單略)
安裝后升級及配置
-
更新Yum
yum update -
更新組件
yum install -y net-tools setuptool ntsysv iptables system-config-securitylevel-tui system-config-network-tui tree vim -
更新開發(fā)工具
yum groupinstall "Development tools" -y -
安裝依賴包
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
-
新建下載目錄和安裝目錄并進(jìn)入下載目錄
mkdir /home/download cd /home/download -
下載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 -
編譯安裝
./configure --prefix=/usr/local/python3 make && make install -
創(chuàng)建軟連接(python3和pip3)
ln -s /usr/local/python3/bin/python3 /usr/bin/python3 ln -s /usr/local/python3/bin/pip3 /usr/bin/pip3 -
pip升級
pip3 install -upgrade pip -
安裝包
pip3 install uwsgi django==1.11 jieba pymysql django-pure-pagination -
創(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
-
下載源
wget https://dev.mysql.com/get/mysql80-community-release-el7-1.noarch.rpm -
安裝并更新緩存
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
-
安裝Mysql
yum install mysql-community-server -y -
重啟mysql(必須!)
# 重啟 systemctl restart mysqld.service # 關(guān)閉 systemctl stop mysqld.service # 啟動(dòng) systemctl start mysqld.service -
獲取初始密碼
cat /var/log/mysqld.log | grep password -
修改密碼及創(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'; -
以下是舊版mysql:
- 登陸并修改密碼(舊版mysql使用)
mysql -u root
use mysql;
update user set password=password(‘123456‘) where user=‘root‘;
flush privileges;
exit; - 開啟遠(yuǎn)程連接
mysql -u root -p
GRANT ALL PRIVILEGES ON . TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;
- 登陸并修改密碼(舊版mysql使用)
-
編譯安裝(如果非要這樣的話)
https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.12-linux-glibc2.12-x86_64.tar.xz
防火墻開啟端口
-
關(guān)閉,開啟,重啟防火墻
# 關(guān)閉 service iptables stop # 開啟 service iptables start # 重啟 service iptables restart -
增加打開端口
# 編輯配置文件 vim /etc/sysconfig/iptables # 按相應(yīng)端口新增下面內(nèi)容 -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
測試并配置uwsgi
把jdango項(xiàng)目上傳至指定目錄
-
測試django項(xiàng)目
# 注意:要在上面防火墻一步開啟相應(yīng)端口,測試后再關(guān)閉 python3 manage.py runserver 192.168.1.132:8080 -
測試uwsgi托管django服務(wù)
# 確保出于和manage.py同一層目錄 # module后是項(xiàng)目的主名稱,也就是包含wsgi.py文件的目錄名稱 # 此時(shí)uwsgi無法處理靜態(tài)文件 uwsgi --http :8080 --module Standard_server.wsgi -
創(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
-
查看源
-
下載并安裝源
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 -
啟動(dòng),停止,重啟nginx
# 啟動(dòng) service nginx start # 停止 service nginx stop # 重啟 service nginx restart -
使用nginx托管django服務(wù)的原理
- 使用uwsgi開啟django服務(wù)(通過配置文件啟動(dòng))
- 防火墻關(guān)閉uwsgi端口(uwsgi的websocket一定要使用127.0.0.1的方式配置))
- 編寫nginx配置文件,通過nginx訪問uwsgi,再通過uwsgi訪問django
-
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; } } -
注意地方
-
nginx配置文件可以放在項(xiàng)目目錄,但是要建立去向nginx目錄下的軟連接
ln -s /home/server/server_nginx.conf /etc/nginx/conf.d -
nginx版本不同,建立軟連接的目標(biāo)也可能不同,具體參照nginx目錄下nginx.inf文件中include:
# 例如例子里的版本中是 include /etc/nginx/conf.d/*.conf; 如果軟連接目標(biāo)地方還有其他配置文件(例如默認(rèn)的default.conf),并且監(jiān)聽的端口和建立配置文件沖突的,修改或者改名(擴(kuò)展名不能是.conf)
-
最后重啟nginx,配置完成.