文章目录
- LAMP是什么
- LAMP软件组件
- Linux
- Apache
- MySQL
- PHP
- 源码安装Apache
- 一、准备工作
- 二、安装环境依赖包
- 三、配置软件模块
- 四、编译及安装
- 五、优化配置文件路径
- 六、添加httpd系统服务(有两种方法)
- 方法一:
- 方法二:
- 七、修改httpd 服务配置文件
- 八、浏览器访问验证
- 源码安装mysql
- 一、准备工作
- 二、安装环境依赖包
- 三、配置软件模块
- 四、编译及安装
- 五、修改mysql 配置文件
- 六、优化mysql
- 七、初始化数据库
- 八、启动mysql
- 源码安装php
- 一、准备工作
- 二、安装环境依赖包
- 三、配置软件模块
- 四、编译与安装
- 五、优化PHP
- 六、修改httpd 服务的配置文件
- 七、验证PHP测试页
LAMP是什么
LAMP(Linux、Apache、MySQL、Perl / PHP / Python)是Web上最流行的应用程序最常用的软件堆栈之一的首字母缩写词。其通用软件堆栈模型具有大量可互换的组件。
该首字母缩略词中的每个字母代表其四个开源基石之一:
- Linux操作系统
- HTTP服务器
- 关系数据库管理系统:MySQL
- 编程语言:Perl、 PHP或Python
LAMP 堆栈的组件存在于大多数Linux 发行版的软件存储库中。
LAMP软件组件
Linux
Linux 是一种类 Unix计算机操作系统,采用自由开源软件开发和分发模式组装而成。大多数Linux 发行版都是基于Linux 内核并通常基于包管理系统的软件集合,通过其软件包提供完整的 LAMP 设置。
Apache
LAMP 的 Web 服务器角色传统上由 Apache 提供,后来还包括其他 Web 服务器,例如Nginx。
Apache是根据Apache 许可证发布的开源软件。它支持各种各样的功能,其中许多功能都是作为编译 模块实现的,这些模块扩展了 Apache 的核心功能。这些功能包括服务器端编程语言支持和身份验证。
MySQL
MySQL 最初作为 LAMP 的关系数据库管理系统,后来被其他系统交替使用,例如PostgreSQL、MariaDB(由 MySQL 的原始开发人员开发的社区开发的分支)甚至MongoDB等NoSQL数据库。
PHP
PHP 是一种服务器端脚本语言,专为Web开发而设计,但也可用作通用编程语言。 Web 服务器通过 PHP 处理器模块解释PHP 代码,并生成结果网页。 PHP 命令可以选择直接嵌入到HTML源文档中,而不必调用外部文件来处理数据。 它还发展到包含命令行界面功能,可用于独立的图形应用程序。 PHP 是根据PHP 许可证条款发布的免费软件,由于 PHP 许可证对术语PHP的使用有所限制,因此与GNU 通用公共许可证(GPL)不兼容。
源码安装Apache
一、准备工作
- 将安装Apache所需软件包传到/opt/apache目录下并解压
systemctl disable firewalld --now
setenforce 0
vim /etc/selinux/config SELINUX=0cd /opt
mkdir apache
tar xf apr-1.6.2.tar.gz
tar xf apr-util-1.6.0.tar.gz
tar xf httpd-2.4.29.tar.bz2
使用xftp上传Apache所需软件包
二、安装环境依赖包
命令
yum -y install gcc gcc-c++ make pcre pcre-devel expat-devel perl
解析
yum -y install \
gcc \ #C语言的编译器
gcc-c++ \ #C++的编译器
make \ #源代码编译器(源代码转换成二进制文件)
pcre \ #pcre是一个Perl函数库,包括perl 兼容的正则表达式库
pcre-devel \ #perl的接口开发包
expat-devel \ #用于支持网站解析HTML、XML文件
perl #perl语言编译器
三、配置软件模块
mv apr-1.6.2 httpd-2.4.29/srclib/aprmv apr-util-1.6.0 httpd-2.4.29/srclib/apr-utilcd httpd-2.4.29/./configure \
--prefix=/usr/local/httpd \
--enable-so \
--enable-rewrite \
--enable-charset-lite \
--enable-cgi
四、编译及安装
make -j 3 #表示开3核同时进行编译make install
五、优化配置文件路径
把httpd服务的可执行程序文件放入路径环境变量的目录中便于系统识别
ln -s /usr/local/httpd/conf/httpd.conf /etc/ln -s /usr/local/httpd/bin/* /usr/local/bin/
六、添加httpd系统服务(有两种方法)
方法一:
```bash
cp /usr/local/httpd/bin/apachectl /etc/init.d/httpd #用于service服务管理
chmod +x /etc/init.d/httpd
vi /etc/init.d/httpd#!/bin/bash #在第一行前插入新行,添加此三行内容# chkconfig: 35 85 21 #35级别自动运行 第85个启动 第21个关闭# description: Apache is a World Wide Web serverchkconfig --add httpd #将httpd服务加入到service管理器systemctl start httpd.service
```
方法二:
```bash
vim /usr/lib/systemd/system/httpd.service[Unit] #服务的说明Description=The Apache HTTP Server #描述服务After=network.target #依赖,当依赖的服务启动之后再启动自定义的服务[Service] #服务运行参数的设置Type=forking #后台运行方式PIDFile=/usr/local/httpd/logs/httpd.pid #PID文件位置ExecStart=/usr/local/bin/apachectl $OPTIONS #服务的运行命令ExecReload=/bin/kill -HUP $MAINPID #根据PID重载配置[Install] #服务安装的相关设置WantedBy=multi-user.target #设置为多用户systemctl start httpd.service
systemctl enable httpd.service```
七、修改httpd 服务配置文件
vim /etc/httpd.conf#--52行--修改Listen 192.198.80.10:80 #<serverIP>:80#--197行--取消注释,修改ServerName www.wl.com:80 #自定义域名#可以不修改#--221行--默认首页存放路径DocumentRoot "/usr/local/httpd/htdocs"#--255行--默认首页文件名设置DirectoryIndex index.html
httpd -t 或 apachectl -t #检查配置文件的配置项是否有误cat /usr/local/httpd/htdocs/index.htmlsystemctl restart httpd.service
八、浏览器访问验证
netstat -anpt | grep 80
echo "10.190.33.40 www.wl.com" >> /etc/hosts
源码安装mysql
一、准备工作
将安装mysql 所需软件包传到/opt目录下并解压,卸载mariadb
cd /opt
mkdir mysql
cd mysql
tar xf mysql-boost-5.7.44.tar.gz
yum remove -y mariadb* #卸载mariadb相关内容
二、安装环境依赖包
yum -y install \
gcc \
gcc-c++ \
ncurses \ #字符终端下图形互动功能的动态库
ncurses-devel \ #ncurses开发包
bison \ #语法分析器
cmake #mysql需要用cmake编译安装
三、配置软件模块
cd mysql-5.7.44/cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \ #指定mysql的安装路径
-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \ #指定mysql进程监听套接字文件(数据库连接文件)的存储路径
-DSYSCONFDIR=/etc \ #指定配置文件的存储路径
-DSYSTEMD_PID_DIR=/usr/local/mysql \ #指定进程文件的存储路径
-DDEFAULT_CHARSET=utf8 \ #指定默认使用的字符集编码,如 utf8
-DDEFAULT_COLLATION=utf8_general_ci \ #指定默认使用的字符集校对规则
-DWITH_EXTRA_CHARSETS=all \ #指定支持其他字符集编码
-DWITH_INNOBASE_STORAGE_ENGINE=1 \ #安装INNOBASE存储引擎
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \ #安装ARCHIVE存储引擎
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \ #安装BLACKHOLE存储引擎
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \ #安装FEDERATED存储引擎
-DMYSQL_DATADIR=/usr/local/mysql/data \ #指定数据库文件的存储路径
-DWITH_BOOST=/usr/local/boost \ #指定boost的路径,若使用mysql-boost集成包安装则-DWITH_BOOST=boost
-DWITH_SYSTEMD=1 #生成便于systemctl管理的文件
如果在CMAKE的过程中有报错,当报错解决后,需要把源码目录中的CMakeCache.txt文件删除,然后再重新CMAKE,否则错误依旧
四、编译及安装
make -j 3 && make install
时间较长,请耐心等待
五、修改mysql 配置文件
useradd -M -s /sbin/nologin mysql #创建mysql用户
vim /etc/my.cnf #删除原配置项,再重新添加下面内容[client] #客户端设置port = 3306socket = /usr/local/mysql/mysql.sock #开启自动补全功能[mysqld] #服务全局设置user = mysql #设置管理用户basedir=/usr/local/mysql #指定数据库的安装目录datadir=/usr/local/mysql/data #指定数据库文件的存储路径port = 3306 #指定端口character-set-server=utf8 #设置服务器字符集编码格式为utf8pid-file = /usr/local/mysql/mysqld.pid #指定pid 进程文件路径socket=/usr/local/mysql/mysql.sock #指定数据库连接文件bind-address = 0.0.0.0 #设置监听地址,0.0.0.0代表允许所有,如允许多个IP需空格隔开skip-name-resolve #禁止域名解析,包括主机名,所以授权的时候要使用 IP 地址max_connections=4096 #设置mysql的最大连接数default-storage-engine=INNODB #指定默认存储引擎max_allowed_packet=32M #设置在网络传输中一次消息传输量的最大值。系统默认值为 1MB,最大值是 1GB,必须设置 1024 的倍数。server-id = 1 #指定服务ID号sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_AUTO_VALUE_ON_ZERO,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,PIPES_AS_CONCAT,ANSI_QUOTES
六、优化mysql
更改mysql安装目录和配置文件的属主属组
chown -R mysql:mysql /usr/local/mysql/chown mysql:mysql /etc/my.cnf
设置路径环境变量
echo 'export PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH' >> /etc/profile
source /etc/profile
七、初始化数据库
cd /usr/local/mysql/bin/./mysqld \
--initialize-insecure \ #生成初始化密码为空
--user=mysql \ #指定管理用户
--basedir=/usr/local/mysql \ #指定数据库的安装目录
--datadir=/usr/local/mysql/data #指定数据库文件的存储路径
八、启动mysql
添加mysqld系统服务
cp /usr/local/mysql/usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system/ #用于systemctl服务管理
systemctl daemon-reload #刷新识别
systemctl start mysqld.service #开启服务
systemctl enable mysqld #开机自启动
netstat -anpt | grep 3306 #查看端口
修改mysql 的登录密码
mysqladmin -u root password "abc123" #给root账号设置密码为abc123,原始密码为空
授权远程登录
mysql -u root -p
grant all privileges on *.* to 'root'@'%' identified by 'abc123';
#授予root用户可以在所有终端远程登录,使用的密码是abc123,并对所有数据库和所有表有操作权限show databases; #查看当前已有的数据库
源码安装php
一、准备工作
cd /opt/
mkdir php
cd php
tar xf php-7.1.10.tar.bz2
二、安装环境依赖包
yum -y install \
gd \
libjpeg libjpeg-devel \
libpng libpng-devel \
freetype freetype-devel \
libxml2 libxml2-devel \
zlib zlib-devel \
curl curl-devel \
openssl openssl-devel
三、配置软件模块
cd php-7.1.10/./configure \
--prefix=/usr/local/php \ #指定将 PHP 程序的安装路径
--with-apxs2=/usr/local/httpd/bin/apxs \ #指定Apache httpd服务提供的apxs 模块支持程序的文件位置
--with-mysql-sock=/usr/local/mysql/mysql.sock \ #指定mysql 数据库连接文件的存储路径
--with-config-file-path=/usr/local/php/lib #设置 PHP 的配置文件 php.ini 将要存放的位置
--with-mysqli \ #添加 MySQL 扩展支持,mysqli扩展技术不仅可以调用MySQL的存储过程、处理MySQL事务,而且还可以使访问数据库工作变得更加稳定
--with-zlib \ #支持zlib功能,提供数据压缩
--with-curl \ #开启curl扩展功能,实现HTTP的Get下载和Post请求的方法
--with-gd \ #激活gd 库的支持
--with-jpeg-dir \ #激活jpeg 的支持
--with-png-dir \ #激活png 的支持
--with-freetype-dir \
--with-openssl \
--enable-mbstring \ #启用多字节字符串功能,以便支持中文等代码
--enable-xml \ #开启扩展性标记语言模块
--enable-session \ #会话
--enable-ftp \ #文本传输协议
--enable-pdo \ #函数库
--enable-tokenizer \ #令牌解释器
--enable-zip #ZIP压缩格式
四、编译与安装
make -j 3&& make install
五、优化PHP
优化把PHP 的可执行程序文件放入路径环境变量的目录中便于系统识别
ln -s /usr/local/php/bin/* /usr/local/bin/
php -m #查看PHP 加载了哪些模块
复制模版文件作为PHP 的主配置文件,并进行修改
php --ini
cp php.ini-development /usr/local/php/lib/php.ini
#在测试环境时使用php.ini-development文件,而在生产环境时使用php.ini-production文件
vim /usr/local/php/lib/php.ini#--1170行--修改mysqli.default_socket = /usr/local/mysql/mysql.sock#--939行--取消注释,修改date.timezone = Asia/Shanghai
六、修改httpd 服务的配置文件
vim /etc/httpd.conf
#--395行--插入以下内容
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
#--259行--修改首页文件名设置
DirectoryIndex index.html index.php#---检查支持php7的模块是否存在------
#使用反斜杠搜索
LoadModule php7_module modules/libphp7.so
七、验证PHP测试页
rm -rf /usr/local/httpd/htdocs/index.html
vim /usr/local/httpd/htdocs/index.php
<?php
phpinfo();
?>systemctl restart httpd.service