LAMP

一、介绍

L

Linux

A

Apache (httpd),Port:80

提供web服务,接受用户的连接请求

只能够解析静态页面,如果是动态页面,Apache会调用libphp5.so模块来解析,然后Apache返回解析结果

官网:www.apache.org

中文手册:http://www.jinbuguo.com/apache/manual/index.html

M

MySQL ,Port:3306

存储数据

P

PHP/Perl/Python

负责脚本程序的解析及实现MySQL数据库的交互工作

二、环境准备

安装相关工具包及依赖

#开发工具包
[root@lamp ~]# yum groupinstall "Development tools" -y
#其他依赖包
[root@lamp ~]# yum install cmake pcre-devel ncurses-devel openssl-devel libcurl-devel

绑定主机名到hosts

echo 主机IP 主机名 >> /etc/hosts

三、安装顺序

  1. apache必须要先于php安装
  2. apachemysql之间并没有直接先后顺序

注意:

1.在php-5.3版本前,mysql必须先于php的编译;因为php需要实现连接数据库的功能,
它通过mysql的接口才能编译出该功能;
2在php-5.3版本或者之后,php已经集成了一套连接mysql数据的代码,
并不依赖mysql的接口,这个时候,mysql和php的编译顺序也就无所谓了

四、MySql

要求:

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

1.安装

①创建系统用户mysql

useradd -r -s /sbin/nologin mysql

②解压源码包并进入

tar -xvf mysql-5.6.31.tar.gz

③根据需求配置

 #1.创建 cmake.sh 文件
 touch cmake.sh
 #2.为cmake.sh 添加可执行权限
 chmod +x cmake.sh
 #3.编辑cmake.sh 文件内容
 #4.执行配置文件
 ./cmake.sh

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

参数

参数作用
DCMAKE_INSTALL_PREFIX安装路径
DMYSQL_DATADIR数据目录
DENABLED_LOCAL_INFILE开启加载外部文件功能;1开启,0关闭
DWITH_INNOBASE_STORAGE_ENGINE将InnoDB存储引擎静态编译到服务器
DMYSQL_TCP_PORT端口
DDEFAULT_CHARSET字符集
DDEFAULT_COLLATION字符校验规则
DWITH_EXTRA_CHARSETS扩展字符集
DMYSQL_USER用户身份

④编译安装

 #1.编译
 make
 #2.安装
 make install
 #2.安装,同时将屏幕显示信息输出到当前目录下的makeinstall.log文件中
 # make install 2>&1 | tee makeinstall.log

2.配置

需要进入到安装目录中进行相关配置

①修改安装目录权限

#1.设置
chown -R mysql.mysql /usr/local/mysql/
#2.查看
ll -d  /usr/local/mysql/

②初始化数据库

# 1.清空环境,如果存在该文件  ***
rm -f /etc/my.cnf
# 2.确保当前没有其他mysql程序运行,如果有则kill掉。
ps -ef|grep mysqld 
pkill -9 mysqld
# 3.进入到安装目录
cd /usr/local/mysql
# 4.初始化
./scripts/mysql_install_db --user=mysql
# 5.检验是否成功
ll data/

③拷贝服务启动脚本

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

④启动数据库

 service mysqld start

⑤设置数据库管理员密码

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

⑥测试登录

/usr/local/mysql/bin/mysql -p123

⑦添加环境变量

在文件/etc/profile 添加Mysql环境变量,如下

export PATH=$PATH:/usr/local/mysql/bin/

立即生效

source /etc/profile

测试

mysql -p123

3.问题及解决

1.启动失败

错误信息

[root@lamp mysql]# mysql -p123
Warning: Using a password on the command line interface can be insecure.
ERROR 2002 (HY000): Can't connect to local MySQL server through socket
'/var/lib/mysql/mysql.sock' (111)

解决1:

rm -f /etc/my.cnf

解决2:

yum remove mariadb-libs -y

五、Apache

版本安装路径
httpd-2.4.37/usr/local/

1.安装

①解决依赖

需要安装依赖 apr-1.5.2 apr-util-1.5.4

  • apr
# (1)apr
#1.解压源码包
tar xf apr-1.5.2.tar.bz2
#2.进入该目录
cd apr-1.5.2
#3.配置
./configure
#4.编译
make
#5.安装
make install
  • apr-util
# (2)apr-util
#1.解压源码包
tar xf apr-util-1.5.4.tar.bz2
#2.进入该目录
cd apr-util-1.5.4/
#3.配置,指定依赖软件apr的路径
./configure --with-apr=/usr/local/apr/bin/apr-1-config 
#4.编译
make
#5.安装
make install

②解压源码包并进入

tar xf httpd-2.4.37.tar.bz2
cd httpd-2.4.37

③根据需求配置

 #1.创建 apache.sh 文件
 touch apache.sh
 #2.apache.sh 添加可执行权限
 chmod +x apache.sh
 #3.编辑apache.sh 文件内容
 #4.执行配置文件
 ./apache.sh

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

参数

参数作用
enable-modules=all加载所有支持模块
enable-mods-shared=all共享方式加载大部分常用的模块
enable-so启动动态模块加载功能
enable-rewrite启用url地址重写功能
with-pcre支持正则
enable-ssl编译ssl模块,支持https
with-apr指定依赖软件apr路径
with-apr-util指定依赖软件apr-util路径
with-mpm(1)prefork(默认)<br/>多进程模型,每个进程响应一个请求<br/>(2)worker<br/>多进程多线程模型,每个线程处理一个用户请求<br/>(3)event(最优)<br/>事件驱动模型,多进程模型,每个进程响应多个请求

⑥编译安装

 #1.编译
 make
 #2.安装
 make install

⑤验证

[root@C69 httpd-2.4.37]# ls /usr/local/apache2/
bin  build  cgi-bin  conf  error  htdocs  icons  include  logs  man  manual  modules

启动

/usr/local/apache2/bin/apachectl start

客户端访问主机地址 http://10.1.1.69

若显示It works!,则表示成功

2.配置

配置文件位置:vim /usr/local/apache2/conf/httpd.conf

虚拟主机配置文件位置:vim /usr/local/apache2/conf/extra/httpd-vhosts.conf

默认网站目录:/usr/local/apache2/htdocs/

①开启虚拟机支持

# Virtual hosts
Include conf/extra/httpd-vhosts.conf

②虚拟主机配置

注意:项目目录属主属组应为daemon

<VirtualHost *:80>
  ServerName wwww.test.com
  DocumentRoot "/www/test"
  ErrorLog "logs/test-error_log"
  CustomLog "logs/test-access_log" common
  <Directory "/www/test">
    Options Indexes
    Require all granted
  </Directory>
</VirtualHost>

③优先支持中文

 # Language settings
Include conf/extra/httpd-languages.conf
# 内容判断提供支持模块
LoadModule negotiation_module modules/mod_negotiation.so 

修改子配置文件: /var/local/apache2/conf/extra/httpd-languages.conf

DefaultLanguage zh-CN
# 将zh-CN 放到最前,提高优先级
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

④添加PHP模块支持

#LoadModule rewrite_module modules/mod_rewrite.so
LoadModule php7_module        modules/libphp7.so

AddHandler php7-script .php
AddType text/html .php

⑤支持PHP首页文件

<IfModule dir_module>
    DirectoryIndex index.php  index.html
</IfModule>

3.问题及解决

①缺少pcre

错误信息

[root@C69 httpd-2.4.37]# ./apache.sh
checking how to run the C preprocessor... gcc -E
checking for gcc option to accept ISO C99... -std=gnu99
checking for pcre-config... false
configure: error: pcre-config for libpcre not found. PCRE is required and available from
http://pcre.org/

解决:

yum -y install pcre-devel

②缺少 openssl

错误信息:

[root@C69 httpd-2.4.37]# ./apache.sh
...
checking for OpenSSL... checking for user-provided OpenSSL base directory... none
checking for OpenSSL version >= 0.9.8a... FAILED
configure: WARNING: OpenSSL version is too old
no
checking whether to enable mod_ssl... configure: error: mod_ssl has been requested but can not
be built due to prerequisite failures

解决:

yum -y install openssl-devel

③不能确认服务器完全域名

错误信息:

[root@C69 httpd-2.4.37]# /usr/local/apache2/bin/apachectl start
AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using 10.1.1.69. Set the 'ServerName' directive globally to suppress this message

解决:

方法一:在配置文件 /usr/local/apache2/conf/httpd.conf 中添加 servername localhost:80

方法二:修改/etc/hosts,添加IP和主机名绑定

4.使用

①制作脚本启动

cp /usr/local/apache2/bin/apachectl /etc/init.d/apache

六、PHP

1.安装

①解压源码并进入目录

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

②根据需求配置

 #1.创建 php.sh 文件
 touch php.sh
 #2.apache.sh 添加可执行权限
 chmod +x php.sh
 #3.编辑apache.sh 文件内容
 #4.执行配置文件
 ./php.sh

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

参数说明:

待补充、待补充、待补充

③编译安装

 #1.编译,时间挺长
 make
 #2.安装
 make install

④验证

[root@C69 php-7.2.17]# ls /usr/local/apache2/modules/libphp7.so
/usr/local/apache2/modules/libphp7.so

2.问题

①缺少 libcurl-devel

checking for cURL support... yes
checking for cURL in default path... not found
configure: error: Please reinstall the libcurl distribution -
easy.h should be in <curl-dir>/include/curl/

解决:

yum -y install libcurl-devel

3.yum安装PHP

# yum install php php-devel php-mysql php-common
Last modification:February 14th, 2019 at 10:54 pm