Centos部署Django項(xiàng)目
一吨艇、安裝MariaDB
1.安裝命令
yum -y install mariadb mariadb-server
2.安裝完成后,首先啟動(dòng)MariaDB
systemctl start mariadb
3.設(shè)置開(kāi)機(jī)自動(dòng)啟動(dòng)
systemctl enable mariadb
4.安全安裝MariaDB
Enter current password for root:<–初次運(yùn)行直接回車
# 設(shè)置密碼
Set root password? [y/n] <– 是否設(shè)置root用戶密碼末捣,輸入y并回車或直接回車
New password: <– 設(shè)置root用戶的密碼
Re-enter new password: <– 再輸入一次你設(shè)置的密碼
# 其他配置(根據(jù)自己的需求進(jìn)行配置)
Remove anonymous users? [Y/n] <– 是否刪除匿名用戶(回車)
Disallow root login remotely? [Y/n] <–是否禁止root遠(yuǎn)程登錄(回車)
Remove test database and access to it? [Y/n] <– 是否刪除test數(shù)據(jù)庫(kù)(回車)
Reload privilege tables now? [Y/n] <– 是否重新加載權(quán)限表(回車)
5.初始化MariaDB完成,測(cè)試登錄
mysql -u root -p
二、開(kāi)啟MariaDB遠(yuǎn)程連接
在數(shù)據(jù)庫(kù)中的user表中可以看到默認(rèn)是只能本地連接的,所有可以添加一個(gè)新的用戶尖啡,該用戶可以遠(yuǎn)程訪問(wèn)
1.創(chuàng)建用戶
1.使用數(shù)據(jù)庫(kù)
use mysql;
2.創(chuàng)建用戶
#所有ip都可以進(jìn)行訪問(wèn)
create user 'root'@'%' identified by '123456';
# 特定ip才可以進(jìn)行訪問(wèn)
create user 'root'@'192.168.10.10' identified by '123456';
2.授權(quán)
1.給用戶授權(quán)
# 給用戶最大權(quán)限
grant all privileges on *.* to 'root'@'%' identified by '123456';
# 給用戶部分權(quán)限(test 數(shù)據(jù)庫(kù))
grant all privileges on test.* to 'root'@'%' identified by '123456' with grant option;
2.刷新權(quán)限表
flush privileges;
3.查看用戶權(quán)限
show grants for 'root'@'localhost';
3.遠(yuǎn)程訪問(wèn)數(shù)據(jù)庫(kù)
接下來(lái)就可以在遠(yuǎn)程的數(shù)據(jù)庫(kù)可視化工具中直接訪問(wèn)該服務(wù)器中的mysql了。
注意:需要打開(kāi)服務(wù)器的3306端口剩膘。
1.在Navicat中新建一個(gè)遠(yuǎn)程連接衅斩,連接到服務(wù)器中的數(shù)據(jù)庫(kù)
2.配置連接信息
連接名: -> aliyun
主機(jī): -> 服務(wù)器ip地址
端口: -> 3306
用戶名: -> root
密碼: -> 123456
三、安裝Python3.6
注意:在centos中怠褐,系統(tǒng)默認(rèn)只提供Python2.7的版本畏梆,但是在項(xiàng)目中我們使用的是Python3.6的版本,在服務(wù)器中的Python版本需要和開(kāi)發(fā)時(shí)的版本一致。
1.安裝依賴項(xiàng)
yum -y install wget gcc zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel libffi-devel
2.下載Python3.6源代碼
wget https://www.python.org/ftp/python/3.6.6/Python-3.6.6.tgz
3.解壓縮和解歸檔
gunzip Python-3.6.6.tgz
tar -xvf Python-6.6.6.tar
4.進(jìn)入安裝文件生成構(gòu)建文件(Makefile)
(1)cd Python-3.6.6
(2)./configure --prefix=/usr/local/python36 --enable-optimizations
這一步完成之后會(huì)生成一個(gè)名叫Makefile的文件
5.構(gòu)建和安裝
make && make install
6.修改環(huán)境變量
cd ~
vim .bash_profile
PATH=$PATH:$HOME/bin:/usr/local/python36/bin
提醒:vim下按i進(jìn)入編輯模式奠涌;按Esc退出編輯模式宪巨;保存文件要先退出編輯模式再按:wq
7.注冊(cè)一個(gè)快捷方式(符號(hào)鏈接)
ln -s /usr/local/python36/bin/python3 /usr/bin/python3
8.斷開(kāi)服務(wù)器連接,重新連接服務(wù)器
python3 --version
四溜畅、安裝和激活Python虛擬環(huán)境
1.在Python-3.6.6文件中安裝virtualenv
cd Python-3.6.6
yum install python-virtualenv
2.在/home目錄下創(chuàng)建env捏卓、src、logs慈格、conf文件夾
cd /home
mkdir env src logs conf
3.創(chuàng)建虛擬環(huán)境
cd env/
# -p /usr/local/python36/bin/python3 -> 指定python3安裝路徑
virtualenv --no-site-packages -p /usr/local/python36/bin/python3 freshenv
4.激活虛擬環(huán)境
cd env/freshenv/bin/
# 激活虛擬環(huán)境
source activate
# 凍結(jié)虛擬環(huán)境
deactivate
五天吓、將Django項(xiàng)目傳輸?shù)椒?wù)器
1.傳輸項(xiàng)目到/home/src/
cd /home/src
使用Xshell傳輸項(xiàng)目
2.安裝環(huán)境所需要的包
vim re_install.txt
# 在re_install.txt編輯內(nèi)容
django==1.11
pymysql
Pillow
# 自動(dòng)安裝re_install.txt文件中編輯的所有內(nèi)容
/home/env/freshenv/bin/pip install -r re_install.txt
六、服務(wù)器測(cè)試環(huán)境部署項(xiàng)目
1.修改settings.py配置文件
DEBUG = False
ALLOWED_HOSTS = ['*']
2.服務(wù)器中啟動(dòng)Django項(xiàng)目
netstat -lntp -> 查看端口占用情況
注意:?jiǎn)?dòng)之前需要打開(kāi)服務(wù)器的80端口峦椰,并檢查該端口是否被其他應(yīng)用占用。
/home/env/freshenv/bin/python3 /home/src/fresh_shop/manage.py runserver 0.0.0.0:80
七汰规、本地測(cè)試環(huán)境中的部署方式
1.setting.py配置文件的修改
DEBUG = False
ALLOWED_HOSTS = ['*']
2.工程目錄下urls.py配置文件的修改
from django.views.static import serve
from fresh_shop import settings
from goods import views
urlpatterns = [
url(r'^static/(?P<path>.*)$', serve, {"document_root": settings.STATICFILES_DIRS[0]}),
url(r'^media/(?P<path>.*)$', serve, {"document_root": settings.MEDIA_ROOT}),
# 首頁(yè)
url(r'^$', views.index),
]
urlpatterns += static(MEDIA_URL, document_root=MEDIA_ROOT)
3.中間件的修改
if path == '/':
return None
if re.match(r'/static/.*/', path):
return None
if re.match(r'/media/.*/', path):
return None
八汤功、服務(wù)器環(huán)境中的部署方式
Django項(xiàng)目部署方式
nginx + uwsgi + django
nginx + gunicorn + django
ngnix + django
apache
1.setting.py配置文件的修改
cd /home/src/fresh_shop/fresh_shop
vim setting.py
# 配置信息
DEBUG = False
ALLOWED_HOSTS = ['*']
2.工程目錄下urls.py配置文件的修改(并修改中間件)
cd /home/src/fresh_shop/fresh_shop
vim urls.py
# 配置信息
from goods import views
urlpatterns = [
# 首頁(yè)路由
url(r'^$', views.index),
]
3.nginx的安裝和啟動(dòng)
yum install nginx 安裝
systemctl start nginx 啟動(dòng)
systemctl status nginx 查看nginx的狀態(tài)
systemctl start/stop/enable/disable nginx 啟動(dòng)/關(guān)閉/設(shè)置開(kāi)機(jī)啟動(dòng)/禁止開(kāi)機(jī)啟動(dòng)
4.uwsgi的安裝
在虛擬環(huán)境中安裝uwsgi,假設(shè)虛擬環(huán)境安裝在/home/env/freshenv中
/home/env/freshenv/bin/pip3 install uwsgi
5.配置nginx.conf文件
cd /home/conf
vim nginx.conf
server {
listen 80;
server_name 47.107.175.127; # 填寫(xiě)服務(wù)器ip地址或者域名
access_log /home/logs/access.log;
error_log /home/logs/error.log;
location /static/ {
alias /home/src/fresh_shop/static/;
}
location /media/ {
alias /home/src/fresh_shop/media/;
}
location / {
include uwsgi_params;
uwsgi_pass 127.0.0.1:8890; # 端口可自己定義
}
}
systemctl start nginx 啟動(dòng)nginx
6.配置uwsgi文件
cd /home/conf
vim uwsgi.ini
[uwsgi]
# 守護(hù)進(jìn)程
master = true
# 進(jìn)程個(gè)數(shù)
processes = 4
# 項(xiàng)目地址
chdir = /home/src/fresh_shop
# 指定python版本
pythonpath = /home/env/freshenv/bin/python3
# 指定uwsgi文件
module = fresh_shop.wsgi
# 和nginx通信地址:端口
socket = 127.0.0.1:8890
# 日志文件地址
logto = /home/logs/uwsgi.log
7.配置nginx.conf文件
vim /etc/nginx/nginx.conf
include /etc/nginx/conf.d/*.conf;
include /home/conf/*.conf;
systemctl restart nginx 重新啟動(dòng)nginx
8.啟動(dòng)uwsgi(運(yùn)行項(xiàng)目)
/home/env/freshenv/bin/uwsgi --ini /home/conf/uwsgi.ini
9.查看uwsgi日志文件
tail -f uwsgi.log
九溜哮、服務(wù)器通過(guò)不同端口部署多個(gè)項(xiàng)目
1.Nginx配置文件
listen:監(jiān)聽(tīng)不同的端口號(hào)
server {
listen 80;
server_name 47.107.175.127;
access_log /home/logs/fresh_access.log;
error_log /home/logs/fresh_error.log;
location /static/ {
alias /home/src/fresh_shop/static/;
}
location /media/ {
alias /home/src/fresh_shop/media/;
}
location / {
include uwsgi_params;
uwsgi_pass 127.0.0.1:8890;
}
}
server {
listen 81;
server_name 47.107.175.127;
access_log /home/logs/blog_access.log;
error_log /home/logs/blog_error.log;
location /static/ {
alias /home/src/blog/static/;
}
location /media/ {
alias /home/src/blog/media/;
}
2.fresh_uwsgi.ini配置文件
[uwsgi]
master = true
processes = 4
chdir = /home/src/fresh_shop
pythonpath = /home/env/freshenv/bin/python3
module = fresh_shop.wsgi
socket = 127.0.0.1:8890
logto = /home/logs/fresh_uwsgi.log
3.blog_uwsgi.ini配置文件
[uwsgi]
master = true
processes = 4
chdir = /home/src/blog
pythonpath = /home/env/blogenv/bin/python3
module = blog.wsgi
socket = 127.0.0.1:9090
logto = /home/logs/blog_uwsgi.log
4.重啟Nginx服務(wù)
systemctl restart nginx
5.后臺(tái)啟動(dòng)uwsgi(運(yùn)行項(xiàng)目)
/home/env/freshenv/bin/uwsgi --ini /home/conf/fresh_uwsgi.ini &
/home/env/blogenv/bin/uwsgi --ini /home/conf/blog_uwsgi.ini &