搭建lamp
lamp
目录
1. lamp简介
lamp,其实就是由Linux+Apache+Mysql/MariaDB+Php/Perl/Python的一组动态网站或者服务器的开源软件
LAMP指的是Linux(操作系统)、Apache(HTTP服务器)、MySQL(也指MariaDB,数据库软件)和PHP(有时也是指Perl或Python)的第一个字母,一般用来建立web应用平台。
2. web服务器工作流程
web服务器的资源分为两种,静态资源和动态资源
静态资源:当我们获取它的时候,它里面的源的表现形式与原文件相同不会发生什么改变。
动态资源:程序文件,我们日常执行的命令在不同的主机里面执行出来的结果是不一样的
当我们在客户端访问web服务器资源的时候,前端会把这个请求转发给应用服务器这里,然后应用服务器会到数据库里面进行查询并反馈给前端,前端再反馈给客户端
3. lamp平台构建
环境说明:
系统平台 | IP | 需要安装的服务 |
---|---|---|
centos8 redhat8 | 192.168.222.250 | httpd-2.4,mysql5.7,php,phpmysql |
lamp平台软件安装次序:
httpd --> mysql --> php
注意:php要求httpd使用prefork MPM
3.1 安装httpd
yum源的配置:
[root@lnh ~]# cd /etc/yum.repos.d/
[root@lnh yum.repos.d]#rm -rf *
[root@lnh yum.repos.d]# curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo
//在阿里云网站里面复制的仓库链接
[root@lnh yum.repos.d]# sed -i -e '/mirrors.cloud.aliyuncs.com/d' -e '/mirrors.aliyuncs.com/d' /etc/yum.repos.d/CentOS-Base.repo
[root@lnh yum.repos.d]# ls
CentOS-Base.repo
[root@lnh yum.repos.d]# yum install -y https://mirrors.aliyun.com/epel/epel-release-latest-8.noarch.rpm
[root@lnh yum.repos.d]# sed -i 's|^#baseurl=https://download.example/pub|baseurl=https://mirrors.aliyun.com|' /etc/yum.repos.d/epel*
[root@lnh yum.repos.d]# sed -i 's|^metalink|#metalink|' /etc/yum.repos.d/epel*
//安装epel源,也是在阿里云网站里面复制链接
[root@lnh yum.repos.d]# ls
CentOS-Base.repo epel.repo epel-testing.repo
epel-modular.repo epel-testing-modular.repo
[root@lnh yum.repos.d]# cat epel.repo //查看里面地址是否改变
[epel]
name=Extra Packages for Enterprise Linux 8 - $basearch
# It is much more secure to use the metalink, but if you wish to use a local mirror
# place its address here.
baseurl=https://mirrors.aliyun.com/epel/8/Everything/$basearch
#metalink=https://mirrors.fedoraproject.org/metalink?repo=epel-8&arch=$basearch&infra=$infra&content=$contentdir
enabled=1
gpgcheck=1
countme=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-8
[epel-debuginfo]
name=Extra Packages for Enterprise Linux 8 - $basearch - Debug
# It is much more secure to use the metalink, but if you wish to use a local mirror
# place its address here.
baseurl=https://mirrors.aliyun.com/epel/8/Everything/$basearch/debug
#metalink=https://mirrors.fedoraproject.org/metalink?repo=epel-debug-8&arch=$basearch&infra=$infra&content=$contentdir
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-8
gpgcheck=1
[epel-source]
name=Extra Packages for Enterprise Linux 8 - $basearch - Source
# It is much more secure to use the metalink, but if you wish to use a local mirror
# place it's address here.
baseurl=https://mirrors.aliyun.com/epel/8/Everything/source/tree/
#metalink=https://mirrors.fedoraproject.org/metalink?repo=epel-source-8&arch=$basearch&infra=$infra&content=$contentdir
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-8
gpgcheck=1
[root@lnh yum.repos.d]# dnf makecache //缓存一下
[root@lnh ~]# dnf groups mark install 'Development Tools'
//安装开发工具包
Last metadata expiration check: 0:03:41 ago on Tue 02 Aug 2022 09:17:12 PM CST.
Module yaml error: Unexpected key in data: static_context [line 9 col 3]
Module yaml error: Unexpected key in data: static_context [line 9 col 3]
Dependencies resolved.
===================================================================================
Package Architecture Version Repository Size
===================================================================================
Installing Groups:
Development Tools
Transaction Summary
===================================================================================
Is this ok [y/N]: y
Complete!
[root@lnh ~]# useradd -r -M -s /sbin/nologin apache
//创建用户的时候它会创建一个和用户名相同名字的组
//创建apache服务的用户和组
[root@lnh ~]# dnf -y install openssl-devel pcre-devel expat-devel libtool gcc gcc-c++ wget vim make
//安装依赖包
[root@lnh ~]# wget https://downloads.apache.org/apr/apr-1.7.0.tar.gz https://downloads.apache.org/apr/apr-util-1.6.1.tar.gz https://downloads.apache.org/httpd/httpd-2.4.54.tar.gz
//在https://downloads.apache.org/官网里面下载
[root@lnh ~]# ls
anaconda-ks.cfg apr-1.7.0.tar.gz apr-util-1.6.1.tar.gz httpd-2.4.54.tar.gz
[root@lnh ~]# tar -xf apr-1.7.0.tar.gz
[root@lnh ~]# tar -xf apr-util-1.6.1.tar.gz
[root@lnh ~]# tar -xf httpd-2.4.54.tar.gz
[root@lnh ~]# ls
anaconda-ks.cfg apr-1.7.0.tar.gz apr-util-1.6.1.tar.gz httpd-2.4.54.tar.gz
apr-1.7.0 apr-util-1.6.1 httpd-2.4.54
[root@lnh ~]# cd apr-1.7.0/
[root@lnh apr-1.7.0]# ls
apr-config.in build-outputs.mk helpers misc strings
apr.dep CHANGES include mmap support
apr.dsp CMakeLists.txt libapr.dep network_io tables
apr.dsw config.layout libapr.dsp NOTICE test
apr.mak configure libapr.mak NWGNUmakefile threadproc
apr.pc.in configure.in libapr.rc passwd time
apr.spec docs LICENSE poll tools
atomic dso locks random user
build emacs-mode Makefile.in README
build.conf encoding Makefile.win README.cmake
buildconf file_io memory shmem
[root@lnh apr-1.7.0]# vim configure
# $RM "$cfgfile" //删除或者注释掉这个
[root@lnh apr-1.7.0]# ./configure --prefix=/usr/local/apr
...
config.status: creating test/internal/Makefile
config.status: creating include/arch/unix/apr_private.h
config.status: executing libtool commands
config.status: executing default commands
[root@lnh apr-1.7.0]# make
[root@lnh apr-1.7.0]# make install
[root@lnh apr-1.7.0]# cd ../apr-util-1.6.1/
[root@lnh apr-util-1.6.1]# ls
aprutil.dep CHANGES include NWGNUmakefile
aprutil.dsp CMakeLists.txt ldap README
aprutil.dsw config.layout libaprutil.dep README.cmake
aprutil.mak configure libaprutil.dsp README.FREETDS
apr-util.pc.in configure.in libaprutil.mak redis
apr-util.spec crypto libaprutil.rc renames_pending
apu-config.in dbd LICENSE strmatch
buckets dbm Makefile.in test
build docs Makefile.win uri
build.conf encoding memcache xlate
buildconf export_vars.sh.in misc xml
build-outputs.mk hooks NOTICE
[root@lnh apr-util-1.6.1]# ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr
[root@lnh apr-util-1.6.1]# make
[root@lnh apr-util-1.6.1]# make install
[root@lnh ~]# ls /usr/local/
apr apr-util bin etc games include lib lib64 libexec sbin share src
[root@lnh ~]# cd httpd-2.4.54/
[root@lnh httpd-2.4.54]# ls
ABOUT_APACHE CHANGES httpd.mak Makefile.in ROADMAP
acinclude.m4 changes-entries httpd.spec Makefile.win server
Apache-apr2.dsw CMakeLists.txt include modules srclib
Apache.dsw config.layout INSTALL NOTICE support
apache_probes.d configure InstallBin.dsp NWGNUmakefile test
ap.d configure.in LAYOUT os VERSIONING
build docs libhttpd.dep README
BuildAll.dsp emacs-style libhttpd.dsp README.CHANGES
BuildBin.dsp httpd.dep libhttpd.mak README.cmake
buildconf httpd.dsp LICENSE README.platforms
[root@lnh httpd-2.4.54]# ./configure --prefix=/usr/local/apache \
--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
....
Server Version: 2.4.54
Install prefix: /usr/local/apache
C compiler: gcc
CFLAGS: -g -O2 -pthread
CPPFLAGS: -DLINUX -D_REENTRANT -D_GNU_SOURCE
LDFLAGS:
LIBS:
C preprocessor: gcc -E
[root@lnh httpd-2.4.54]# make
[root@lnh httpd-2.4.54]# make install
[root@lnh httpd-2.4.54]# cd
[root@lnh ~]# ls
anaconda-ks.cfg apr-1.7.0.tar.gz apr-util-1.6.1.tar.gz httpd-2.4.54.tar.gz
apr-1.7.0 apr-util-1.6.1 httpd-2.4.54
[root@lnh ~]# echo 'export PATH=/usr/local/apache/bin:$PATH' > /etc/profile.d/httpd.sh //配置环境变量
[root@lnh ~]# cat /etc/profile.d/httpd.sh
export PATH=/usr/local/apache/bin:$PATH
[root@lnh ~]# ls /usr/local/
apache apr-util etc include lib64 sbin src
apr bin games lib libexec share
[root@lnh ~]# source /etc/profile.d/httpd.sh
[root@lnh ~]# which httpd //查看路径
/usr/local/apache/bin/httpd
[root@lnh ~]# ls /usr/local/apache/
bin cgi-bin error icons logs manual
build conf htdocs include man modules
[root@lnh ~]# ln -s /usr/local/apache/include /usr/include/apache
//做一个头文件软链接
[root@lnh ~]# ll -d /usr/include/apache
lrwxrwxrwx. 1 root root 25 Aug 2 22:37 /usr/include/apache -> /usr/local/apache/include
[root@lnh ~]# vim /etc/man_db.conf
MANDATORY_MANPATH /usr/man
MANDATORY_MANPATH /usr/share/man
MANDATORY_MANPATH /usr/local/share/man
MANDATORY_MANPATH /usr/local/apache/man//添加这一行
[root@lnh ~]# cd /usr/lib/systemd/system
[root@lnh system]# cp sshd.service httpd.service
[root@lnh system]# vim httpd.service
[Unit]
Description=httpd server daemon
After=network.target
[Service]
Type=forking
ExecStart=/usr/local/apache/bin/apachectl
ExecStop=/usr/local/apache/bin/apachectl stop
ExecReload=/bin/kill -HUP $MAINPID
[Install]
WantedBy=multi-user.target
[root@lnh system]# cd
[root@lnh ~]# systemctl daemon-reload
[root@lnh ~]# systemctl enable --now httpd.service //设置开机自启
Created symlink /etc/systemd/system/multi-user.target.wants/httpd.service → /usr/lib/systemd/system/httpd.service.
[root@lnh ~]# ss -antl
State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
LISTEN 0 128 0.0.0.0:22 0.0.0.0:*
LISTEN 0 128 *:80 *:*
LISTEN 0 128 [::]:22 [::]:*
[root@lnh ~]# systemctl status httpd.service
● httpd.service - httpd server daemon
Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: >
Active: active (running) since Tue 2022-08-02 22:49:17 CST; 30s ago
Docs: man:httpd(5)
Process: 49081 ExecStart=/usr/local/apache/bin/apachectl start (code=exited, sta>
Main PID: 49084 (httpd)
Tasks: 6 (limit: 12221)
Memory: 5.7M
CGroup: /system.slice/httpd.service
├─49084 /usr/local/apache/bin/httpd -k start
├─49085 /usr/local/apache/bin/httpd -k start
├─49086 /usr/local/apache/bin/httpd -k start
├─49087 /usr/local/apache/bin/httpd -k start
├─49088 /usr/local/apache/bin/httpd -k start
└─49089 /usr/local/apache/bin/httpd -k start
Aug 02 22:49:17 lnh systemd[1]: Starting httpd server daemon...
Aug 02 22:49:17 lnh apachectl[49081]: AH00558: httpd: Could not reliably determine>
Aug 02 22:49:17 lnh systemd[1]: Started httpd server daemon.
3.2 安装mysql
[root@lnh ~]# dnf -y install ncurses-devel openssl-devel openssl cmake mariadb-devel
//安装依赖包
[root@lnh ~]# useradd -r -M -s /sbin/nologin mysql
//创建用户和组
[root@lnh ~]# wget https://downloads.mysql.com/archives/get/p/23/file/mysql-5.7.38-linux-glibc2.12-x86_64.tar.gz
//下载二进制格式的mysql软件包
[root@lnh ~]# ls
anaconda-ks.cfg apr-util-1.6.1.tar.gz
apr-1.7.0 httpd-2.4.54
apr-1.7.0.tar.gz httpd-2.4.54.tar.gz
apr-util-1.6.1 mysql-5.7.38-linux-glibc2.12-x86_64.tar.gz
[root@lnh ~]# tar -xf mysql-5.7.38-linux-glibc2.12-x86_64.tar.gz -C /usr/local/
[root@lnh ~]# cd /usr/local/
[root@lnh local]# ls
apache bin include libexec share
apr etc lib mysql-5.7.38-linux-glibc2.12-x86_64 src
apr-util games lib64 sbin
[root@lnh local]# mv mysql-5.7.38-linux-glibc2.12-x86_64 mysql
//也可以做软链接ln -sv mysql-5.7.38-linux-glibc2.12-x86_64/ mysql
[root@lnh local]# ls
apache apr-util etc include lib64 mysql share
apr bin games lib libexec sbin src
[root@lnh local]# chown -R mysql.mysql mysql //修改目录/usr/local/mysql的属主属组
[root@lnh local]# ll
total 0
drwxr-xr-x. 14 root root 164 Aug 2 22:32 apache
drwxr-xr-x. 6 root root 58 Aug 2 22:17 apr
drwxr-xr-x. 5 root root 43 Aug 2 22:20 apr-util
drwxr-xr-x. 2 root root 6 May 19 2020 bin
drwxr-xr-x. 2 root root 6 May 19 2020 etc
drwxr-xr-x. 2 root root 6 May 19 2020 games
drwxr-xr-x. 2 root root 6 May 19 2020 include
drwxr-xr-x. 2 root root 6 May 19 2020 lib
drwxr-xr-x. 3 root root 17 Jul 19 16:13 lib64
drwxr-xr-x. 2 root root 6 May 19 2020 libexec
drwxr-xr-x. 9 mysql mysql 129 Aug 2 23:21 mysql
drwxr-xr-x. 2 root root 6 May 19 2020 sbin
drwxr-xr-x. 5 root root 49 Jul 19 16:13 share
drwxr-xr-x. 2 root root 6 May 19 2020 src
[root@lnh local]# ln -s /usr/local/mysql/include /usr/include/mysql
[root@lnh local]# echo '/usr/local/mysql/lib' > /etc/ld.so.conf.d/mysql.conf
[root@lnh local]# vim /etc/man_db.conf
MANDATORY_MANPATH /usr/man
MANDATORY_MANPATH /usr/share/man
MANDATORY_MANPATH /usr/local/share/man
MANDATORY_MANPATH /usr/local/apache/man
MANDATORY_MANPATH /usr/local/mysql/man//添加这一行
[root@lnh local]# cd
[root@lnh ~]# echo 'export PATH=/usr/local/mysql/bin:$PATH' > /etc/profile.d/mysql.sh
//配置环境变量
[root@lnh ~]# source /etc/profile.d/mysql.sh
[root@lnh ~]# which mysql
/usr/local/mysql/bin/mysql
//查找mysql
[root@lnh ~]# mkdir -p /opt/data
[root@lnh ~]# chown -R mysql.mysql /opt/data/
//建立数据存放目录
[root@lnh ~]# mysqld --initialize --user mysql --datadir /opt/data
//初始化数据库
2022-08-02T15:38:19.770486Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
2022-08-02T15:38:19.958740Z 0 [Warning] InnoDB: New log files created, LSN=45790
2022-08-02T15:38:19.986757Z 0 [Warning] InnoDB: Creating foreign key constraint system tables.
2022-08-02T15:38:19.992972Z 0 [Warning] No existing UUID has been found, so we assume that this is the first time that this server has been started. Generating a new UUID: 22a4ea73-1279-11ed-a567-000c2905f428.
2022-08-02T15:38:19.995310Z 0 [Warning] Gtid table is not ready to be used. Table 'mysql.gtid_executed' cannot be opened.
2022-08-02T15:38:20.416458Z 0 [Warning] A deprecated TLS version TLSv1 is enabled. Please use TLSv1.2 or higher.
2022-08-02T15:38:20.416497Z 0 [Warning] A deprecated TLS version TLSv1.1 is enabled. Please use TLSv1.2 or higher.
2022-08-02T15:38:20.417285Z 0 [Warning] CA certificate ca.pem is self signed.
2022-08-02T15:38:20.478216Z 1 [Note] A temporary password is generated for root@localhost: iBUh*ijeb45h
[root@lnh ~]# echo 'iBUh*ijeb45h' > password
[root@lnh ~]# cat password
iBUh*ijeb45h
//将临时密码保存到这个文件里面
[root@lnh ~]# rpm -qa |grep mariadb
mariadb-connector-c-config-3.1.11-2.el8_3.noarch
mariadb-connector-c-3.1.11-2.el8_3.x86_64
mariadb-connector-c-devel-3.1.11-2.el8_3.x86_64
mariadb-devel-10.3.28-1.module_el8.3.0+757+d382997d.x86_64
//查找mariadb的数据库
[root@lnh ~]# dnf -y remove mariadb*
//要卸载掉mariadb数据库不然到时候和mysql数据库发生冲突
[root@lnh ~]# rpm -qa |grep mariadb
[root@lnh ~]# vim /etc/my.cnf
[root@lnh ~]# 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@lnh ~]# cd /usr/local/mysql/
[root@lnh mysql]# ls
bin docs include lib LICENSE man README share support-files
[root@lnh mysql]# cd support-files/
[root@lnh support-files]# ls
magic mysqld_multi.server mysql-log-rotate mysql.server
[root@lnh support-files]# file mysql.server
mysql.server: POSIX shell script, ASCII text executable
//是一个脚本文件
[root@lnh support-files]# cp mysql.server /etc/init.d/mysqld
[root@lnh support-files]# vim /etc/init.d/mysqld
basedir=/usr/local/mysql //数据库存放位置
datadir=/opt/data //数据存放位置
[root@lnh support-files]# chmod +x /etc/init.d/mysqld
//赋予执行权限
[root@lnh ~]# service mysqld start //启动服务
Starting MySQL.Logging to '/opt/data/lnh.err'.
SUCCESS!
[root@lnh ~]# ss -antl //查看端口
State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
LISTEN 0 128 0.0.0.0:22 0.0.0.0:*
LISTEN 0 80 *:3306 *:*
LISTEN 0 128 *:80 *:*
LISTEN 0 128 [::]:22 [::]:*
[root@lnh ~]# chkconfig --add mysqld //设置开机自启
[root@lnh ~]# chkconfig --list
Note: This output shows SysV services only and does not include native
systemd services. SysV configuration data might be overridden by native
systemd configuration.
If you want to list systemd services use 'systemctl list-unit-files'.
To see services enabled on particular target use
'systemctl list-dependencies [target]'.
mysqld 0:off 1:off 2:on 3:on 4:on 5:on 6:off
//在2,3,4,5下面开机自启了
[root@lnh ~]# systemctl stop firewalld.service
[root@lnh ~]# systemctl disable firewalld.service
Removed /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
[root@lnh ~]# vim /etc/selinux/config
SELINUX=disabled
[root@lnh ~]# setenforce 0
//关闭防火墙
[root@lnh ~]# cd /usr/lib/systemd/system
[root@lnh system]# cp sshd.service mysqld.service
[root@lnh system]# vim mysqld.service
[Unit]
Description=mysqld server daemon
After=network.target
[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@lnh system]# cd
[root@lnh ~]# systemctl daemon-reload //重新加载
[root@lnh ~]# systemctl restart mysqld.service //重启服务
[root@lnh ~]# ss -antl
State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
LISTEN 0 128 0.0.0.0:22 0.0.0.0:*
LISTEN 0 80 *:3306 *:*
LISTEN 0 128 *:80 *:*
LISTEN 0 128 [::]:22 [::]:*
[root@lnh ~]# cat password
iBUh*ijeb45h
[root@lnh ~]# mysql -uroot -p'iBUh*ijeb45h'
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.38
Copyright (c) 2000, 2022, Oracle and/or its affiliates.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> set password=password('lnh123'); //修改密码, ALTER USER 'root'@'localhost' IDENTIFIED WITH MYSQL_NATIVE_PASSWORD BY 'lnh123';(mysql8.0使用这条命令进行修改密码)
Query OK, 0 rows affected (0.02 sec)
Query OK, 0 rows affected, 1 warning (0.00 sec)
mysql> quit
Bye
[root@lnh ~]# mysql -uroot -p'lnh123'
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 3
Server version: 5.7.38 MySQL Community Server (GPL)
Copyright (c) 2000, 2022, Oracle and/or its affiliates.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
//密码修改成功
3.3 安装php
[root@lnh ~]# wget https://www.php.net/distributions/php-7.4.30.tar.xz
//在网站php.net里面复制网址
[root@lnh ~]# ls
anaconda-ks.cfg apr-util-1.6.1.tar.gz password
apr-1.7.0 httpd-2.4.54 php-7.4.30.tar.xz
apr-1.7.0.tar.gz httpd-2.4.54.tar.gz
apr-util-1.6.1 mysql-5.7.38-linux-glibc2.12-x86_64.tar.gz
[root@lnh ~]# sha256sum php-7.4.30.tar.xz
ea72a34f32c67e79ac2da7dfe96177f3c451c3eefae5810ba13312ed398ba70d php-7.4.30.tar.xz
//查看是否是要下载的包
[root@lnh ~]# dnf list |grep php|grep mysql
Module yaml error: Unexpected key in data: static_context [line 9 col 3]
Module yaml error: Unexpected key in data: static_context [line 9 col 3]
php-mysqlnd.x86_64 7.2.24-1.module_el8.2.0+313+b04d0a66 @AppStream
//查看本地是否有需要的安装包
[root@lnh ~]# dnf -y install libxml2 libxml2-devel openssl openssl-devel bzip2 bzip2-devel libcurl libcurl-devel libicu-devel libjpeg libjpeg-devel libpng libpng-devel openldap-devel pcre-devel freetype freetype-devel gmp gmp-devel libmcrypt libmcrypt-devel readline readline-devel libxslt libxslt-devel mhash mhash-devel php-mysqlnd
//安装依赖包
[root@lnh ~]# ls
anaconda-ks.cfg apr-util-1.6.1.tar.gz password
apr-1.7.0 httpd-2.4.54 php-7.4.30.tar.xz
apr-1.7.0.tar.gz httpd-2.4.54.tar.gz
apr-util-1.6.1 mysql-5.7.38-linux-glibc2.12-x86_64.tar.gz
[root@lnh ~]# tar -xf php-7.4.30.tar.xz
//解压
[root@lnh ~]#cd php-7.4.30/
[root@lnh php-7.4.30]# ./configure --prefix=/usr/local/php7 --with-config-file-path=/etc --enable-fpm --enable-inline-optimization --disable-debug --disable-rpath --enable-shared --enable-soap --with-openssl --enable-bcmath --with-iconv --with-bz2 --enable-calendar --with-curl --enable-exif --enable-ftp --enable-gd --with-jpeg --with-zlib-dir --with-freetype --with-gettext --enable-json --enable-mbstring --enable-pdo --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-readline --enable-shmop --enable-simplexml --enable-sockets --with-zip --enable-mysqlnd-compression-support --with-pear --enable-pcntl --enable-posix
.....
+--------------------------------------------------------------------+
| License: |
| This software is subject to the PHP License, available in this |
| distribution in the file LICENSE. By continuing this installation |
| process, you are bound by the terms of this license agreement. |
| If you do not agree with the terms of this license, you must abort |
| the installation process at this point. |
+--------------------------------------------------------------------+
Thank you for using PHP.
//编译测试安装php
[root@lnh php-7.4.30]# make
//编译
[root@lnh php-7.4.30]# make install
//安装
[root@lnh php-7.4.30]# echo 'export PATH=/usr/local/php7/bin:$PATH' > /etc/profile.d/php7.sh
//配置环境变量
[root@lnh php-7.4.30]# source /etc/profile.d/php7.sh
[root@lnh php-7.4.30]# which php //查找php
/usr/local/php7/bin/php
[root@lnh php-7.4.30]# php -v //查看版本号
PHP 7.4.30 (cli) (built: Aug 3 2022 01:17:12) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
[root@lnh php-7.4.30]# ls
appveyor configure.ac Makefile.fragments scripts
azure CONTRIBUTING.md Makefile.objects tests
azure-pipelines.yml docs modules travis
build ext NEWS TSRM
buildconf EXTENSIONS pear UPGRADING
buildconf.bat include php.ini-development UPGRADING.INTERNALS
CODING_STANDARDS.md libs php.ini-production win32
config.log libtool README.md Zend
config.nice LICENSE README.REDIST.BINS
config.status main run-tests.php
configure Makefile sapi
[root@lnh php-7.4.30]# cp php.ini-production /etc/php.ini
cp: overwrite '/etc/php.ini'? y
//配置生产环境
[root@lnh php-7.4.30]# ls
appveyor configure.ac Makefile.fragments scripts
azure CONTRIBUTING.md Makefile.objects tests
azure-pipelines.yml docs modules travis
build ext NEWS TSRM
buildconf EXTENSIONS pear UPGRADING
buildconf.bat include php.ini-development UPGRADING.INTERNALS
CODING_STANDARDS.md libs php.ini-production win32
config.log libtool README.md Zend
config.nice LICENSE README.REDIST.BINS
config.status main run-tests.php
configure Makefile sapi
[root@lnh php-7.4.30]# cd sapi/
[root@lnh sapi]# ls
apache2handler cgi cli embed fpm litespeed phpdbg
[root@lnh sapi]# cd fpm/
[root@lnh fpm]# ls
config.m4 LICENSE php-fpm.conf status.html.in
CREDITS Makefile.frag php-fpm.conf.in tests
fpm php-fpm php-fpm.service www.conf
init.d.php-fpm php-fpm.8 php-fpm.service.in www.conf.in
init.d.php-fpm.in php-fpm.8.in status.html
[root@lnh fpm]# file init.d.php-fpm
init.d.php-fpm: POSIX shell script, ASCII text executable
[root@lnh fpm]# cp init.d.php-fpm /etc/init.d/php-fpm //配置php-fpm
[root@lnh fpm]# chmod +x /etc/init.d/php-fpm
//赋予执行权限
[root@lnh ~]# service php-fpm status
php-fpm is stopped
//此时还没有正式启动
[root@lnh ~]# cd /usr/local/php7/
[root@lnh php7]# ls
bin etc include lib php sbin var
[root@lnh php7]# cd etc/
[root@lnh etc]# ls //查看
pear.conf php-fpm.conf.default php-fpm.d
[root@lnh etc]# cp php-fpm.conf.default php-fpm.conf
[root@lnh etc]# ls //查看复制后的文件
pear.conf php-fpm.conf php-fpm.conf.default php-fpm.d
[root@lnh etc]# cd php-fpm.d/
[root@lnh php-fpm.d]# ls
www.conf.default
[root@lnh php-fpm.d]# cp www.conf.default www.conf
[root@lnh php-fpm.d]# ls //查看复制后的文件
www.conf www.conf.default
[root@lnh php-fpm.d]# service php-fpm start
Starting php-fpm done
//开启服务
[root@lnh php-fpm.d]# ss -antl //查看端口
State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
LISTEN 0 128 127.0.0.1:9000 0.0.0.0:*
LISTEN 0 128 0.0.0.0:22 0.0.0.0:*
LISTEN 0 80 *:3306 *:*
LISTEN 0 128 *:80 *:*
LISTEN 0 128 [::]:22 [::]:*
[root@lnh php-fpm.d]# cd
[root@lnh ~]# chkconfig --add php-fpm //设置开机自启
[root@lnh ~]# chkconfig --list
Note: This output shows SysV services only and does not include native
systemd services. SysV configuration data might be overridden by native
systemd configuration.
If you want to list systemd services use 'systemctl list-unit-files'.
To see services enabled on particular target use
'systemctl list-dependencies [target]'.
php-fpm 0:off 1:off 2:on 3:on 4:on 5:on 6:off
//可以看见2,3,4,5,是开机自启
[root@lnh ~]# ps -ef|grep php
root 214276 1 0 01:53 ? 00:00:00 php-fpm: master process (/usr/local/php7/etc/php-fpm.conf)
nobody 214277 214276 0 01:53 ? 00:00:00 php-fpm: pool www
nobody 214278 214276 0 01:53 ? 00:00:00 php-fpm: pool www
root 214325 51892 0 01:56 pts/0 00:00:00 grep --color=auto php
//查看进程
3.4 配置apache
3.4.1 启用代理模块
在apache httpd 2.4以后已经专门有一个模块针对FastCGI的实现,此模块为mod_proxy_fcgi.so,它其实是作为mod_proxy.so模块的扩展,因此,这两个模块都要加载,编辑httpd.conf文件,取消以下两行内容的注释:
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so
[root@lnh ~]# ss -antl //查看端口
State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
LISTEN 0 128 127.0.0.1:9000 0.0.0.0:*
LISTEN 0 128 0.0.0.0:22 0.0.0.0:*
LISTEN 0 80 *:3306 *:*
LISTEN 0 128 *:80 *:*
LISTEN 0 128 [::]:22 [::]:*
[root@lnh ~]# cd /usr/local/apache/conf/
[root@lnh conf]# ls
extra httpd.conf magic mime.types original
[root@lnh conf]# vim httpd.conf
LoadModule proxy_module modules/mod_proxy.so //取消注释
LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so //取消注释
3.4.2 配置虚拟主机
[root@lnh conf]# ls /usr/local/apache/
bin cgi-bin error icons logs manual
build conf htdocs include man modules
[root@lnh conf]# ls /usr/local/apache/htdocs/
index.html
//放置我们访问网页的位置
[root@lnh conf]# mkdir -p /usr/local/apache/htdocs/runtime
//创建虚拟主机的存放位置
[root@lnh conf]# vim /usr/local/apache/htdocs/runtime/index.php
//在刚刚创建的这个目录里面写一个网站
[root@lnh conf]# cat /usr/local/apache/htdocs/runtime/index.php
<?php
phpinfo();
?>
//创建php测试页面
[root@lnh conf]# ll /usr/local/apache/htdocs/
total 4
-rw-r--r--. 1 504 games 45 Jun 12 2007 index.html
drwxr-xr-x. 2 root root 23 Aug 3 20:49 runtime
//可以看见有执行权限,任何人都可以进入
[root@lnh conf]# ll /usr/local/apache/htdocs/runtime/
total 4
-rw-r--r--. 1 root root 22 Aug 3 20:49 index.php
//可读
[root@lnh conf]# ls
extra httpd.conf magic mime.types original
[root@lnh conf]# cd extra/
[root@lnh extra]# ls
httpd-autoindex.conf httpd-languages.conf httpd-ssl.conf
httpd-dav.conf httpd-manual.conf httpd-userdir.conf
httpd-default.conf httpd-mpm.conf httpd-vhosts.conf
httpd-info.conf httpd-multilang-errordoc.conf proxy-html.conf
[root@lnh extra]# vim httpd-vhosts.conf
<VirtualHost *:80>
DocumentRoot "/usr/local/apache/htdocs/runtime" //主机,网站存放位置
ServerName runtime.example.com //域名
ErrorLog "logs/runtime.example.com-error_log" //错误日志
CustomLog "logs/runtime.example.com-access_log" common //日志
ProxyRequests Off //关闭正向代理
ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/usr/local/apache/htdocs/runtime/$1 //打开反向代理
<Directory "/usr/local/apache/htdocs/runtime"> //存放网站的位置
Options none
AllowOverride none
Require all granted //允许所有人访问
</Directory>
</VirtualHost>
[root@lnh extra]# ls
httpd-autoindex.conf httpd-languages.conf httpd-ssl.conf
httpd-dav.conf httpd-manual.conf httpd-userdir.conf
httpd-default.conf httpd-mpm.conf httpd-vhosts.conf
httpd-info.conf httpd-multilang-errordoc.conf proxy-html.conf
[root@lnh extra]# cd ..
[root@lnh conf]# ls
extra httpd.conf magic mime.types original
[root@lnh conf]# vim httpd.conf
AddType application/x-compress .Z //在这个下面添加两行
AddType application/x-gzip .gz .tgz
AddType application/x-httpd-php .php //添加
AddType application/x-httpd-php-source .phps //添加
Include conf/extra/httpd-vhosts.conf //取消注释,因为刚刚写了虚拟主机的文件
<IfModule dir_module>
DirectoryIndex index.php index.html
</IfModule>
//在index.html前面添加index.php,表示我默认去访问index.php页面
[root@lnh conf]# systemctl restart httpd.service //重启服务
[root@lnh conf]# systemctl status httpd //查看状态
● httpd.service - httpd server daemon
Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: >
Active: active (running) since Wed 2022-08-03 21:24:24 CST; 15s ago
Docs: man:httpd(5)
Process: 214931 ExecStop=/usr/local/apache/bin/apachectl stop (code=exited, stat>
Process: 214935 ExecStart=/usr/local/apache/bin/apachectl start (code=exited, st>
Main PID: 214940 (httpd)
Tasks: 6 (limit: 12221)
Memory: 6.3M
CGroup: /system.slice/httpd.service
├─214940 /usr/local/apache/bin/httpd -k start
├─214941 /usr/local/apache/bin/httpd -k start
├─214942 /usr/local/apache/bin/httpd -k start
├─214943 /usr/local/apache/bin/httpd -k start
├─214944 /usr/local/apache/bin/httpd -k start
└─214945 /usr/local/apache/bin/httpd -k start
Aug 03 21:24:24 lnh systemd[1]: Starting httpd server daemon...
Aug 03 21:24:24 lnh apachectl[214935]: AH00558: httpd: Could not reliably determin>
Aug 03 21:24:24 lnh systemd[1]: Started httpd server daemon.
访问:
报错解决
报错1:
[root@lnh ~]# mysql -uroot -p'iBUh*ijeb45h'
mysql: error while loading shared libraries: libncurses.so.5: cannot open shared object file: No such file or directory
解决:
[root@lnh ~]# dnf provides libncurses.so.5
Last metadata expiration check: 0:14:32 ago on Tue 02 Aug 2022 11:53:43 PM CST.
Module yaml error: Unexpected key in data: static_context [line 9 col 3]
Module yaml error: Unexpected key in data: static_context [line 9 col 3]
ncurses-compat-libs-6.1-9.20180224.el8.i686 : Ncurses compatibility libraries
Repo : base
Matched from:
Provide : libncurses.so.5
[root@lnh ~]# dnf -y install ncurses-compat-libs
报错2:
configure: error: Package requirements (sqlite3 > 3.7.4) were not met:
Package 'sqlite3', required by 'virtual:world', not found
解决:
root@lnh php-7.4.30]# dnf list |grep sqlite3
Module yaml error: Unexpected key in data: static_context [line 9 col 3]
Module yaml error: Unexpected key in data: static_context [line 9 col 3]
libsqlite3x.x86_64 20071018-26.el8 epel
libsqlite3x-devel.x86_64 20071018-26.el8 epel
preludedb-sqlite3.x86_64 5.2.0-1.el8 epel
rubygem-sqlite3.x86_64 1.4.2-2.el8 epel
rubygem-sqlite3-doc.noarch 1.4.2-2.el8 epel
soci-sqlite3.x86_64 4.0.0-2.el8 epel
soci-sqlite3-devel.x86_64 4.0.0-2.el8 epel
uwsgi-plugin-sqlite3.x86_64 2.0.20-1.el8 epel
zabbix-dbfiles-sqlite3.noarch 6.0.2-1.module_el8+14182+e1fc92db epel-modular
zabbix-proxy-sqlite3.x86_64 6.0.2-1.module_el8+14182+e1fc92db epel-modular
zabbix40-dbfiles-sqlite3.noarch 4.0.39-1.el8 epel
zabbix40-proxy-sqlite3.x86_64 4.0.39-1.el8 epel
//查找系统中的安装包,选择第二个
[root@lnh php-7.4.30]# dnf -y install libsqlite3x-devel
报错3:
configure: error: Package requirements (oniguruma) were not met:
Package 'oniguruma', required by 'virtual:world', not found
解决:
[root@lnh php-7.4.30]# dnf list all|grep oniguruma
Module yaml error: Unexpected key in data: static_context [line 9 col 3]
Module yaml error: Unexpected key in data: static_context [line 9 col 3]
oniguruma.i686 6.8.2-2.el8 AppStream
oniguruma.x86_64 6.8.2-2.el8 AppStream
//在系统中查找的不是这个安装包
https://pkgs.org/ 在这个网站里面查找
oniguruma-devel
[root@lnh php-7.4.30]# dnf -y install http://mirror.centos.org/centos/8-stream/PowerTools/x86_64/os/Packages/oniguruma-devel-6.8.2-2.el8.x86_64.rpm
报错4:
configure: error: Package requirements (libzip >= 0.11 libzip != 1.3.1 libzip != 1.7.0) were not met:
Package 'libzip', required by 'virtual:world', not found
Package 'libzip', required by 'virtual:world', not found
Package 'libzip', required by 'virtual:world', not found
解决:
[root@lnh ~]# dnf list all|grep zip|grep lib //在系统中查找
Module yaml error: Unexpected key in data: static_context [line 9 col 3]
Module yaml error: Unexpected key in data: static_context [line 9 col 3]
bzip2-libs.i686 1.0.6-26.el8 @base
bzip2-libs.x86_64 1.0.6-26.el8 @anaconda
libzip.x86_64 1.5.1-2.module_el8.2.0+313+b04d0a66 AppStream
libzip-devel.x86_64 1.5.1-2.module_el8.2.0+313+b04d0a66 AppStream
libzip-tools.x86_64 1.5.1-2.module_el8.2.0+313+b04d0a66 AppStream
zziplib.i686 0.13.68-9.el8 AppStream
zziplib.x86_64 0.13.68-9.el8 AppStream
zziplib-utils.x86_64 0.13.68-9.el8 AppStream
[root@lnh ~]# dnf -y install libzip-devel