【linux】运维之LAMP
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相关推荐
- Linux运维必会的实战编程笔试题(19题)
以下Linux运维笔试面试编程题,汇总整理自老男孩.马哥等培训机构,由运维派根据实战需求,略有调整: 企业面试题1:(生产实战案例):监控MySQL主从同步是否异常,如果异常,则发送短信或者邮件给管理 ...
- Linux 运维工程师入门须掌握的 10 个技术点
Linux系统的学习,可以选用redhat或centos,特别是centos在企业中用得最多,当然还会有其它版本的,但学习者还是以这2个版本学习就行,因为这两个版本都是兄弟,没区别的,有空可以再研究一 ...
- Linux 运维工程师的十个基本技能点
Linux 运维工程师的十个基本技能点 本人是linux运维工程师,对这方面有点心得,现在我说说要掌握哪方面的工具吧. 说到工具,在行外可以说是技能,在行内我们一般称为工具,就是运维必须要掌握的工具. ...
- 详解Linux运维工程师打怪升级篇
详解 Linux 运维工程师打怪升级篇 积累经验篇 做运维也快4年多了,就像游戏打怪升级,升级后知识体系和运维体系也相对变化挺大,学习了很多新的知识点. 运维工程师 是从一个呆逼进化为苦逼再成长为牛逼 ...
- 要做linux运维工程师的朋友,必须要掌握以下几个工具才行
本人是linux运维工程师,对这方面有点心得,现在我说说要掌握哪方面的工具吧 说到工具,在行外可以说是技能,在行内我们一般称为工具,就是运维必须要掌握的工具. 我就大概列出这几方面,这样入门就 ...
- Linux运维工程师必备技能
说到工具,在行外可以说是技能,在行内我们一般称为工具,就是运维必须要掌握的工具. 我就大概列出这几方面,这样入门就基本没问题了. Linux系统如果是学习可以选用Redhat或CentOS,特别是Ce ...
- 由su和su -的区别谈学习linux运维方法
由su和su -的区别谈学习linux运维方法一例 老男孩Linux培训新班刚开始,老男孩发现群里就在讨论这个su和su -的区别,有的同学们说,直接su就可以,有的说必须要su -.有的同学直接发问 ...
- 经验之谈:Linux运维工程师所需技能
以自己有限的经验说说作为一名合格的Linux运维工程师需要掌握的东西: 1.选择版本 现在发行版本已经让人有点眼花缭乱了.但是架构和底层的东西都是一样的,只是各自会有一些自己特有的工具. LINUX: ...
- Linux运维工程师必学必备的8项IT技能
如果你在学习Linux,那么强烈推荐你选择RHEL和Centos作为学习的Linux发行版本,在公司及企业当中他们是使用最多的,毕竟学习除了本身是爱好,其次也是为了就业.Centos是RHEL的克隆版 ...
- Linux运维人员的前生后世!
运维工作尤其是linux运维,其实最考验你的能力,因为需要学习的东西实在太多, 你既要懂网络:思科华为设备的配置: 要懂性能调优:包括lamp或者lnmp的性能调优,也包括linux操作系统调优: 要 ...
最新文章
- oracle 关闭audit,关于Oracle审计(audit)
- linux-windows主动推送文件同步目录数据 linux-windows数据目录同步
- 【高级Java架构师系统学习】java十六进制字符串转数字
- chrome插件下载
- 清晰易懂的马尔科夫链原理介绍
- java,倒置后的顺序为3,2,1_java 程序设计题库
- 关中断是否禁止任务调度?关中断能作为互斥吗?
- 二分查找的最大比较次数
- 服务器物品展示框刷物品,我的世界1period;11period;2展示框刷物品bug | 手游网游页游攻略大全...
- linux c 封装redis,封装hiredis——C++与redis对接(一)(string的SET与GET操作)
- Python数据结构与算法(1.1)——数据结构与算法导论
- matlab e52pt,matlab 神经网络的文字识别 有详细注释-补充样本
- opengl es坐标变换理解1
- Linux命令—vi命令详解
- 传输线模型及方程推导
- 全栈工程师将会缔造下一个高薪群体
- 第四章——波形与矢量AWGN信道
- 9大增长黑客牛人组织盘点,增长黑客发展奠基人!
- node之cookie-parser
- C算法-贪心+排序+双指针