Centos前后端分离部署

今天记录一下前后端分离部署的大概流程,复习一下部署的流程和知识点,话不多说上代码

前端

1:先从前端部署,准备源代码上传到服务器
先准备前端源代码,这里我们用vue项目来做试验,将源代码发送到服务器,可以用scp/xftp看个人爱好吧
我这里图方便就用xftp工具,上传vue前台源码和后台server源码到Centos服务器上


image.png

2:在服务器上执行解压缩命令

unzip  vue.zip  
image.png

3:对前端项目打包,需要配置前端打包环境,所以安装node
打开node官网如下网址


image.png

复制如下下载地址


image.png

ps:这里也可以选择liunx的对应2进制的源码安装包,可以直接wget命令下载,解压缩配置path,无需编译就可以使用了
centos服务器上执行


image.png

image.png
tar  -zxvf   node-v8.6.0-linux-x64.tar.gz

4:解压完毕后可以直接进入node文件下面,查看,看到bin目录下面已经有对应的npm、npx环境了,如果没有,那么需要自行编译make啦


image.png

5:使用pwd获取路径,加入到环境变量中,path结尾就好啦

[root@localhost  bin]#pwd
/opt/node-v16.9.0-linux-x64/bin
[root@localhost  bin]#vim  /etc/profile

效果图


image.png

image.png

6:重新读取/etc/profile,加载node的环境,查看是否正常

[root@localhost  bin]#source  /etc/profile
[root@localhost  bin]#node  -v
[root@localhost  bin]#npm  -v

image.png

7:进入vue源码目录,修改axios的请求地址,不然发起请求就会报错


image.png

ps:这里的数据提交地址,应该发给 代理服务器,也就是9000端口,然后再通过9000端口,转发给uwsgi,也就是9005端口
我们使用sed批量修改一下

#sed命令   -i参数 是 把替换结果写入到文件
#  's/127.0.0.1:8000/192.168.178.143:9000/g'     
#  s是替换指令  /你要替换的内容/替换之后的内容/    g  是 全局替换,global的意思
[root@localhost restful]# sed  -i  's/127.0.0.1:8000/192.168.3.66:9000/g' ./api.js

8:安装项目的依赖

#安装淘宝cnpm进行加速npm下载
[root@localhost restful]# npm --registry https://registry.npm.taobao.org install

9:打包生成dist文件

[root@localhost vue]# npm run  build

10:修改nginxc.conf 文件,添加一个server,返回前端项目的vue页面就可以了

[root@localhost /]# vim   /opt/tengine-2.3.3/conf/nginx.conf 
   #添加第二个虚拟主机,给vue项目前端使用
   server {
        listen 81;
        server_name _;
        location / {
                root /opt/vue/dist;
                index index.html;

        }

    }

image.png

到这里,前端部署配置结束啦。。。。

后端

1:后端代码上传到Centos服务器上,因为我第一步已经上传了,这里直接解压

[root@localhost opt]#unzip  server.zip

2:解压之后,安装依赖,使用虚拟环境安装不通项目环境

[root@localhost opt]#virtualenv  --python=python3 course
[root@localhost opt]# source   ./course/bin/activate

ps:创建一个名为course的虚拟环境,并且激活它


image.png

3:上传项目的requirements.txt到Centos服务器上,安装依赖

(course) [root@localhost opt]# pip3 install   -i  https://pypi.douban.com/simple -r requirement.txt

4:测试代码是否能够正常运行

(course) [root@localhost opt]# python3  server/manage.py   runserver 0.0.0.0:8899 
image.png

image.png

5:测试通过之后,配置uwsgi.ini,uwsig.ini内容如下

(course) [root@localhost luffy_boy]# cat  ../uwsgi.ini 
[uwsgi]
# Django-related settings
# the base directory (full path)
#  填写crm项目的第一层绝对路径
chdir           = /course/server
# Django's wsgi file
# 填写crm项目第二层的相对路径,找到第二层目录下的wsgi.py
# 这里填写的不是路径,是以上一个参数为相对,找到第二层项目目录下的wsgi.py文件
module          = luffy_boy.wsgi
# the virtualenv (full path)
# 填写虚拟环境解释器的第一层工作目录
home            =/opt/course
# process-related settings
# master
master          = true
# maximum number of worker processes
# 代表定义uwsgi运行的多进程数量,官网给出的优化建议是 2*cpu核数+1 ,单核的cpu填写几?
# 如果是单进程,十万个请求,都丢给一个进程去处理
# 3个工作进程,十万个请求,就分给了3个进程去分摊处理
processes       = 3

# the socket (use the full path to be safe
# 这里的socket参数,是用于和nginx结合部署的unix-socket参数,这里临时先暂停使用
# 使用此协议运行后台,就无法通过浏览器访问了,协议不一样
socket          = 0.0.0.0:9005
#  线上不会用http参数,因为对后端是不安全的,使用socket参数是安全的连接,用nginx反向代理去访问
# 后端程序是运行在防火墙内部,外网是无法直接访问的
# 临时使用http参数,便于我们用浏览器调试访问
#http =  0.0.0.0:8000

# ... with appropriate permissions - may be needed
# chmod-socket    = 664
# clear environment on exit
vacuum          = true

6:此时给supervisor再添加一个任务,用于管理

vim  /etc/supervisord.conf

[program:course]
command=/opt/course/bin/uwsgi --ini /opt/server/uwsgi.ini  ;supervisor其实就是在帮你执行命令而已!      
autostart=true       ; 在supervisord启动的时候也自动启动
startsecs=10         ; 启动10秒后没有异常退出,就表示进程正常启动了,默认为1秒
autorestart=true     ; 程序退出后自动重启,可选值:[unexpected,true,false],默认为unexpected,表示进程意外杀死后才重启
stopasgroup=true     ;默认为false,进程被杀死时,是否向这个进程组发送stop信号,包括子进程
killasgroup=true     ;默认为false,向进程组发送kill信号,包括子进程

image.png

7:此时重启supervisord进程,把新的任务也加进去
先杀死所有的supervisor进程吧

(course) [root@localhost server]# ps -ef   | grep super
(course) [root@localhost server]# pkill -9 supervisor #杀死supervisor进程,用于重启
(course) [root@localhost server]# pkill -9 uwsgi    #杀死crm的进程,用于待会重启
image.png

8:启动服务,检测下状态

supervisorctl -c /etc/supervisord.conf

9:此时发现还差一个代理服务器的配置,修改nginx.conf如下

#再添加一个虚拟主机,作用是给后台的反向代理使用
server {
    #这里应该填写9000的代理服务器端口
    listen 9000;
    server_name  _;
    # nginx的9000代理服务器,接收到任意请求之后,直接转发给后端的uwsgi
    location / {
      uwsgi_pass   0.0.0.0:9005;
      include  uwsgi_params;
     }
}

10:重启nginx,然后访问测试

nginx -s reload

11:安装redis且启动

yum install  redis -y   
systemctl start redis  

最后添加一行代码到nginx中的配置文件中


image.png

OK,至此前后端分离项目,部署完成。。。。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 200,841评论 5 472
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,415评论 2 377
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 147,904评论 0 333
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,051评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,055评论 5 363
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,255评论 1 278
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,729评论 3 393
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,377评论 0 255
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,517评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,420评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,467评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,144评论 3 317
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,735评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,812评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,029评论 1 256
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,528评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,126评论 2 341

推荐阅读更多精彩内容