公司企业架构LNMP一(单点服务器部署)

学习目标和内容

1、能够描述项目流程

2、能够了解PV、QPS、DAU等参数

3、能够实现服务器基本环境配置

4、能够部署配置MySQL生产环境

一、运维十年演变发展史

1、项目开发流程

公司老板和产品经理(产品汪)根据市场调查,决定开发的一整套 互联网产品

互动社交+电商+用户论坛(BBS)

产品决策(老板+产品+UI设计)=》代码开发(程序开发人员[前端开发[客户端页面或者APP]和后端开发[java php python node ruby])=》测试工作(测试人员)=》部署上线(运维人员)(SA、dev 开发ops 运维)

项目周期 技术人员在项目周期 加班 1-3月

企业架构集群解决方案

最终的架构图示

实现负载均衡、高可用、数据库主从复制、读写分离、缓存中间件·······

业务背景

年份:2008-2010

发布产品类型:互联⽹动态站点 社区论坛 商城 社交类站点

⽤户数量: 100-500

PV : 1000-3000(24⼩时访问次数总和 8小时) 页面访问数量 点击量

QPS: 5-10(每秒访问查询次数) 并发量

DAU: 10-50(每⽇活跃⽤户数) 日活数

QPS 两种方法:

①计算 pv/时间 = qps

②压测 ab sysbeach等测试软件 在规定时间发送一定的请求数量

服务器基本环境部署

为了学习的方便和需要,需要先进行基本环境的搭建

虚拟机软件搭建

可以参考文档《虚拟机和镜像.doc》

准备好ISO镜像文件

这里安装系统镜像,采用minimal的方式,自定义选择开发工具。安装更加快速,系统也更加轻便。

可以参考文档《虚拟机和镜像.doc》

以上操作完成基本服务器镜像系统的安装

网络配置和检测

虚拟机网卡一般常用两种方式:

桥接方式:直接连接物理交换机获取IP

NAT方式:转发宿主机网络方式,可以实现和宿主机(装虚拟机的系统[windows])上网的功能

IP获取方式:

静态获取:static 需要进行手动配置 指定之后不会改变 要配置,先ping是否被占用

动态获取:dhcp 需要启动一个dhcp服务 自动根据分配一个没有被使用的IP

如果说维护的机器数量比较多,单独配置静态IP是很繁琐的

Vmware NAT连接方式,延长续约时间

解决分配IP的问题

IP租约和续约

以上操作,可以选做,但是要求是,虚拟机可以远程连接。

FQDN设置(重要)

在获取到一台主机之后,第一步要想到配置FQDN

作用:软件进行交互需要使用FQDN

server01 server01.devops.com

配置方式:

①添加修改/etc/hosts

②网卡配置/etc/sysconfig/network

通过重启是配置生效

防火墙关闭

centos6.x系列中

①关闭iptables

  1. 关闭

  1. 关闭开机自启动

②关闭selinux

selinux 美国安全子系统,一般运维环境中直接关闭了

如果不关闭,在编译一些软件时,发现运行不起来

查看selinux配置

yum源环境配置

yum源使用的方式:

本地yum源 createrepo自定义 光盘源

网络源 官方网络源 第三方网络源(国内源会更加快速一些,aliyun、sohu、清华、科大、163······)

配置aliyun云

①打开aliyun源的官网,找到centos,点击帮助,可以直接帮助下载已经配置好的仓库文件(先把原来的Base源备份掉)

②生成yum list缓存

shell > yum makecache

以上第三方官方源配置完毕

加入epel源

Enterprise Linux额外软件包(英文: Extra Packages for Enterprise Linux,EPEL)

epel是官网比较新的版本和软件的库

安装epel源

shell > yum -y install epel-release

epel可以安装一些base源中不存在的软件。解决一些依赖软件的问题,否则一些软件可能还需要使用源码编译的方式安装。

安装vim编辑器并配置

①yum 安装vim

shell > yum -y install vim

②配置默认显示行号

grep的高亮的显示

使用source使配置文件生效

网络校时(重要)

问:为什么要校对服务器时间?

答:

①因为计划任务要执行,提供准确的时间

②服务器间进行通信时,需要统一的一致时间

因为业务的需要

实现方式:

①手动校对

②网络服务校时

ntpd服务

shell > yum -y install ntp

启动服务ntpd

shell > service ntpd start

开机自动启动

也可以使用一些第三方提供的校对ntp时间服务

https://opsx.alibaba.com/service?lang=zh-cn&activeKey=2

lrzsz上传和下载工具

命令:

rz 上传 直接拖拽文件到命令中

sz 下载 sz 文件名称路径

通过安装lrzsz实现

shell > yum -y install lrzsz

不足:

①只能操作文件,不能操作文件夹

②速度可能不是太快

其他的文件传输,可以使用ssh(sftp、scp)、ftp

企业服务器LNMP环境搭建

LAMP 注意apache要先于php安装 libphp5.so

LNMP 谁先谁后都没有关系

先安装MySQL都没有问题

实际业务环境中,依赖文件(小文件)使用yum,NMP需要使用源码编译的方式。

MySQL

介绍

MySQL作为一款开源产品,具有很大的用户市场,大部分的web解决方案都会使用MySQL作为存储

所以把MySQL的相关安装配置内容学习好,是作为一个运维工程师必不可少的

官网地址:https://dev.mysql.com/doc/refman/5.6/en/source-configuration-options.html

数据库排名网址:

https://db-engines.com/en/ranking

安装

mysql发展过程 mysqlAB(10亿美元) => sun(java)=>oracle

mariadb mysql之父认为oracle有闭源mysql的风险,所有开发了mariadb。

官方下载地址:

https://dev.mysql.com/downloads/mysql/5.6.html#downloads

可以通过wget直接下载包,或者上传一个到服务器

创建软件包存储目录 并上传软件

①创建mysql用户,mysql启动使用这个用户

shell > groupadd mysql

shell > useradd -s /sbin/nologin -g mysql -M mysql

shell > tail -1 /etc/passwd

gcc gcc-c++等等软件,进行编译c、c++语言开发的软件

三步走:./configure配置 make 编译 make install 安装

MySQL从5.5开始,源代码安装将原来的configure改为cmake,因此在安装MySQL5.5.x以上版本时,需要先安装cmake,通过yum安装

②安装cmake

yum -y install cmake

③解压并进行编译

shell > tar zxvf mysql-5.6.33.tar.gz

shell > cd mysql-5.6.33

编译配置

shell > cmake \

-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \

-DMYSQL_DATADIR=/usr/local/mysql/data \

-DSYSCONFDIR=/etc \

-DENABLED_LOCAL_INFILE=1 \

-DWITH_PARTITION_STORAGE_ENGINE=1 \

-DEXTRA_CHARSETS=all \

-DDEFAULT_CHARSET=utf8 \

-DDEFAULT_COLLATION=utf8_general_ci \

-DWITH_SSL=bundled

上面参数的说明

-DCMAKE_INSTALL_PREFIX安装到的软件目录
-DMYSQL_DATADIR数据文件存储的路径
-DSYSCONFDIR配置文件路径 (my.cnf)
-DENABLED_LOCAL_INFILE=1使用localmysql客户端的配置
-DWITH_PARTITION_STORAGE_ENGINE使mysql支持分表
-DEXTRA_CHARSETS安装支持的字符集
-DDEFAULT_CHARSET默认字符集使用 这里配置为utf-8
-DDEFAULT_COLLATION连接字符集
-DWITH_SSL开启mysql的ssl使用

在执行使用cmake编译过程中,出现如下错误

注意解决依赖

shell > yum -y install ncurses-devel

shell > rm -f CMakeCache.txt

重新cmake以上的参数

需要安装此依赖文件,并删除编译缓存文件,重新cmake

编译并安装

shell > make

shell > make install

查看安装目录

配置

①授权

shell > chown -R mysql:mysql /usr/local/mysql

②复制配置文件

shell > cp /usr/local/mysql/support-files/my-default.cnf /etc/my.cnf

③初始化数据库

这是很重要的一步,如果不初始化,数据就不能够使用

生成数据库的基本数据文件

shell > /usr/local/mysql/scripts/mysql_install_db --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --user=mysql

--basedir安装到的软件目录
--datadir数据文件存储路径
--usermysql使用的用户

④添加启动服务

shell > cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld

shell > service mysqld start

shell > chkconfig --add mysqld(添加服务管理)

⑤添加环境变量(mysql命令可直接使用)

shell > echo 'PATH=/usr/local/mysql/bin:$PATH' >> /etc/profile

shell > source /etc/profile

⑥处理匿名登录和无密码问题

mysql > select Host,User,Password from mysql.user;

删除匿名用户

mysql > delete from mysql.user where User=’’;

修改用户密码

使用密码登录mysql

真实业务环境中密码包含大小写、数字、特殊复杂符号、长度一般12-16位之间

Tip:yum安装mysql(扩展)

安装mysql的方式 配置官方yum,通过官网的yum源安装多个版本

5.5 5.6 5.7 8.0

①安装mysql的官方yum源

https://dev.mysql.com/downloads/repo/yum/

rpm 安装上面链接的软件rpm包

shell > rpm -ivh https://dev.mysql.com/get/mysql80-community-release-el6-1.noarch.rpm

②配置mysql的yum源,确定安装版本

③yum安装并启动mysql

shell >yum install mysql-community-server