準備四個容器
1.redis
2.rabbitmq
3.mydql5.7
4.centos7
5.nginx
先再docker 中創(chuàng)建一個自定義網(wǎng)絡(luò)
docker network create 網(wǎng)絡(luò)名
本次創(chuàng)建網(wǎng)絡(luò)名稱為jumpserver-test
docker network create jumpserver-test
啟動一個centos系統(tǒng)的容器
先將自己的環(huán)境寫入到一個txt文件當中
從項目中的 requirments.txt 安裝項目的依賴環(huán)境包
可以通過 pip3 freeze > requirements.txt
將在本地(開發(fā)環(huán)境)的虛擬環(huán)境下安裝的包的信息導出來雌续。
再將自己的項目打包scp傳入進去或者從gitliab克隆到容器當中
進入容器當中進入到項目目錄下
先部署環(huán)境
pip3 install -r requirements.txt
啟動容器
docker run -itd --name cmdb-server -p 8080:80 -p 8000:22 --network jumpserver centos7
docker run -d --name redis-cmdb --network jumpserver-test redis
docker run -d --name rabbitmq-cmdb --network jumpserver-test rabbitmq
docker run -d --name mysql57-cmdb --network jumpserver-test mysql5.7
進入mysql容器當中創(chuàng)建數(shù)據(jù)庫并且創(chuàng)建授權(quán)用戶
創(chuàng)建數(shù)據(jù)庫并修改字符集
create database 數(shù)據(jù)庫名 CHARACTER SET utf8 COLLATE utf8_general_ci;
grant all on `cmdb.*` to 用戶@用戶ip identified by '密碼'
完成后退出數(shù)據(jù)庫 并測試該用戶能否登錄
進入項目容器當中
有虛擬環(huán)境的話
virtualenvwrapper 部署項目的虛擬環(huán)境
安裝
pip3 install virtualenvwrapper
配置環(huán)境變量
為單個用戶添加環(huán)境變量信息
編輯用戶家目錄下的.bashrc
文件
# 設(shè)置虛擬環(huán)境使用的 python 解釋器
export VIRTUALENVWRAPPER_PYTHON=/usr/local/bin/python3
# 設(shè)置創(chuàng)建虛擬環(huán)境放置的目錄
export WORKON_HOME=$HOME/.virtualenv
# 虛擬環(huán)境的初始化腳本
source /usr/local/bin/virtualenvwrapper.sh
使其生效
source ~/.bashrc
為項目新建虛擬環(huán)境
mkvirtualenv cmdb
進入虛擬環(huán)境
workon cmdb
處理Django項目的靜態(tài)文件
1.首先在Django 項目的setting 文件中添加如下內(nèi)容:
STATIC_ROOT = os.path.join(BASE_DIR,"allstatic")
2.在項目的主目錄下(manage.py同級)執(zhí)行如下命令
有虛擬環(huán)境的先切換到 虛擬環(huán)境下在執(zhí)行
python3 manage.py collectstatic
執(zhí)行完這個命令斩个,Django 會搜集項目中所有的靜態(tài)文件,并將其拷貝到 STATIC_ROOT 指定的目錄下驯杜。
3.再在項目的配置文件settings.py中受啥,注釋以下內(nèi)容并添加
#STATICFILES_DIRS = [
# os.path.join(BASE_DIR, 'static'),
#]
添加
STATIC_ROOT = os.path.join(BASE_DIR,"allstatic")
處理完畢項目的靜態(tài)文件之后, 就可以讓后面提到的 uwsgi 或者 nginx 中的任何一個很方便的使用了
Uwsgi 處理 socket 連接
安裝
pip3 install uwsgi
執(zhí)行
uwsgi --http :80 --module testdjango.wsgi --static-map /static=/xiangmu/testdjango/testdjango/allstatic --master --processes 4
此時在瀏覽器中輸入主機的 IP 和端口進行訪問
關(guān)于靜態(tài)文件找不到的問題鸽心,可以在Nginx 配置中解決滚局,
也可以用Uwsgi 解決。
執(zhí)行如下命令即可:
第一種方式
uwsgi --http :8000 \
--chdir /xiangmu/testdjango/testdjango \
--module testdjango.wsgi \
--master --processes 4 \
--static-map /static=/xiangmu/testdjango/testdjango/allstatic # 映射靜態(tài)文件
第二種方式
在項目的主目錄下的 conf
文件夾下創(chuàng)建文件 cmdb_uwsgi.ini并寫入
[uwsgi]
# 切換到工作目錄
chdir = /xiangmu/testdjango/testdjango
socket = cmdb-server:80 #soket在nginx連接的時候需要使用就需要把http注釋
#http = 本機IP:80
#static-map = /static=/xiangmu/testdjango/testdjango/allstatic
module = testdjango.wsgi
master = true
processes = 6
# clear environment on exit
vacuum = true
# 虛擬環(huán)境路徑,按自己項目的虛擬環(huán)境路徑填寫顽频,不要照抄L僦!糯景!如果沒有虛擬環(huán)境就不需要寫
virtualenv = /root/virtualenv/cmdb
logto = /tmp/cmdb-server.log
啟動測試
uwsgi --ini 你的這個ini文件的具體路徑/qf_uwsgi.ini
示例:
(cmdb) [root@master SharkAPAMP]# uwsgi --ini conf/qf_uwsgi.ini
[uWSGI] getting INI configuration from conf/qf_uwsgi.ini
[uwsgi-static] added mapping for /static => /cmdb/SharkAPAMP/allstatic
之后在瀏覽器里訪問,看是否可以看到正常的網(wǎng)頁
Nginx 代理
可以利用Nginx做反向代理嘁圈、負載均衡以及處理靜態(tài)文件省骂。
啟動容器 nginx:alpine3.8
docker run -itd --name nginx-server --network jumpserver-test -p 9000:80 nginx:alpine3.8
配置 Nginx
vi /etc/nginx/conf.d/default.conf
# the upstream component nginx needs to connect to
upstream django {
# server unix:///path/to/your/mysite/mysite.sock; # for a file socket
# Django 的地址和端口
server cmdb-server:80; # for a web port socket (we'll use this first)
}
# configuration of the server
server {
# nginx 主機的監(jiān)聽端口
listen 80;
# nginx 主機的域名
# server_name 你的ip地址 或者 FQDN ;
server_name nginx-server;
charset utf-8;
# max upload size
client_max_body_size 75M; # adjust to taste
# Django 的靜態(tài)文件
location /static {
alias /allstatic; # 指向django的static目錄
}
# 最后將非靜態(tài)資源的請求都轉(zhuǎn)發(fā)個 Django
location / {
uwsgi_pass django; # django 和 upstream django 對應
include uwsgi_params; # the uwsgi_params file you installed
}
}
保存后重啟nginx服務(wù)
/usr/sbin/nginx -s reload
進入django容器中將.ini文件中設(shè)置的靜態(tài)文件路徑注釋掉
在執(zhí)行命令
uwsgi --ini conf/cmdb-server.ini
執(zhí)行完成后
在網(wǎng)頁上訪問nginx映射本機的端口 這里 配置的為9000
網(wǎng)頁就能正常訪問則配置成功