LAMP架构是协同工作的一整套系统和相关软件,可提供动态Web站点服务及其应用开发环境。具体包括Linux操作系统、Apache网站服务器、MySQL数据库服务器、PHP(或Perl、Python)网页编程语言。
Linux+apache+mariadb+PHP组合的架构,架构图如下:
根据上图中访问数据流可知,处理一次动态页面请求,服务器主要经历:Apache处理请求——通过CGI接口访问PHP的的应用程序——PHP应用程序调用PHP解释器执行PHP代码——PHP程序访问调用数据库——最后给客户做反馈。
故在LAMP的环境机构中,apache、mariadb和php的主要功能分别如下
1)虚拟机CentOS7
[root@611 ~]# cat /etc/redhat-release
CentOS Linux release 7.5.1804 (Core)
2)关闭防火墙
[root@611 ~]# systemctl stop firewalld
[root@611 ~]# systemctl disable firewalld
3)关闭selinux
[root@611 ~]# sed -ri 's/^SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
4)准备编译环境
[root@611 ~]# yum -y install make gcc gcc-c++ openssl openssl-devel expat-devel
三、Apache编译安装
注意路径
[root@611 ~]# tar -xvzf httpd-2.4.38.tar.gz -C /usr/src
安装完成后均可使用echo $?检查
[root@611 ~]# wget http://archive.apache.org/dist/apr/apr-1.4.5.tar.gz
[root@611 ~]# tar -xvzf apr-1.4.5.tar.gz -C /usr/src/
[root@611 ~]# cd /usr/src/apr-1.4.5/
[root@611 apr-1.4.5]# ./configure --prefix=/usr/local/apr #进行配置并指明安装路径
[root@611 apr-1.4.5]# make && make install #安装
[root@611 ~]# wget http://archive.apache.org/dist/apr/apr-util-1.3.12.tar.gz
[root@611 ~]# tar -xvzf apr-util-1.3.12.tar.gz -C /usr/src/
[root@611 ~]# cd /usr/src/apr-util-1.3.12/ #进入解压后的路径
[root@611 apr-util-1.3.12]# ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr/ #进行配置并指明安装路径
[root@611 apr-util-1.3.12]# make && make install #安装
执行./configure 可能会出现权限不够
执行如下命令:chmod +x configure
[root@611 ~]# wget http://jaist.dl.sourceforge.net/project/pcre/pcre/8.10/pcre-8.10.zip
[root@611 ~]# unzip pcre-8.10.zip #解压
[root@611 ~]# mv pcre-8.10 /usr/src/ #移动文件至/usr/src
[root@611 ~]# cd /usr/src/pcre-8.10/ #进入解压后的路径
[root@611 pcre-8.10]# ./configure --prefix=/usr/local/pcre #进行配置并指明安装路径
[root@611 pcre-8.10]# make && make install #安装
[root@611 ~]# cd /usr/src/httpd-2.4.38/ #进入解压后的路径
[root@611 httpd-2.4.38]# ./configure --prefix=/usr/local/httpd --enable-so --enable-rewrite --enable-charset-list --enable-cgi --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --with-pcre=/usr/local/pcre #进行配置并指明安装路径
[root@611 httpd-2.4.38]# make && make install #安装
上述配置命令中,各选项的含义如下
[root@611 ~]# ls /usr/local/httpd/
[root@611 ~]# ln -s /usr/local/httpd/bin/* /usr/local/bin #将bin下所有内容配置环境变量
本行意为在任何路径下都能执行启动Apache命令
[root@611 ~]# vim /usr/local/httpd/conf/httpd.conf
...
ServerName www.pakho.com:80 #将默认的域名修改公司域名
...
[root@611 ~]# vim /usr/lib/systemd/system/httpd.service #写一个centos7的方式的启动脚本
[Unit]
Description=The Apache HTTP Server
After=network.target
[Service]
Type=forking
PIDFile=/usr/local/httpd/logs/httpd.pid
ExecStart=/usr/local/httpd/bin/apachectl $OPTIONS
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
Restart=on-failure
RetartSec=42s
[Install]
WantedBy=graphical.target
[root@611 ~]# systemctl start httpd
浏览器访问192.168.100.10提示 It works编译安装完成
[root@611 ~]# apachectl -h
[root@611 ~]# rpm -qa mysql-server mysql #检查MySQL软件安装情况
[root@611 ~]# yum -y install ncurses-devel
[root@611 ~]# tar -xvzf cmake-2.8.6.tar.gz -C /usr/src/
[root@611 ~]# cd /usr/src/cmake-2.8.6/
[root@611 cmake-2.8.6]# ./configure
[root@611 cmake-2.8.6]# gmake && gmake install
[root@611 ~]# groupadd mysql #准备mysql组
[root@611 ~]# useradd -M -s/sbin/nologin mysql -g mysql #创建一个用户属于mysql组不允许登陆系统
[root@611 ~]# tar -xvzf mysql-5.6.36.tar.gz -C /usr/src/
[root@611 ~]# cd /usr/src/mysql-5.6.36/
[root@611 mysql-5.6.36]# pwd
/usr/src/mysql-5.6.36
[root@611 mysql-5.6.36]# cmake \\
> -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \\
> -DSYSCONFDIR=/etc \\
> -DDEFAULT_CHARSET=utf8 \\
> -DDEFAULT_COLLATION=utf8_general_ci \\
> -DWITH_EXTRA_CHARSETS=all
[root@611 mysql-5.6.36]# make && make install
[root@611 ~]# chown -R mysql:mysql /usr/local/mysql #改变数据库的属主 属组,对数据库进行权限设置
[root@611 mysql]# mv /etc/my.cnf ~ # 移动样例文件至家目录
[root@611 ~]# cp /usr/src/mysql-5.6.36/support-files/my-default.cnf /etc/my.cnf
[root@611 ~]# /usr/local/mysql/scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data/
[root@611 mysql]# ln -s /usr/local/mysql/bin/* /usr/local/sbin #设置环境变量
[root@611 mysql]# cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
#这样就可以使用systemctl start mysql来启动数据库否则得使用/usr/local/mysql/bin/mysqld
[root@611 mysql]# chmod +x /etc/init.d/mysqld
[root@611 mysql]# chkconfig --add mysqld #添加mysql服务
[root@611 mysql]# chkconfig mysqld on #开机自动启动mysql服务
[root@611 mysql]# systemctl start mysqld
mysql> show databases;
[root@611 mysql]# systemctl status mysqld
[root@611 ~]# yum -y install zlib-devel libxml2-devel xz-devle #安装依赖包
[root@611 ~]# tar -xvzf php-5.5.38.tar.gz -C /usr/src/
[root@611 ~]# cd /usr/src/php-5.5.38/
[root@611 php-5.5.38]# ./configure --prefix=/usr/local/php5 \\ #表示php的安装
> --with-apxs2=/usr/local/httpd/bin/apxs \\ #注入模块,将php与apache结合
> --with-mysql=/usr/local/mysql \\ #表示 php与mysql连接,也表示一个接口
> --with-mysqli=/usr/local/mysql/bin/mysql_config \\
> --with-config-file-path=/usr/local/php5 \\ #这里表示php配置文件存放位置
> --enable-mbstring #启用多字符集的一个模块
[root@611 php-5.5.38]# make && make install
[root@611 php-5.5.38]# cp php.ini-development /usr/local/php5/
[root@611 php-5.5.38]# cd /usr/local/php5/
[root@611 php5]# mv php.ini-development php.ini
[root@611 php5]# vim /usr/local/httpd/conf/httpd.conf
#添加如下内容
<IfModule dir_module>
DirectoryIndex index.php index.html
</IfModule>
<IfModule mime_module>
Addtype application/x-httpd-php .php
</IfModule>
[root&#64;611 php5]# systemctl restart httpd.service
[root&#64;611 php5]# vim /usr/local/httpd/htdocs/index.php
<?php
phpinfo(); #查看php版本信息
?>
http://192.168.100.10/
测试完成
[root&#64;611 ~]# mysql -u root -p&#39;WANGyuCHEN0403&#39;
mysql> create database wordpress;
mysql> grant all privileges on wordpress.* to &#39;he&#39;&#64;&#39;localhost&#39; identified by &#39;123&#39;;
mysql> flush privileges;
[root&#64;611 ~]# cd /usr/local/httpd/htdocs/
[root&#64;611 htdocs]# rm -rf *
[root&#64;611 htdocs]# mv /root/wordpress-4.9.4-zh_CN.tar.gz .
[root&#64;611 htdocs]# tar -xvzf wordpress-4.9.4-zh_CN.tar.gz
[root&#64;611 htdocs]# rm -rf wordpress-4.9.4-zh_CN.tar.gz
[root&#64;611 htdocs]# mv wordpress/* .
http://192.168.100.10
已成功登录
输入我们创建的数据库用户
根据提示创建一个php文件
[root&#64;611 htdocs]# vim wp-config.php
#根据提示复制提示内容
实验成功