编译搭建LAMP架构

101 阅读4分钟

环境准备

关闭防火墙,将安装Apache所需软件包传入/data目录下

[root@localhost opt]# systemctl stop firewalld.service 
[root@localhost opt]# setenforce 0

安装环境依赖包

[root@localhost opt]# yum install  -y\
gcc \                #c语言编译器
gcc-c++ \            #c编译器
make \               #源代码编译器
pcre\                #pcre函数库
pcre-devel \         #pcre接口开发包
expat-devel \        #用于支持网站解析HTML、XML文件
perl                 #perl 语言编译器
 
[root@localhost opt]# yum -y install gcc gcc-c++ make pcre-devel expat-devel perl pcre   zlib-devel   zlib

2.1.3.解压软件包

[root@localhost opt]# cd /data/
[root@localhost lamp]# tar xf apr-1.6.2.tar.gz
[root@localhost lamp]# tar xf apr-util-1.6.0.tar.gz
[root@localhost lamp]# tar jvxf httpd-2.4.29.tar.bz2
[root@localhost lamp]# ls
apr-1.6.2         apr-util-1.6.0.tar.gz    httpd-2.4.29.tar.bz2
apr-1.6.2.tar.gz  Discuz_X2.5_SC_UTF8.zip  mysql-5.6.26.tar.gz
apr-util-1.6.0    httpd-2.4.29             php-5.6.11.tar.bz2

2.1.4移动apr包 apr-util包到安装目录中,并切换到 httpd-2.4.29目录中

[root@localhost lamp]# mv apr-1.6.2 httpd-2.4.29/srclib/apr
[root@localhost lamp]# mv apr-util-1.6.0 httpd-2.4.29/srclib/apr-util
[root@localhost lamp]# ls
apr-1.6.2.tar.gz         httpd-2.4.29          php-5.6.11.tar.bz2
apr-util-1.6.0.tar.gz    httpd-2.4.29.tar.bz2
Discuz_X2.5_SC_UTF8.zip  mysql-5.6.26.tar.gz
[root@localhost lamp]# cd httpd-2.4.29
[root@localhost】# ls

编译安装

[root@localhost lamp]#./configure \                        
--prefix=/usr/local/httpd \       #指定httpd的安装目录
--enable-so \                     #启用动态加载模块支持,使httpd具备进一步扩展功能的能力
--enable-rewrite \                #启用网页地址的重写功能,用于网站优化、防盗链及目录迁移维护   
--enable-charset-lite \           #启用字符集支持,以便支持使用各种字符集编码的页面
--enable-cgi                      #启用CGI(通用网关接口)脚本程序支持,便于网站外部扩展应用访问的能力

[root@localhost httpd-2.4.29]# ./configure --prefix=/usr/local/httpd --enable-so --enable-rewrite --enable-charset-lite --enable-cgi
[root@localhost httpd-2.4.29]# make  -j2 && make install

方便操作建立软连接

ln -s /usr/local/httpd/conf/httpd.conf /etc/
#建立配置文件软连接放入etc目录下
[root@localhost httpd-2.4.29]# ln -s /usr/local/httpd/bin/* /usr/local/bin/
#将启动文件放入/usr/local/bin/目录下可以直接使用

添加httpd系统服务

[root@localhost mysql-5.6.26]#vim /lib/systemd/system/httpd.service 
#创建 httpd.service

[Unit]
Description=The Apache HTTP Server    
After=network.target   //表示这个服务应该在 `network.target` 之后启动
[Service]
Type=forking  //表示服务在启动时会创建一个新的进程
PIDFile=/usr/local/httpd/logs/httpd.pid   //指定了服务进程ID(PID)的文件路径。systemd 会读取这个文件来获取 Apache 进程的 PID,并在需要时(如停止服务)使用它

ExecStart=/usr/local/bin/apachectl $OPTIONS  //  定义了启动服务时要执行的命令。
ExecReload=/bin/kill -HUP ${MAINPID}  // 定义了重新加载服务时要执行的命令。
ExecStop=/bin/kill -WINCH ${MAINPID}  // 定义了停止服务时要执行的命令

[Install]
WantedBy=multi-user.target   /在 `multi-user.target` 被启动时自动启动。


[root@localhost system]# systemctl start httpd.service 
Warning: httpd.service changed on disk. Run 'systemctl daemon-reload' to reload units.
Job for httpd.service failed because the control process exited with error code. See "systemctl status httpd.service" and "journalctl -xe" for details.
[root@localhost system]# systemctl daemon-reload  //重新读取文件
[root@localhost system]# systemctl start httpd.service 
[root@localhost system]# netstat -ntap |grep 80  //看80端口是否正常
    tcp6       0      0 :::80                   :::*                    LISTEN      121165/httpd      

编译安装 mysql

安装依赖包添加mysql用户

[root@localhost ~]# yum install -y ncurses-devel autoconf cmake

yum -y install \  
ncurses \              #字符终端下图形互动功能的动态库
ncurses-devel \        #ncurses开发包
bison \                #语法分析器
cmake                  #mysql需要用到的cmake编译安装包

新建用户 useradd -s /sbin/nologin mysql

解压软件包并切换到编译目录,并编译安装

###上传mysql-boost-5.7.20.tar.gz到opt目录下###
cd /opt
tar xf mysql-boost-5.7.20.tar.gz
cd /opt/mysql-5.7.20/

cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \
-DSYSCONFDIR=/etc \
-DSYSTEMD_PID_DIR=/usr/local/mysql \
-DDEFAULT_CHARSET=utf8  \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \
-DMYSQL_DATADIR=/usr/local/mysql/data \
-DWITH_BOOST=boost \
-DWITH_SYSTEMD=1


make -j4 && make install

数据库目录进行权限调整

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

建立调整配置文件

vim /etc/my.cnf

[client]
port = 3306
default-character-set=utf8
socket = /usr/local/mysql/mysql.sock

[mysql]
port = 3306
default-character-set=utf8
socket = /usr/local/mysql/mysql.sock

[mysqld]
user = mysql
basedir = /usr/local/mysql
datadir = /usr/local/mysql/data
port = 3306
character_set_server=utf8
pid-file = /usr/local/mysql/mysqld.pid
socket = /usr/local/mysql/mysql.sock
server-id = 1

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
![image.png](https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/b9591491907f44179fd1d53a070f91c0~tplv-k3u1fbpfcp-jj-mark:0:0:0:0:q75.image#?w=1308&h=694&s=115808&e=png&b=000000)

修改配置文件权限

chown mysql:mysql /etc/my.cnf

设置环境变量

echo 'PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH' >> /etc/profile
echo 'export PATH' >> /etc/profile
source /etc/profile

2.2.8初始化 数据库

要切到目录下

cd /usr/local/mysql/  必须相对路径
​
bin/mysqld \
--initialize-insecure \
--user=mysql \
--basedir=/usr/local/mysql \
--datadir=/usr/local/mysql/data

2.2.9 准备systemctl 配置文件

cp usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system/
systemctl daemon-reload
systemctl enable mysqld
systemctl start mysqld
systemctl status mysqld
netstat -anpt | grep 3306

2.2.10 修改数据库密码

mysqladmin -u root -p password "abc123" //刚开始没密码是空的直接回车,

2.2.11 登录数据库

mysql -u root -p     ##这个命令敲下,提示要输入密码,这个就是刚才设置的密码abc123

编译安装 php

安装依赖包

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

安装GD库和GD库关联程序,用来处理和生成图片

前期准备 解压

配置软件模块
cd /data
tar jxvf php-7.1.10.tar.bz2
cd /opt/php-7.1.10/

编译安装

./configure \
--prefix=/usr/local/php7 \							指定将 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/php7				设置 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 -j2 && make install

修改配置文件

cp /data/php-7.1.10/php.ini-development /usr/local/php7/php.ini	
#复制模版文件作为PHP 的主配置文件,并进行修改


vim /usr/local/php7/php.ini
mysqli.default_socket = /usr/local/mysql/mysql.sock   --1170行--修改 1170 G,大写的G,直接跳转
告诉php去哪里找mysql
date.timezone = Asia/Shanghai                         --939行---修改

优化操作

PHP 的可执行程序文件放入路径环境变量的目录中便于系统识别
ln -s /usr/local/php7/bin/* /usr/local/bin/
php -m 			  查看PHP 加载了哪些模块

修改httpd 服务的配置文件,让apache支持PHP

vim /etc/httpd.conf 

AddType application/x-httpd-php .php       --393行--插入以下内容(插在下面,原行不删)
AddType application/x-httpd-php-source .phps   ##这里的点前面空格一定要加,否则报错

AddType application/x-httpd-php .php       
AddType application/x-httpd-php-source .phps

DirectoryIndex index.html index.php    --255行--修改首页文件名设置
LoadModule php7_module        modules/libphp7.so       ---156行 ---检查支持php7的模块是否存在(可以用'/'在文件中查找 )

systemctl  restart  httpd

验证PHP 测试页

rm -rf /usr/local/httpd/htdocs/index.html
vim /usr/local/httpd/htdocs/index.php

<?php
phpinfo();
?>

systemctl restart httpd.service

验证是否连接成功

image.png