部署在线测试 LNMP 环境

By | 2017年7月1日 | 阅读:369 次

前言
感谢我们技术总监(一个人负责好三个产品线的后端开发、数据爬虫、前端联调…以下简称dalao),给了我很多锻炼和学习新技术的机会,特别感谢

在先前小产品中我一个人和前端配合开发时使用的 我的 ngrok 来模拟线上服务器配合开发,但在这个用户量大产品的 v2.0 (v1已停测)开发过程中需要配合就吃不消了,在这个大产品v1中开发时配合是流程如下:

  • 每个独立的功能点作为一个新 branch,比如获取微信用户的openID: feature/get_open_id
  • 每次前端人员反馈明显 bug,新开一个 branch 处理,比如处理分页异常: fixbug/paging_exception
  • 新功能、bug修复在本地工作区测试(Postman等)正确后,上传到 Gitlab 仓库,dalao 进行 Code Review 检查我的代码在业务逻辑上有无缺陷、有无安全隐患等,再 merge 到 develop 分支;
  • 后端根据接口文档开发接口、前端根据线上地址调取数据完成页面数据交互等;

  • 由于dalao负责的事挺多,每次切换到 master 分支去 pull 部署代码蛮浪费时间,有的时候产品临时加了个需求,在这个页面上还需要啥啥数据,严重时还需要新增字段,用 migration 在本地测试 完毕后还需要在去执行、合并代码、最后到线上去拉取代码。。真是麻烦;
  • dalao 说后边再用CI做自动部署,暂时让我新加了台服务器来部署 develop 分支用于开发环境,即把 master 和 develop 部署在两台服务器上(真分布式哈哈),这样和前端联调使用 develop 就好;线上环境是 MySQL5.6 + PHP 5.6,我试着部署 支持 HTTPS 的 Nginx、PHP7.0 和 MySQL5.7,在后边测试下性能提升情况;
  • 目标:配置 LNMP 环境,部署 develop 分支代码作为开发环境,master 分支在线上服务器作为线上环境

1. 查看服务器配置


2. 安装 MySQL 5.7.18

首选偷懒使用 yum 安装,但就算切换 yum 源到阿里云,最高版本也只是 5.1,dalao 建议我用源码编译安装学习下编译选项和依赖,于是开始使用源码安装

2.1 源码包

  • wget 或 curl 下载:https://dev.mysql.com/downloads/mysql/
  • 选择最后一个自带 Boost 库 的 Source Code:mysql-boost-5.7.18.tar.gz;编译会报错缺少boost 库, 还得自己去下载 boost 的源码(有73MB,走代理都下得很慢)

2.2 依赖包

  • CMake
    MySQL 5.5 开始,MySQL源码的配置不再使用 GUN autotools (Configure),而是使用 CMake工具来配置;

  • Boost
    Cmake 依赖于 C++的 boost库,运行未安装 boost 的cmake 报错如下,需 下载 库解压,配置时添加路径到 -DWITH_BOOST = boost_path 选项

  • Gcc 和 Gcc-c++:编译工具

  • bison :语法分析器

  • zlib : 提供存储数据的压缩接口

  • libaio :Linux异步IO接口

  • ncurses-devel :字符终端处理库

  • openssl : 使用SSL进行数据复制

2.3 编译安装

配置参数参考 官方文档

主机内存只有1GB,我的 cmake 编译了快一小时。。编译出错的话看报错,缺少库的话去下载源码包,在重新编译安装前先 make cleanrm -f CMakeCache.txt

2.4 配置

  • 设置开机自启动

  • 配置文件:/etc/my.conf
    我在初始化 mysql 时候报错 Can't connect to local MySQL server through socket '/usr/local/mysql/mysql.sock' (2),于是 find / -type f -name mysql.sock 找到了居然编译到了 /var/lib/mysql/mysql.sock ,写入配置文件即可

2.5 初始化与启动


2. 安装 PHP 7.1.0

2.1 源码包

  • wget 或 curl 下载:http://cn2.php.net/get/php-7.1.0.tar.gz/from/this/mirror

2.2 编译安装

编译参数很明了,安装过程中报错缺少一大堆库,用 yum 安装后再次配置即可;我严重怀疑就是机子内存不够,配置了半个多小时,make test 测了十几分钟233

2.3 启用PHP-FPM


3. 安装 Nginx

3.1 源码包

  • wget 或 curl 下载:http://nginx.org/download/nginx-1.13.3.tar.gz

3.2 编译安装

3.3 配置

3.4 配置 HTTPS

阿里云有些服务器的443是默认关闭的(微笑脸),用 open-ports test 检测下,关闭的话需要编辑防火墙规则,参考 iptables中开启443端口的正确姿势


4. 安装 Git

同上,下载源码编译安装,在 Gitlab 上设置好 SSH_Key,git remote add XXX.git 拉取代码,切换到 develop 分支,补齐 .gitignore 忽略的配置文件,composer 安装依赖。另外,在 开发服务器 上只pull,不push;

最后使用加快导出导入数据库到新主机;

All done.

发表评论

电子邮件地址不会被公开。