LAMP是协同工作的一整套系统和相关软件,能够提供动态Web站点服务以及应用开发环境,是目前最为成熟也是比较传统的一种企业网站应用模式。
LAMP 环境搭建指的是在 Linux 操作系统中分别安装 Apache 网页服务器、MySQL 数据库服务器和 PHP 开发服务器,以及一些对应的扩展软件。LAMP 环境是当前极为流行的搭建动态网站的开源软件系统,拥有良好的稳定性及兼容性。而且随着开源软件的蓬勃发展,越来越多的企业和个人选择在 LAMP 开发平台上搭建自己的网站。除了采用 LAMP 搭建环境还有其他的网站平台(如 Microsoft IIS 开发平台、Linux Nginx 开发平台、Google 开发平台等)。
LNMP 环境搭建指的是在 Linux 操作系统中分别安装 Nginx 网页服务器、MySQL 数据库服务器和 PHP 开发服务器,以及一些对应的扩展软件。在 LNMP 环境中,使用 Nginx 网页服务器取代了 Apache 网页服务器。Nginx 是一款高性能的 HTTP 网页服务器和反向代理服务器,它的执行效率极高,配置相比 Apache 也较为简单,所以在短时间内被国内外很多大型公司所采用。
我们安装的是应用服务软件,这个软件是给外网用户访问和使用的,那么应该使用源码包安装,因为源码包安装的软件经过了本机编译,性能更好。所以我们的 LAMP 环境搭建,在生产服务器上一般采用源码包进行安装,而不会使用 RPM 包进行安装,接下来我们要讲的也是采用源码包方式搭建 LAMP 环境。
LAMP 环境搭建是较为复杂的 Linux 实验,在进行真正的环境安装之前,需要做一些细致的准备工作,以避免在安装过程中出现不必要的错误。我们需要进行的准备工作有以下几步。
LAMP 环境特点主要体现在以下五个方面:
(1)成本低廉: 开源,可快速获得免费使用;
(2)可定制: 拥有大量的额外组件和扩展功能模块,可以根据需要定制或者自行开发添加新功能;
(3)易于开发: 代码简洁,与HTML语言结合度高,容易修改网页代码;
(4)方便易用: PHP、Perl属于解释性语言,开发的程序不需要编译,可以直接移植使用;
(5)安全和稳定: 开源优势,发现问题能够很快解决。
软件包 | 说 明 | 下载地址 |
---|---|---|
httpd-2.4.54.tar.gz | Apache 包 | http://www.apache.org/ |
mysql-5.5.23.tar.gz或者是mysql-8.0.18-el7-x86_64.tar.gz两版本安装方式不同 | Mysql数据库 | http://dev.mysql.com/downloads/ |
php-8.0.0.tar.gz | PHP语言 | http://www.php.net/downloads.php |
phpMyAdmin-5.2.0-all-languages.tar.gz | Web方式的MySQL管理工具 | https://www.phpmyadmin.net/downloads/ |
libxml2-2.9.12.tar.gz | 用来解析XML文档的函数库 | http://xmlsoft.org/sources/ |
libmerypt-2.5.8.tar.gz | 加密算法扩展库 | http://prdownloads.sourceforge.net/mcrypt/libmcrypt-2.5.8.tar.gz?use_mirror=peterhost |
mhash-0.9.9.9.tar.gz | 加密算法扩展库 | http://sourceforge.net/projects/mhash/files/mhash/0.9.9.9/ |
mcrypt-2-6.8-tar.gz | 加密算法扩展库 | http://sourceforge.net/projects/mcrypt/files/MCrypt/2.6.8/ |
zlib-1.2.13.tar.gz | 数据压缩函数库 | http://www.zlib.net/ |
gd-2.0.35.tar.gz | PHP处理用形的扩展库 | https://bitbucket.org/libgd/gd-libgd/downloads |
freetype-2.3.5.tar.gz | 字体引擎库 | http://download.savannah.gnu.org/releases/freetype/ |
libpng-1.6.38.tar.gz | 用于解码.png格式的图片 | https://sourceforge.net/projects/libpng/files/libpng16/1.6.38/libpng-1.6.38.tar.gz/download |
jpegsrc.v6b.tar.gz | 用于解码.jpg和.jpeg格式的图片 | http://www.ijg.org/files/jpegsrc.v6b.tar.gz |
apr-1.7.0.tar.gz | Apache支持镆块 | http://archive.apache.org/dist/apr/ |
apr-util-1.6.1.tar.gz | Apache支持模块 | http://archive.apache.org/dist/apr/ |
pcre-8.45.tar.gz | Apache支持模块,使Apache支持pcre正则表达式规则 | https://sourceforge.net/projects/pcre/files/pcre/8.45/pcre-8.45.tar.gz/download |
ncurses.tar.gz | 使应用程序直接控制终端屏幕显示的函数库 | https://invisible-island.net/ncurses/#download_ncurses |
memcache-8.0.tgz | memcache函数库(客户端) | http://pecl.php.net/package/memcache |
memcached-1.6.17.tar.gz | memcached服务器端 | http://www.memcached.org/files/memcached-1.6.17.tar.gz |
一般在计算机领域永远不是最新版本的软件就是最好的,新软件虽然有了更多的功能,但是这个软件并没有经过实际工作的检验,它不一定稳定,也有可能会有 Bug;反而版本较低的、但是经过足够的实践检验的软件会更受开发者的欢迎
[root@CncLucZK ~]# ll -h /usr/local/src
total 378M
-rw-r--r-- 1 root root 1.1M Nov 1 14:01 apr-1.7.0.tar.gz
-rw-r--r-- 1 root root 542K Nov 1 14:01 apr-util-1.6.1.tar.gz
-rw-r--r-- 1 root root 3.3M Nov 1 13:51 freetype-2.10.0.tar.gz
-rw-r--r-- 1 root root 9.3M Nov 1 09:41 httpd-2.4.54.tar.gz
-rw-r--r-- 1 root root 599K Nov 1 13:58 jpegsrc.v6b.tar.gz
-rw-r--r-- 1 root root 2.3M Nov 1 13:48 libgd-2.1.1.tar.gz
-rw-r--r-- 1 root root 1.3M Nov 1 13:38 libmcrypt-2.5.8.tar.gz
-rw-r--r-- 1 root root 1.5M Nov 1 13:58 libpng-1.6.38.tar.gz
-rw-r--r-- 1 root root 5.5M Nov 1 13:10 libxml2-2.9.12.tar.gz
-rw-r--r-- 1 root root 461K Nov 1 13:46 mcrypt-2.6.8.tar.gz
-rw-r--r-- 1 root root 77K Nov 1 14:12 memcache-8.0.tgz
-rw-r--r-- 1 root root 1.7M Nov 1 14:10 memcached-1.6.17.tar.gz
-rw-r--r-- 1 root root 910K Nov 1 13:44 mhash-0.9.9.9.tar.gz
-rw-r--r-- 1 root root 312M Nov 1 14:27 mysql-8.0.31.tar.gz
-rw-r--r-- 1 root root 3.5M Nov 1 14:18 ncurses.tar.gz
-rw-r--r-- 1 root root 2.0M Nov 1 14:07 pcre-8.45.tar.gz
-rw-r--r-- 1 root root 19M Nov 1 10:21 php-8.1.12.tar.gz
-rw-r--r-- 1 root root 12M Nov 1 12:46 phpMyAdmin-5.2.0-all-languages.tar.gz
-rw-r--r-- 1 root root 1.5M Nov 1 13:47 zlib-1.2.13.tar.gz
[root@CncLucZK ~]# ll -h /usr/local/src | grep gz |wc -l
19
[root@CncLucZK ~]# rpm -q gcc
gcc-8.2.1-3.5.el8.x86_64
[root@CncLucZK ~]# yum -y install gcc-c++
Installed:
gcc-c++-8.5.0-4.el8_5.x86_64 libstdc++-devel-8.5.0-4.el8_5.x86_64
Complete!
[root@CncLucZK ~]# rpm -qa | grep gcc
gcc-8.5.0-4.el8_5.x86_64
libgcc-8.5.0-4.el8_5.x86_64
gcc-c++-8.5.0-4.el8_5.x86_64
#停止apache和mysql服务
[root@CncLucZK ~]# service httpd stop
Redirecting to /bin/systemctl stop httpd.service
[root@CncLucZK ~]# service mysqld stop
Redirecting to /bin/systemctl stop mysqld.service
#关闭apache和mysql的自启动
[root@CncLucZK ~]# chkconfig httpd off
Note: Forwarding request to 'systemctl disable httpd.service'.
[root@CncLucZK ~]# chkconfig mysqld off
Note: Forwarding request to 'systemctl disable mysqld.service'.
Removed /etc/systemd/system/multi-user.target.wants/mysqld.service.
方式1:关闭命令如下:
[root@CncLucZK ~]# setup
[root@CncLucZK ~]#systemctl stop firewalld.service #关闭防火墙
#默认filter表中的三条链中的规则都是空。防火墙已经被关闭了
[root@CncLucZK ~]# iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
[root@CncLucZK ~]# cat /etc/selinux/config
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of these three values:
# targeted - Targeted processes are protected,
# minimum - Modification of targeted policy. Only selected processes aed.
# mls - Multi Level Security protection.
SELINUXTYPE=targeted
#把 SELINUX=enforcing改为 SELINUX=disabled
[root@CncLucZK ~]# shutdown -r now
#重启Linux系统
或者执行此命令:
[root@CncLucZK ~]#setenforce 0 #关闭selinux
[root@CncLucZK src]# vi tar.sh
#建立解压缩脚本
#!/bin/bash
#标是 Shell脚本
cd /usr/local/src/
#进入保存源码包的目录
ls *.tar.gz >> /usr/local/src/ls.log
#把所有以.tar .gz结尾的文件名覆盖写入ls.log文件
ls *.tgz >> /usr/local/src/ls.log
#把所有以.tgz结尾的文件名追加写入ls.log文件
file=$(cat /usr/local/src/ls.log)
#读取 Is.log 文件中的内容,赋子变量file
for i in $file
#for循环,每次德环把变量file中的一个文件名
do
tar -zxf $i
#解压缩毎个压缩文件
done
rm -rf /usr/local/src/ls.log
#删除临时文件ls.log
#以上是脚本的内容
[root@CncLucZK src]# chmod 755 tar.sh
[root@CncLucZK src]# ll *.sh
-rwxr-xr-x 1 root root 600 Nov 1 16:49 tar.sh
#赋予tar.sh文件执行权限
[root@CncLucZK src]. tar.sh
#执行这个脚本
[root@CncLucZK ~]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 902M 0 902M 0% /dev
tmpfs 915M 40K 915M 1% /dev/shm
tmpfs 915M 428K 915M 1% /run
tmpfs 915M 0 915M 0% /sys/fs/cgroup
/dev/vda1 50G 8.8G 39G 19% /
tmpfs 183M 0 183M 0% /run/user/0
“/”分区还有39GB的可用空间,足够使用了。
1.例如:在安装某源码包时发现找不到libssl.so.3的库,那先到/usr/lib64类库中查找是否有此类库:
...while loading shared libraries: libssl.so.3: cannot open shared object file: No such file or directory
[root@CncLucZK ~]# cd /usr/lib64
[root@CncLucZK lib64]# ll libssl.so.3
#若是/usr/lib64没有,查看系统中是否有其他的libssl.so.3库
#存在llibssl.so.3库,这种有可能是用了同一个库的软链接
[root@CncLucZK lib64]# find / -name libssl.so.3
/usr/local/openssl/lib64/libssl.so.3
/usr/local/src/openssl-3.0.7/libssl.so.3
#发现openssl安装包下有这个类库那么利用`ln -s`做个软链接即可,这时可能有多个不同版本的库,需要自己判断使用那个库
[root@CncLucZK lib64]# ln -s /usr/local/openssl/lib64/libssl.so.3 /usr/lib64/libssl.so.3
2.如果系统中不存其他的libssl.so.3库,可以在 https://pkgs.org/ 中搜索libssl
[root@CncLucZK lib64]# yun -y install
参考文献:
Linux LAMP环境搭建的前期准备