前后端分離部署


部署總體: vue +uwsgi+django+mysql+redis

創建luffy文件夾:[root@localhost opt]# cd luffy

路飛學城django代碼
下載后端:wget https://files.cnblogs.com/files/pyyu/luffy_boy.zip
解壓 unzip luffy_boy.zip
vue代碼
下載前端:wget https://files.cnblogs.com/files/pyyu/07-luffy_project_01.zip

創建新的虛擬環境:mkvirtualenv luffy

1.前端vue部署**

vue代碼
下載:wget https://files.cnblogs.com/files/pyyu/07-luffy_project_01.zip
解析:unzip

2.下載node.js

wget https://nodejs.org/download/release/v8.6.0/node-v8.6.0-linux-x64.tar.gz

解壓:tar -zxvf node-v8.6.0-linux-x64.tar.gz

配置node的環境變量即可

luffy) [root@localhost node-v8.6.0-linux-x64]# cd bin

1.(luffy) [root@localhost bin]# pwd /opt/luffy/node-v8.6.0-linux-x64/bin

2.vim /etc/profile

3.在PATH尾部添加:/opt/luffy/node-v8.6.0-linux-x64/bin

4.加載配置文件: source /etc/profile

3.驗證node是否正確配置(node就是解釋器,npm就是軟件安裝包)

node -v

npm -v

3.修改vue代碼文件

因為vue(端口:80)需要向后台發起請求,先找到nginx(端口9000),通過nginx反向代理,找到

uwsgi(后端地址9001)

4.修改文件端口

api.js 路徑:/opt/luffy/07-luffy_project_01/src/restful

(luffy) [root@localhost src]# ls App.vue assets components main.js restful router store (luffy) [root@localhost src]# cd restful (luffy) [root@localhost restful]# vim api.js

命令:sed -i "s/127.0.0.1:8000/192.168.75.128:9000/g" api.js

sed是linux處理字符串的命令

-i是將結果替換到文件

"s/127.0.0.0.1:8000/192.168.75.128:9000/g" api.js

s 是替換模式,/原內容/替換后的內容/g 表示全局

 

5.進行打包vue,生成靜態文件夾dist

確保在vue代碼文件夾下:/opt/luffy/07-luffy_project_01

npm install # 解決vue代碼所需的模塊依賴

npm run build # 進行編譯打包

 

6.當vue打包正確完成后,生成一個dist靜態文件夾,此時就丟給nginx去處理

 

部署vue的流程:

1.用戶訪問域名ip,首先進入的是nginx,看到的是vue的靜態頁面index.html

2.當我們用戶在瀏覽器,點擊路飛頁面的課程列表,就向后台django發起post請求

3.uwsgi也就是后台,接收到請求,響應請求,返回一個json數據‘

4.vue接收到數據,進行渲染,也就看到了課程信息

 

2.后端uwsgi部署

1.下載后端:wget https://files.cnblogs.com/files/pyyu/luffy_boy.zip

2.創建新的虛擬環境,解決環境依賴問題

創建新的虛擬環境:mkvirtualenv luffy

解決依賴問題:

vim requirements.txt # 打開編輯

3.下載依賴模塊:

pip3 install -i https://pypi.douban.com/simple -r requirements.txt

4.使用uwsgi啟動django

查看虛擬環境運行地址: cdvirtualenv

[uwsgi]

# Django-related settings
# the base directory (full path)
# 第一層
chdir           = /opt/luffy/luffy_boy
# Django's wsgi file
# 第二層
module         = luffy_boy.wsgi
# the virtualenv (full path)
home           = /root/Envs/luffy
# process-related settings
# master
master         = true
# maximum number of worker processes
processes       = 4
# the socket (use the full path to be safe
socket         = 0.0.0.0:9001
# ... with appropriate permissions - may be needed
# chmod-socket   = 664
# clear environment on exit
vacuum         = true

啟動uwsgi:uwsgi --ini uwsgi.ini

用supervisor去管理路飛后台

[program:luffy]

command=/root/Envs/luffy/bin/uwsgi --ini /opt/luffy/luffy_boy/uwsgi.ini

stopasgroup=true killasgroup=true

啟動:

supervisord -c /etc/supervisord.conf #啟動supervisor服務端命令 supervisorctl -c /etc/supervisord.conf # supervisor客戶端管理命令

3.nginx反向代理轉發

修改nginx.conf內容如下

虛擬主機1:

server { listen 80; server_name localhost;

    #charset koi8-r;

  # access_log logs/host/access.log main;
  # access_log "pipe:rollback logs/host.access_log interval=1d baknum=7 maxsize=2G" main;

  location / {

      root /opt/luffy/07-luffy_project_01/dist;
    index index.html;
    # 首頁
  }

虛擬主機2

和uwsgi通信

server { listen 9000; server_name 192.168.226.128; location /{ uwsgi_pass 0.0.0.0:9001; include uwsgi_params; } }

重啟nginx:nginx -s reload

4.啟動mysql 以及redis

安裝:yum install redis -y

啟動:systemctl start redis

查看監聽端口:netstat -tunlp

 

mysql主從復制

1.centos7如何安裝mysql

1.yum安裝

2.源代碼編譯安裝

3.rpm包安裝

yum安裝的前提條件,是准備yum源,可以選擇清華園,阿里源,等等

1.安裝mariadb的yum源有兩,一個是阿里雲,版本低,功能小

命令:yum install mariadb-server mariadb

2.mariadb官方的yum源,配置的方式

方法:在/etc/yum.repos.d/目錄下創建repo文件就是yum倉庫

1.創建一個mariadb.repo文件,寫入如下內容

vim /etc/yum.repos.d/MariaDB.repo

2、添加repo倉庫配置
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.1/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1

3.安裝官方mariadb命令

yum install MariaDB-server MariaDB-client -y

4.啟動mariadb相關命令

mariadb數據庫的相關命令是:

systemctl start mariadb #啟動MariaDB

systemctl stop mariadb #停止MariaDB

systemctl restart mariadb #重啟MariaDB

systemctl enable mariadb #設置開機啟動

5.安裝好后進行初始化

systemctl start mariadb

image-20191227183117792

6.配置mysql

1.中文編碼設置,編輯mysql配置文件/etc/my.cnf,下入以下內容

[mysqld]
character-set-server=utf8
collation-server=utf8_general_ci
log-error=/var/log/mysqld.log
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8

7.授權mysql進行配置

遠程連接設置哦設置所有庫,所有表的所有權限,賦值權限給所有ip地址的root用戶
mysql > grant all privileges on *.* to root@'%' identified by 'password';
grant all privileges on *.* to root@'%' identified by '111111'; #遠程連接數據庫密碼111111
#刷新權限
flush privileges;

8.mysql主從復制配置流程如下

流程:主庫復制寫入,並寫下日志,從庫訪問日志,重新執行sql語句寫入

192.168.226.128 主庫

192.168.226.129 從庫

環境准備,准備2台服務器,安裝好2這個數據庫

1.主庫配置

編輯主庫的/etc/my.cof寫入如下配置,寫下日志

  [mysqld]   server-id=1   log-bin=s18mysql-bin

2.改了配置文件重啟數據庫

systemctl restart mariadb

3.master主庫添加從庫賬號,用戶遠程復制數據的賬戶

#創建用戶 mysql > create user 'username'@'%' identified by 'password'; create user 'kevins'@'%' identified by 'kevins';

#刷新權限 flush privileges;

4.授予kevins這個賬號,從庫的身份
grant replication slave on *.* to 'kevins'@'%';
5.實現對主數據庫鎖表只讀,防止數據寫入,數據復制失敗
flush table with read lock;

6.導出當前數據庫

mysqldump -uroot -p --all-databases > /opt/all.sql

7.導出數據完畢后,解鎖主庫,恢復可寫;

unlock tables;

8.將備份導出的數據scp至Slave數據庫

scp /data/all.sql root@192.168.178.130:/data/

9.查看主庫的狀態,可以看到日志文件的名字

show master status;

 

slave從庫配置

1.修改從庫的配置文件/etc/my.cnf

寫入配置:

[mysqld]
server-id=10

2.導入主庫的數據

導入數據庫第一種方式:mysql -uroot -p < /opt/all.sql

導入第二種:

1.先登錄進入數據庫

2.執行:source /opt/all.sql

 

3.此時主從數據庫已經在同一個起始點,開始數據同步

這是一段sql,在mysql中執行

mysql > change master to master_host='192.168.178.129(主庫地址)',
master_user='kevins',   # 給予從庫的賬號
master_password='kevins',# 給予從庫的密碼
master_log_file='mysql-bin.000001',#訪問日志的文件名
master_log_pos=575;

4.開啟從庫同步(在數據庫中輸入)

start slave

5.檢測是否主從是否成功

show slave status\G

查看兩個參數是否yes

Slave_IO_Runing:yes

Slave_SQL_Runing:yes

 

6.此時已經可以在主庫寫入數據,從庫實時寫入

7.配置mysql主從復制,讀寫分離

修改從庫/etc/my.cnf添加

read-only=true

只可以讀的模式

8.在主庫上創建一個普通用戶,在從庫上進行登錄,查看是否可以讀寫分離

主庫創建:create user "ywy"@"%" identified by "ywyacd";

從庫登錄:mysql -uywy -p

密碼:ywyacd

9.給這個普通用戶查看數據庫的權限

grant select on *.* to ysy@"%";

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM