为什么要配置nginx统一开发环境?
一般公司里面的开发人员都是自己在自己电脑上安装开发环境,公司也不多做要求,但这会有一个问题:每个人安装的开发环境对应的软件版本可能都不一样,即使规定了用什么版本的软件开发,大家也不一定遵守,只要能跑起来就无所谓,这就导致有些功能提交测试环境的时候会有意想不到的问题,所以这个时候就需要统一开发环境,减少这种低级错误的发生。
实现目标
统一开发环境,让开发人员只需在本地电脑安装极少的必不可少的开发软件(如:vscode、git、数据库管理终端即可)即可快速进入开发,而不去关注一些服务类软件的安装(如:php、redis、mysql、mongo、nginx等)
思路
本地同步服务器项目,本地开发完自动同步到远程服务器;
可以理解为远程服务器只做一个功能预览,具体开发在本地,远程服务器的文件改动都是本地同步上去的,所以在服务器拉取代码的时候要把同步上去的代码给忽略掉;
本地和远程都需要更新代码;这样本地的代码是新的,远程服务器预览的功能也是新的。
配置步骤
- nginx配置
需要开发人员有linux基础!
首先,在linux上面创建带家目录的新用户;
然后,在/data/devhome里面给每个开发人员新建目录,然后在里面通过git拉取项目
![图片描述](//img1.sycdn.imooc.com//620a020f0001b3bc06320122.jpg)
最后,配置nginx:
server {
listen 80;
server_name api.student.com;
server_name ~^api-([a-z\d]+).student.com$;
client_max_body_size 100m;
concat on;
concat_max_files 10;# 最大合并文件数
concat_unique on;# 只允许同类型文件合并
set $ismob 0;
set $course course;
set $devhome student;
set $flag 0;
if ($http_host ~* "api-([a-z\d]+).(student|review).com") {
#匹配每个人姓名:api-lidy.student.com,然后赋值给$devhome
set $devhome $1;
}
#判断是否是移动端
if ( $http_user_agent ~ "^((.*iPhone.*)|(.*Android.*))$" ) {
set $ismob 1;
}
access_log /data/log/nginx/access.log main;
error_log /data/log/nginx/error.log;
#重要是这里!!!
root /data/devhome/$devhome/项目一级目录/具体项目二级目录/api/webroot/;
#在 /data/devhome/下面有 lidy目录,lidy下面有applist目录,applist目录下面有多个项目目录(aaa、bbb、ccc),注:lidy是开发人员姓名
#例如:root /data/devhome/lidy/applist/aaa/api/webroot/;
index index.php index.html index.htm;
fastcgi_intercept_errors on;
location / {
if (!-e $request_filename) {
rewrite ^/(.*\.(js|ico|gif|jpg|png|css|bmp|html|xls)$) /$1 last;
rewrite ^/(\?\?.*\.(js|css).*$) /$1 last;
rewrite ^/(.*) /index.php?$1 last;
}
}
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9001;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
include fastcgi.conf;
}
add_header x-Dev-User $devhome;
}
2、 本地配置(以vscode为例)
需要用到SFTP插件,用来同步开发环境的项目!!!
配置sftp.json:
{
"name": "My Server",//项目名字
"host": "localhost",//linux地址ip
"port": 22,//linux地址端口
"protocol": "sftp",
"username": "username",//登录linux的用户名
"password": "mkwimooc",//登录linux的密码
"remotePath": "/",//项目目录地址:/data/devhome/lidy/applist/aaa/也可以写成/home/lidy/shuxiaotong/(如果不想让用户访问/data/devhome/这个目录,那么可以在/home/lidy目录里面创建软连接对应到/data/devhome/lidy/applist/aaa/目录)
"uploadOnSave": true, //本地更新文件保存会自动同步到远程文件
}
3、调试
需要开发人员登录到linux服务器手动操作更新代码。
第二步配置完vscode自动上传文件以后,那么本地编辑完文件保存后就自动同步到了linux上了,访问:api-lidy.student.com 就能看到效果了。
如果想提交代码,那么可以在本地git当中进行提交,linux上面不用执行提交代码的操作,因为是同步上去的;
如果想在linux上拉取别人提交的代码,需要把同步上去的文件给忽略掉,在linux个人目录下执行:git checkout .
然后再执行:git fetch origin git merge origin 或者执行git pull
这样linux上就拉取了最新的代码,本地记得也要拉取一下。
点击查看更多内容
为 TA 点赞
评论
共同学习,写下你的评论
评论加载中...
作者其他优质文章
正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦