Linux :通过源代码编译安装lamp
区别
特性 | 源代码编译安装 | yum 安装 |
---|---|---|
安装方式 | 从源代码编译构建 | 预编译的二进制包 |
自定义程度 | 高度可定制 | 有限定制 |
性能优化 | 可针对特定硬件优化 | 通用优化 |
依赖管理 | 手动解决依赖关系 | 自动解决依赖 |
安装复杂度 | 复杂,需技术经验 | 简单,一键安装 |
维护更新 | 手动更新 | 自动更新 |
安全性 | 需自行关注安全补丁 | 官方提供安全更新 |
版本控制 | 可选择任意版本 | 受仓库版本限制 |
适用场景 | 高性能需求/特殊定制/学习环境 | 快速部署/生产环境/新手友好 |
lamp分别指linux,apache,MySQL(mariadb),php
php环境一般最后安装,用于沟通web服务器和数据库进行协同工作
源代码安装有四个步骤,分别为解包,配置,编译,编译安装
安装之前关闭防火墙和selinux,使用yum网络源进行配置(wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo)
yum -y install epel-release
安装需要的工具包
yum -y install bzip2 vim make wget openssl-devel pcre-devel expat-devel libtool gcc gcc-c++ libxml2-devel
首先去官网找到需要的软件包(一般为tar包,可以用tar命令解压)
本次使用apr-1.7.0.tar.gz,
apr-util-1.6.1.tar.gz,
httpd-2.4.54.tar.gz,
mysql-5.7.37-linux-glibc2.12-x86_64.tar.gz,
php-7.1.10.tar.bz2
使用xshell(或者其他软件)将软件包传输到linux系统中
首先解压并安装apr,apr-util包
apr
[root@xieyuhui2 ~]# tar -xzvf apr-1.7.0.tar.gz
[root@xieyuhui2 ~]# cd apr-1.7.0/
[root@xieyuhui2 apr-1.7.0]# sed -i '/$RM "$cfgfile"/d' configure #删除configure里面的$RM "$cfgfile,使用`-i`选项时,`sed`会直接更改源文件
配置
[root@xieyuhui2 apr-1.7.0]# ./configure --prefix=/usr/local/apr #prefix为路径
[root@xieyuhui2 apr-1.7.0]# make #编译
[root@xieyuhui2 apr-1.7.0]# make install #编译安装
apr-util
[root@xieyuhui2 ~]# tar -xzvf apr-util-1.6.1.tar.gz
[root@xieyuhui2 ~]# cd apr-util-1.6.1/
[root@xieyuhui2 apr-util-1.6.1]# ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr #with表示包含apr依赖组件
[root@xieyuhui2 apr-util-1.6.1]# make
[root@xieyuhui2 apr-util-1.6.1]# make install
httpd的依赖组件安装完成后开始安装httpd
[root@xieyuhui2 ~]# tar -xzvf httpd-2.4.54.tar.gz
[root@xieyuhui2 ~]# cd httpd-2.4.54/
[root@xieyuhui2 httpd-2.4.54]# ./configure --prefix=/usr/local/apache \
> --sysconfdir=/etc/httpd24 \
> --enable-so \
> --enable-ssl \
> --enable-cgi \
> --enable-rewrite \
> --with-zlib \
> --with-pcre \
> --with-apr=/usr/local/apr \
> --with-apr-util=/usr/local/apr-util/ \
> --enable-modules=most \
> --enable-mpms-shared=all \
> --with-mpm=prefork
[root@xieyuhui2 httpd-2.4.54]# make
[root@xieyuhui2 httpd-2.4.54]# make install
启动apache服务
[root@xieyuhui2 ~]# /usr/local/apache/bin/apachectl start
安装依赖包
yum -y install libncurses* #centos7系统自带,因此不用安装
创建mysql用户
[root@xieyuhui2 ~]# useradd -r -M -s /sbin/nologin mysql #-r 表示创建一个系统用户,uid小于1000,-M表示不创建家目录
安装mysql
[root@xieyuhui2 ~]# tar -xzvf mysql-5.7.37-linux-glibc2.12-x86_64.tar.gz -C /usr/local #-C表示指定目录
[root@xieyuhui2 local]# ln -sv /usr/local/mysql-5.7.37-linux-glibc2.12-x86_64 /usr/local/mysql #给mysql-5.7.37-linux-glibc2.12-x86_64创建软链接
[root@xieyuhui2 local]# chown -R mysql.mysql /usr/local/mysql #将mysql的所有者和所属组改为mysql,-R表示递归
[root@xieyuhui2 local]# mkdir -p /opt/data
[root@xieyuhui2 local]# chown -R mysql.mysql /opt/data/
# yum -y install libaio centos7自带因此不安装,如果没有则安装
数据库初始化
[root@xieyuhui2 ~]# /usr/local/mysql/bin/mysqld --initialize-insecure --user=mysql --datadir=/opt/data/
[root@xieyuhui2 ~]# ln -sv /usr/local/mysql/include/ /usr/local/include/mysql
[root@xieyuhui2 ~]# echo '/usr/local/mysql/lib' > /etc/ld.so.conf.d/mysql.conf
[root@xieyuhui2 ~]# ldconfig #查看是否报错
编辑mysql文件
[root@xieyuhui2 ~]# vim /etc/my.cnf #里面的的东西都可以删掉然后自己重写
[mysql]
basedir = /usr/local/mysql
datadir = /opt/data
socket = /tmp/mysql.sockport = 3306
pid-file = /opt/data/mysql.pid
user = mysqlskip-name-resolve
[root@xieyuhui2 ~]# vim /usr/local/mysql/support-files/mysql.server

定义mysql服务使用systemd管理
[root@xieyuhui2 ~]# cd /usr/lib/systemd/system
[root@xieyuhui2 system]# vim mysqld.service

重启mysql服务
[root@xieyuhui2 system]# systemctl daemon-reload
[root@xieyuhui2 system]# systemctl enable --now mysqld
添加mysql命令的变量到环境变量
[root@xieyuhui2 ~]# vim /etc/profile

[root@xieyuhui2 ~]# source /etc/profile
设置数据库密码
[root@xieyuhui2 ~]# mysql -uroot -p #首次进入没有密码,直接回车即可
[root@xieyuhui2 ~]# /usr/local/mysql/bin/mysql -uroot -e "set password=password('redhat')"
部署lamp-php
安装依赖包,安装GD库和GD库关联程序,用来处理和生成图片
[root@xieyuhui2 ~]# yum -y install \
> libjpeg \
> libjpeg-devel \
> libpng libpng-devel \
> freetype freetype-devel \
> libxml2 \
> libxml2-devel \
> zlib zlib-devel \
> curl curl-devel
[root@xieyuhui2 ~]# tar -xjvf php-7.1.10.tar.bz2
[root@xieyuhui2 php-7.1.10]# ./configure \
> --prefix=/usr/local/php \
> --with-apxs2=/usr/local/apache/bin/apxs \
> --with-mysql-sock=/tmp/mysql.sock \
> --with-mysqli \
> --with-zlib \
> --with-curl \
> --with-gd \
> --with-jpeg-dir \
> --with-png-dir \
> --with-freetype-dir \
> --with-openssl \
> --enable-mbstring \
> --enable-xml \
> --enable-session \
> --enable-ftp \
> --enable-pdo \
> --enable-tokenizer \
> --enable-zip
[root@xieyuhui2 php-7.1.10]# make
[root@xieyuhui2 php-7.1.10]# make install
测试环境时使用php.ini-development文件,生产环境使用php.ini-production文件
[root@xieyuhui2 ~]# cp php.ini-development /usr/local/php/lib/php.ini
修改php配置文件
1.设置时区
[root@xieyuhui2 ~]# vim /usr/local/php/lib/php.ini

2.使apache支持php
[root@xieyuhui2 ~]# vim /etc/httpd24/httpd.conf


[root@xieyuhui2 ~]# cd /usr/local/apache/htdocs
[root@xieyuhui2 htdocs]# rm -f /usr/local/apache/htdocs/index.html #删除原有的html文件
[root@xieyuhui2 htdocs]# vim index.php #验证php详细信息测试网页

重启apache服务(先停止再启动)
[root@xieyuhui2 ~]# /usr/local/apache/bin/apachectl stop
[root@xieyuhui2 ~]# /usr/local/apache/bin/apachectl start
