一、简介
源代码编译安装LAMP:
- 源代码:指的是软件的原始代码,是软件编写和编译的基础。
- 编译:将源代码转换成机器可执行的二进制代码的过程。
- 安装:将编译后的软件部署到服务器上并配置好,使其能够运行。
源代码编译安装LAMP的特点:
- 定制性:可以从源代码开始,根据服务器的具体需求进行编译和配置。
- 性能优化:通过编译时的选项,可以优化软件的性能,以适应特定的硬件环境。
- 安全性:可以确保安装的软件是最新的,并且可以关闭不需要的功能,减少安全风险。
- 兼容性:可以确保软件与操作系统和硬件的兼容性。
Linux编译安装主要体现在提高软件性能、自由度高、更新方便、系统兼容性好以及学习成本低等方面。
二、实验
使用编译安装安装一个lamp架构
下载需要的编译环境
[root@node1 ~]# yum -y install bzip2 vim make wget openssl-devel pcre-devel expat-devel libtool gcc gcc-c++ libxml2-devel
将apr软件包解压后更改配置文件
[root@node1 apr-1.7.0]# cd ..
[root@node1 software]# ls
apr-1.7.0 apr-1.7.0.tar.gz apr-util-1.6.1.tar.gz httpd-2.4.54.tar.gz
# 进入 apr-1.7.0中configure 配置文件 删掉$RM "$cfgfile"
安装apr,将他放到/usr/local/apr
[root@node1 apr-1.7.0]# ./configure --prefix=/usr/local/apr
安装完成对他进行编译,编译安装
[root@node1 apr-1.7.0]# make
[root@node1 apr-1.7.0]# make install
第二个安装apr-util-1.6.1.tar.gz,与上同理
[root@node1 apr-util-1.6.1]# ./configure --prefix=/usr/local/apr-util \
> --with-apr=/usr/local/apr # 将他与apr关联
使用make进行编译,再使用make install进行编译安装
apache,与上同理,设置参数
[root@node1 software]# cd httpd-2.4.54/
[root@node1 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
使用make进行编译,再使用make install进行编译安装
启动apache,此时没有配置环境变量
[root@node1 apache]# /usr/local/apache/bin/apachectl start
[root@node1 apache]#
访问apache
mysql编译安装
[root@node1 ~]# useradd -r -M -s /sbin/nologin mysql # 创建一个mysql用户 不让他登录
安装mysql需要的依赖包
[root@node1 software]# yum -y install libncurses*
将mysql安装到指定目录下
[root@node1 software]# tar -xzvf mysql-5.7.37-linux-glibc2.12-x86_64.tar.gz -C /usr/local
配置mysql
[root@node1 local]# ln -sn mysql-5.7.37-linux-glibc2.12-x86_64/ mysql # 给mysql创建一个软链接
[root@node1 local]# ls
apache bin include libexec sbin
apr etc lib mysql share
apr-util games lib64 mysql-5.7.37-linux-glibc2.12-x86_64 src
[root@node1 local]# chown -R mysql.mysql /usr/local/mysql # 更改所属主属组
[root@node1 local]# mkdir -p /opt/data # 创建mysql存放数据的目录
[root@node1 local]# chown -R mysql.mysql /opt/data/ # 更改所属主属组
[root@node1 local]#
对mysql进行初始化,在此之前需要下载libaio
[root@node1 local]# /usr/local/mysql/bin/mysqld --initialize-insecure --user=mysql --datadir=/opt/data/
配置数据库
[root@node1 local]# vim /etc/my.cnf
[root@node1 local]# cat /etc/my.cnf
[mysqld]
basedir = /usr/local/mysql
datadir = /opt/data
socket = /tmp/mysql.sock
port = 3306
pid-file = /opt/data/mysql.pid
user = mysql
skip-name-resolve
[root@node1 local]#
配置服务启动的文件
[root@node1 support-files]# pwd
/usr/local/mysql/support-files
[root@node1 support-files]# vim mysql.server
# 更改其中的两个地方
basedir= /usr/local/mysql # 工作目录
datadir=/opt/data # 数据存放目录
二进制安装没有配置systemctl restart 启动,手动编辑一个
[root@node1 support-files]# cat /usr/lib/systemd/system/mysqld.service
[Unit]
Description=mysql server daemon
After=network.targe
[Service]
Type=forking
ExecStart=/usr/local/mysql/support-files/mysql.server start
ExecStop=/usr/local/mysql/support-files/mysql.server stop
ExecReload=/bin/kill -HUP \$MAINPID
[Install]
WantedBy=multi-user.target
[root@node1 support-files]#
此时就可以使用
[root@node1 support-files]# systemctl restart mysqld
[root@node1 support-files]# systemctl enable mysqld
给mysql设置一个环境变量
[root@node1 ~]# vim /etc/profile
export PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH # 把它添加到最后一行
设置mysql的密码
[root@node1 support-files]# mysql -u root -e "set password=password('linux')"
安装php所需要的依赖包
[root@node1 ~]# yum -y install wget gcc gcc-c++ autoconf automake libtool make libxml2 libxml2-devel openssl openssl-devel sqlite-devel libpng libpng-devel libpsl libpsl-devel libicu-devel libcurl-devel
编译安装前会报错,就先把这些依赖包装好
[root@node1 ~]# yum install openldap openldap-devel -y
[root@node1 ~]# cp -frp /usr/lib64/libldap* /usr/lib/
[root@node1 ~]# yum install oniguruma oniguruma-devel -y
[root@node1 ~]# yum --enablerepo=devel -y install oniguruma-devel
配置编译安装php
[root@node1 php-8.2.5]# pwd
/opt/software/php-8.2.5
[root@node1 php-8.2.5]# ./configure --prefix=/usr/local/php \
--with-apxs2=/usr/local/apache/bin/apxs \
--with-mysql-sock=/tmp/mysql.sock \
--enable-fpm \
--enable-mysqlnd \
--enable-mysqlnd-compression-support \
--with-zlib \
--enable-xml \
--disable-rpath \
--enable-bcmath \
--enable-shmop \
--enable-sysvsem \
--enable-mbregex \
--enable-mbstring \
--enable-intl \
--enable-ftp \
--enable-gd-jis-conv \
--with-openssl \
--with-mhash \
--enable-pcntl \
--enable-sockets \
--enable-soap \
--with-gettext \
--enable-fileinfo \
--enable-opcache \
--with-pear \
--with-ldap=shared \
--without-gdbm \
--with-curl \
--enable-ctype \
--without-pear --disable-phar
使用make进行编译,再使用make install进行编译安装
配置php
# 测试环境时使用php.ini-development文件,生产环境使用php.ini-production文件
[root@node1 ~]# cp php.ini-development /usr/local/php/lib/php.ini
将/usr/local/php/lib/php.ini 中的时区修改成Asia/Shanghai
修改httpd服务配置文件,让apache支持php
AddType application/x-httpd-php-source .phps
AddType application/x-httpd-php .php
# 将以上两行添加到/etc/httpd24/httpd.conf
# 默认网页加上index.php
写一个新的网页
[root@node1 htdocs]# pwd
/usr/local/apache/htdocs
[root@node1 htdocs]# cat index.php
<?php
phpinfo();
?>
[root@node1 htdocs]#