1、什么是LAMP

LAMP:Linux + Apache + MySQL + PHP LAMP 架构(组合)

LNMP:Linux + Nginx + MySQL + php-fpm LNMP 架构(组合)

LNMPA:Linux + Nginx(80) + MySQL + PHP + Apache Nginx 代理方式

Apache:Apache是世界使用排名第一的Web服务器软件。

PHP:一种专门用于Web开发的编程语言。

MySQL:MySQL是一个关系型数据库管理系统,主要用于永久存储项目数据。

2、LAMP部署前期准备

☆ 关闭防火墙

# systemctl stop firewalld
# systemctl disable firewalld

☆ 关闭SELinux

SELinux(Security-Enhanced Linux) 是美国国家安全局(NSA)对于强制访问控制的实现,是 Linux历史上最杰出的新安全子系统。

获取SELinux的状态:

# getenforce

临时关闭SElinux:重启后SELinux还会自动启动

# setenforce 0

永久关闭SELinux:编辑SELinux的配置文件

# vim /etc/selinux/config
SELINUX=disabled

☆ 检查系统中是否已安装Apache

# rpm -qa |grep httpd# rpm -e httpd-2.4.6-90.el7.centos.x86_64
# rpm -e httpd-tools-2.4.6-90.el7.centos.x86_64

☆ 检查系统中是否已安装MySQL

# rpm -qa |grep mysql

☆ 检查系统中是否已安装PHP

# rpm -qa |grep php

AMP安装指南:在Linux中安装AMP必须先安装Apache,在安装MySQL,最后安装PHP

3、LAMP环境之Apache安装

Apache:阿帕奇,Apache基金会

httpd软件 => 前身apache,随着时间的推移以及互联网行业的发展,越来越多的软件加入到了Apache的基金会。

第一步:安装httpd软件

# yum install httpd -y

第二步:配置/etc/httpd/conf/httpd.conf文件

# vim /etc/httpd/conf/httpd.conf
/ServerName => 搜索
96 ServerName localhost:80

localhost : 代表本机,对应的IP地址可以使127.0.0.1或本机的公网IP

第三步:启动httpd服务

# systemctl start httpd

第四步:把httpd服务添加到开机启动项中

# systemctl enable httpd

第五步:使用ss或netstat命令查询httpd占用的端口

# netstat -tnlp |grep httpd
或
# ss -naltp |grep httpd

第六步:在浏览器中,使用公网IP访问阿里云服务器

4、LAMP环境之MySQL安装

☆ 下载MySQL的官网yum源

由于yum源上默认没有mysql-server。所以必须去官网下载后在安装

# wget http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm

☆ 安装MySQL的官网镜像源

# rpm -ivh mysql-community-release-el7-5.noarch.rpm

☆ 使用yum安装mysql最新版软件

# yum install mysql-community-server -y

MySQL软件是一个C/S架构的软件,拥有客户端与服务器端。mysql-server服务器端(内部也包含了客户端),community代表社区版(免费开源)

☆ 启动mysql,查看端口占用情况

# systemctl start mysqld
# netstat -tnlp |grep mysqld

☆ MySQL数据库初始化(重要)

默认情况下,数据库没有密码,也没有任何数据,必须要初始化

① 初始化数据,设置root密码(MySQL管理员)

# mysql_secure_installation

扩展:以上说的root和Linux中的root不是同一个用户,这个root代表MySQL数据库的管理员,只不过这个管理员也叫root。

学习环境下,密码越简单越好。生产环境下越复杂越好。

② 把mysqld服务添加到开机启动项

# systemctl enable mysqld

默认已经开机启动,这里可以跳过

③ 连接MySQL数据库,测试

# mysql -u root -p 回车
Enter password:输入刚才设置的密码,如123,回车
mysql> show databases;    =>   代表显示所有数据库
mysql> exit

5、LAMP环境之PHP安装

☆ 使用yum命令安装php软件

# yum install php -y

☆ 使用systemctl启动php软件(重启Apache)

# systemctl restart httpd

为什么启动php就是重启Apache呢?答:因为LAMP架构中,PHP是以模块的形式追加到Apache的内核中,所以启动php就相当于重置Apache软件

☆ 测试LAMP环境是否可以使用

第一步:使用cd命令进入/var/www/html目录

# cd /var/www/html
Apache的项目目录 => /var/www/html,以后程序员开发的代码都是放置于此目录

第二步:使用vim命令创建demo.php文件

# vim demo.php

第三步:编写php代码

<?phpecho 'hello world';
?>

编写完成后,保存退出,然后在浏览器中使用http://公网IP/demo.php

二、LAMP源码构建

1、项目背景

为企业内部的开发人员,部署一套“预发布系统”,要求其环境与线上环境一模一样。

由于项目是基于PHP + MySQL进行开发设计的,所以我们需要选配环境。

LAMP = Linux + Apache + MySQL + PHP

LNMP = Linux + Nginx + MySQL + PHP

经过开发人员的沟通确认 => LAMP作为预发布环境!

2、任务要求

  • 源码部署LAMP环境,和生产保持一致
  • 静态资源文件同步生产环境(生产发生改变立马同步到预发布平台)

3、环境准备

系统环境:CentOS7.6

软件环境:AMP(Apache、MySQL以及PHP)

Apache——>2.4.37(2.2与2.4)
MySQL——>5.6.31(5.5、5.6与5.7)
PHP——>7.2.17(5.2、5.4、5.6、7.0、7.1、7.2)

4、系统环境

编号 主机名称 IP地址 备注信息
1 web.itcast.cn 10.1.1.13 LAMP预发布环境

① 更改主机名称、配置IP地址(静态IP、更改UUID编号、关闭NetworkManager)

② 关闭防火墙、SELinux

③ 配置YUM源(有网配公网,没网配光盘或自建YUM源)

5、依赖软件安装

# yum install cmake pcre-devel ncurses-devel openssl-devel libcurl-devel

6、AMP软件安装注意事项


编译安装顺序:

Linux+Apache(2.4)+MySQL(5.6.31)+PHP(7.2.17)Apache——>MySQL——>PHP 或者  MySQL——>Apache——>PHP

三、编译安装MySQL软件

1、安装需求

软件版本 安装目录 数据目录 端口
mysql-5.6.31 /usr/local/mysql /usr/local/mysql/data 3306

2、MySQL安装详解

第一步:创建一个mysql系统账号(没有这个账号mysql无法运行)

# useradd -r -s /sbin/nologin mysql

第二步:对软件进行解压

# tar xf mysql-5.6.31.tar.gz
# cd mysql-5.6.31

第三步:使用cmake配置MySQL的安装向导

# vim cmake.sh
cmake . \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql/ \
-DMYSQL_DATADIR=/usr/local/mysql/data \
-DENABLED_LOCAL_INFILE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DMYSQL_TCP_PORT=3306 \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DWITH_EXTRA_CHARSETS=all \
-DMYSQL_USER=mysql# chmod +x cmake.sh
# ./cmake.sh

第四步:make && make install

# make && make install

第五步:更改目录权限以及初始化数据库

# chown -R mysql.mysql /usr/local/mysql# cd /usr/local/mysql
删除/etc/my.cnf文件,如果不删除此文件,会导致初始化失败
# rm -f /etc/my.cnf
初始化就是给mysql数据库一些初始化的数据(如账号、密码、数据文件,ll data)
# ./scripts/mysql_install_db --user=mysql
# ll data
这个目录如果产生了一个mysql的文件夹就代表初始化成功了

第六步:把mysql的启动脚本copy到/etc/init.d目录下,起一个名称叫做mysql

# cp support-files/mysql.server /etc/init.d/mysql
# service mysql start

第七步:设置密码与环境变量

# cd /usr/local/mysql
# bin/mysqladmin -u root password '123'

生产环境下,密码一定要越复杂越好

第八步:把/usr/local/mysql/bin目录添加到环境变量

# echo 'export PATH=$PATH:/usr/local/mysql/bin' >> /etc/profile
# source /etc/profile# mysql -uroot -p
Enter password:123
mysql> exit;

四、编译安装Apache软件

1、源码安装依赖软件apr

安装apr软件:
# tar xf apr-1.5.2.tar.bz2
# cd apr-1.5.2
# ./configure && make && make install安装apr-util软件:
# tar xf apr-util-1.5.4.tar.bz2
# cd apr-util-1.5.4/
# ./configure --with-apr=/usr/local/apr/bin/apr-1-config    指定软件apr的路径
# make && make install

2、编译安装Apache软件(重点)

第一步:解压软件

# yum remove httpd -y# tar xf httpd-2.4.37.tar.bz2
# cd httpd-2.4.37

第二步:编写apache.sh脚本进行软件安装

# vim apache.sh
./configure \
--enable-modules=all \
--enable-mods-shared=all \
--enable-so \
--enable-rewrite \
--with-pcre \
--enable-ssl \
--with-mpm=prefork \
--with-apr=/usr/local/apr/bin/apr-1-config \
--with-apr-util=/usr/local/apr/bin/apu-1-config

第三步:给予x权限,然后make && make install

# chmod +x apache.sh
# ./apache.sh# make && make install

第四步:运行Apache软件

# cd /usr/local/apache2/
# bin/apachectl

五、源码安装PHP软件

1、安装说明

第一步:对软件进行解压缩

# tar xf php-7.2.17.tar.xz
# cd php-7.2.17

第二步:对php源码进行一个配置

# vim php.sh
./configure \
--with-apxs2=/usr/local/apache2/bin/apxs \
--with-mysqli \
--with-pdo-mysql \
--with-zlib \
--with-curl \
--enable-zip \
--with-gd \
--with-freetype-dir \
--with-jpeg-dir \
--with-png-dir \
--enable-sockets \
--with-xmlrpc \
--enable-soap \
--enable-opcache \
--enable-mbstring \
--enable-mbregex \
--enable-pcntl \
--enable-shmop \
--enable-sysvmsg \
--enable-sysvsem \
--enable-sysvshm \
--enable-calendar \
--enable-bcmath# chmod +x php.sh
# ./php.sh

第三步:解决PHP依赖关系

configure: error: libxml2 not found. Please check your libxml2 installation.

出现以上提示,代表php与其他软件存在依赖关系:

# yum install libxml2-devel -y

除了以上这个依赖以外,还存在其他依赖:

# yum install libjpeg-devel libpng-devel freetype-devel -y

第四步:编译+安装

# make && make install

第五步:检查php有没有安装成功

# ls /usr/local/apache2/modules/libphp7.so

2、配置Apache与PHP

第一步:打开Apache的配置文件

# vim /usr/local/apache2/conf/httpd.conf
209行 ServerName localhost:80

第二步:配置Apache语言支持(支持中文)

159行 LoadModule negotiation_module modules/mod_negotiation.so 此模块打开注释
483行 Include conf/extra/httpd-languages.conf  打开此选项,扩展配置文件就生效了
...

第三步:开启对PHP的支持

166行 LoadModule php7_module modules/libphp7.so
AddHandler php7-script .php
AddType text/html .php

第四步:添加index.php默认首页

//默认主页加上index.php,并放在index.html前,支持php的首页文件
<IfModule dir_module>
270行    DirectoryIndex index.php index.html
</IfModule>

第五步:让Apache优先支持中文

# vim /usr/local/apache2/conf/extra/httpd-languages.conf
19行 DefaultLanguage zh-CN     打开注释,默认语言集改为中文
78行 LanguagePriority zh-CN en ca cs da de el eo es et fr he hr it ja ko ltz nl nn no pl pt pt-BR ru sv tr zh-TW     语言集优先集,把zh-CN 写到前面

设置完成后,重启Apache软件

# cd /usr/local/apache2
# bin/apachectl -k restart
# bin/apachectl -k restart备注:如果还不行,直接pkill httpd,然后bin/apachectl启动

3、编写php测试脚本

# cd /usr/local/apache2/htdocs                  htdocs就是apache的默认项目目录
# rm -f index.html
# vim index.php
<?phpphpinfo();
?>

到此,LAMP源码编译安装就结束了!

六、使用LAMP部署Web项目

1、下载wordpress博客系统

wordpress-4.7.3-zh_CN.tar.gz

2、解压

# tar xf wordpress-4.7.3-zh_CN.tar.gz

3、创建一个项目目录

# mkdir /www
# mv wordpress /www/blog# chown -R daemon.daemon /www/blog/

4、配置虚拟主机(一台服务器多个项目)

正常情况下:/usr/local/apache2/htdocs目录下(相当于/var/www/html)

一台服务器多个项目:使用虚拟主机

第一步:在httpd.conf配置文件中开启虚拟主机的配置文件

# vim /usr/local/apache2/conf/httpd.conf
# Virtual hosts
494行 Include conf/extra/httpd-vhosts.conf       //打开加载虚拟主机配置文件

第二步:在/usr/local/apache2/conf/extra/httpd-vhosts.conf定义项目

# vim /usr/local/apache2/conf/extra/httpd-vhosts.conf

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iD1xkuBv-1670469925243)(media/image-20200416202109513.png)]

第三步:重启Apache

# cd /usr/local/apache2
# bin/apachectl -k stop
# bin/apachectl

5、在数据库中创建一个blog数据库

# mysql -uroot -p
Enter password:123
mysql> create database blog default charset utf8;

6、在Windows中配置本地DNS

运行(Windows + R) => drivers + 回车:C:\Windows\System32\drivers\etc\hosts

Windows的DNS文件 => 可以劫持域名,自定义域名指向:

10.1.1.13 www.blog.com

7、使用Google浏览器或Firefox浏览器安装博客

第一次访问:报403 Forbidden

原因:默认情况下,httpd不允许其他主机访问项目目录

解决方案:

# vim /usr/local/apache2/conf/httpd.conf

配置数据库:

运行结果:

【linux】运维之LAMP相关推荐

  1. Linux运维必会的实战编程笔试题(19题)

    以下Linux运维笔试面试编程题,汇总整理自老男孩.马哥等培训机构,由运维派根据实战需求,略有调整: 企业面试题1:(生产实战案例):监控MySQL主从同步是否异常,如果异常,则发送短信或者邮件给管理 ...

  2. Linux 运维工程师入门须掌握的 10 个技术点

    Linux系统的学习,可以选用redhat或centos,特别是centos在企业中用得最多,当然还会有其它版本的,但学习者还是以这2个版本学习就行,因为这两个版本都是兄弟,没区别的,有空可以再研究一 ...

  3. Linux 运维工程师的十个基本技能点

    Linux 运维工程师的十个基本技能点 本人是linux运维工程师,对这方面有点心得,现在我说说要掌握哪方面的工具吧. 说到工具,在行外可以说是技能,在行内我们一般称为工具,就是运维必须要掌握的工具. ...

  4. 详解Linux运维工程师打怪升级篇

    详解 Linux 运维工程师打怪升级篇 积累经验篇 做运维也快4年多了,就像游戏打怪升级,升级后知识体系和运维体系也相对变化挺大,学习了很多新的知识点. 运维工程师 是从一个呆逼进化为苦逼再成长为牛逼 ...

  5. 要做linux运维工程师的朋友,必须要掌握以下几个工具才行

        本人是linux运维工程师,对这方面有点心得,现在我说说要掌握哪方面的工具吧 说到工具,在行外可以说是技能,在行内我们一般称为工具,就是运维必须要掌握的工具. 我就大概列出这几方面,这样入门就 ...

  6. Linux运维工程师必备技能

    说到工具,在行外可以说是技能,在行内我们一般称为工具,就是运维必须要掌握的工具. 我就大概列出这几方面,这样入门就基本没问题了. Linux系统如果是学习可以选用Redhat或CentOS,特别是Ce ...

  7. 由su和su -的区别谈学习linux运维方法

    由su和su -的区别谈学习linux运维方法一例 老男孩Linux培训新班刚开始,老男孩发现群里就在讨论这个su和su -的区别,有的同学们说,直接su就可以,有的说必须要su -.有的同学直接发问 ...

  8. 经验之谈:Linux运维工程师所需技能

    以自己有限的经验说说作为一名合格的Linux运维工程师需要掌握的东西: 1.选择版本 现在发行版本已经让人有点眼花缭乱了.但是架构和底层的东西都是一样的,只是各自会有一些自己特有的工具. LINUX: ...

  9. Linux运维工程师必学必备的8项IT技能

    如果你在学习Linux,那么强烈推荐你选择RHEL和Centos作为学习的Linux发行版本,在公司及企业当中他们是使用最多的,毕竟学习除了本身是爱好,其次也是为了就业.Centos是RHEL的克隆版 ...

  10. Linux运维人员的前生后世!

    运维工作尤其是linux运维,其实最考验你的能力,因为需要学习的东西实在太多, 你既要懂网络:思科华为设备的配置: 要懂性能调优:包括lamp或者lnmp的性能调优,也包括linux操作系统调优: 要 ...

最新文章

  1. oracle 关闭audit,关于Oracle审计(audit)
  2. linux-windows主动推送文件同步目录数据 linux-windows数据目录同步
  3. 【高级Java架构师系统学习】java十六进制字符串转数字
  4. chrome插件下载
  5. 清晰易懂的马尔科夫链原理介绍
  6. java,倒置后的顺序为3,2,1_java 程序设计题库
  7. 关中断是否禁止任务调度?关中断能作为互斥吗?
  8. 二分查找的最大比较次数
  9. 服务器物品展示框刷物品,我的世界1period;11period;2展示框刷物品bug | 手游网游页游攻略大全...
  10. linux c 封装redis,封装hiredis——C++与redis对接(一)(string的SET与GET操作)
  11. Python数据结构与算法(1.1)——数据结构与算法导论
  12. matlab e52pt,matlab 神经网络的文字识别 有详细注释-补充样本
  13. opengl es坐标变换理解1
  14. Linux命令—vi命令详解
  15. 传输线模型及方程推导
  16. 全栈工程师将会缔造下一个高薪群体
  17. 第四章——波形与矢量AWGN信道
  18. 9大增长黑客牛人组织盘点,增长黑客发展奠基人!
  19. node之cookie-parser
  20. C算法-贪心+排序+双指针

热门文章

  1. Java数字转中文数字
  2. ### LinuxCBT VBOX Edition ###
  3. 【Turtlrbot3-burger】从零开始配置Turtlrbot3小车1
  4. 《霍乱时期的爱情》摘要
  5. SQL语句基础1:对数据库和表的增删改操作,初始化时约束和数据的加入
  6. html获取当前网页ip和端口,js获取当前访问者的IP地址和所属地市代码
  7. 如何解决微信小程序加载慢的问题?
  8. 如何将栅格数据与行政边界_实时大数据监控–与边界专家Gary Read进行问答
  9. 房子装饰风水有哪些讲究和忌讳
  10. AU降噪 李兴兴