Linux操作系统之所以能够在十余年的时间里发展壮大以至于风靡全球,其开放源代码的特性是很重要的原因之一,及Linux操作系统中包括内核在内的所有软件都可以获得源代码,并且可以经过定制修改后编译安装。
LAMP架构是目前成熟的企业网站应用模式之一,指的是协同工作的一整台系统和相关软件,能够提供动态web站点服务及其应用开发环境
LAMP是一个缩写词,具体包括Linux操作系统,Apache网站服务器,MySQL数据库服务器,PHP(或perl,Python)网页编程语言
L:Linux
A:Apache
M:MySQL
P:PHP
在构建LAMP平台时,各组件的安装顺序依次为Linux,Apache,MySQL,PHP
其中Apache和MySQL的安装并没有严格的顺序要求,而PHP环境的安装一般放到最后,负责沟通web服务器和数据库系统以协同工作
具有较大的自由度,功能可定制
可及时获得最新的软件版本
普遍适用于大多数Linux版本,便于一直使用
(1)解包
开源软件的源代码包一般为TarBall形式,扩展名为“.tar.gz”或“.tar.bz2”,都可以使用tar命令进行解压。
在Linux系统中,通常将各种软件的源代码目录保存到“/sur/src”目录中,便于集中管理。
解包 |
---|
习惯上将软件包解压到/sur/src/目录中 |
解包后源代码文件位置:/usr/src/软件名-版本号/ |
(2)配置
在编译应用程序之前,需要进入源代码目录,对软件的安装目录,功能选择等参数进行配置。
在Linux系统中通过源代码方式安装软件时,也可以将所有程序文件安装到同一个文件夹,当需要卸载软件时,只需将该文件夹删除即可。
配置 |
---|
配置工作通常使用源码目录中的configure脚本完成 |
执行“./configure --help”可查看帮助 |
典型的配置选项:–prefix=软件安装目录(指定软件包安装的目标文件夹) |
(3)编译
编译的过程主要是根据Makefile文件内的配置信息(若上一步的配置操作失败,将无法进行编译),将源代码文件进行编译而生成二进制的程序模块,动态链接库,可执行文件等。
配置完成后,只需要在源代码目录中执行“make”命令即可执行编译操作
(4)安装
编译完成后,就可以执行“make install”命令将软件的执行程序,配置文件,帮助文档等相关文件复制到Linux系统中了,也就是应用程序的最后“安装”过程。同样是在源代码目录中执行命令。
“Apache HTTP Server”是开源软件项目的杰出代表,基于标准的 HTTP 网络协议提供
网页浏览服务,在 Web 服务器领域中长期保持着超过半数的份额。Apache 服务器可以运
行在 Linux、UNIX、Windows 等多种操作系统平台中。
Apache 服务器是针对之前出现的若干个 Web 服务器程序进行整合、完善后形成的软
件,其名称来源于“A Patchy Server”,意思是“基于原有 Web 服务程序的代码进行修改(补
丁)后形成的服务器程序”。
1995 年, Apache 服务程序发布了 1.0 版本,之后一直由“Apache Group”负责该项目
的管理和维护;直到 1999 年,在“Apache Group”的基础上成立了 Apache 软件基金会
(Apache Software Foundation,ASF)。目前,Apache 项目一直由 ASF 负责管理和维护。
ASF 是非盈利性质的组织,最初只负责“Apache Web”服务器项目的管理,随着 Web
应用需求的不断扩大,ASF 逐渐增加了许多与 Web 技术相关的开源软件项目,因此 Apache
现在不仅仅代表着 Web 服务器,更广泛地代表着 ASF 管理的众多开源软件项目。ASF 基
金会的官方网站是 http://www.apache.org/。
“Apache HTTP Server”是 ASF 旗下著名的软件项目之一,其正式名称是“httpd”,也就
是历史上的 Apache 网站服务器。在后续内容中,若未作特殊说明,使用“Apache”或者“httpd”,
均指的是“Apache HTTP Server”。
1、开放源代码:这是 Apache 服务器的重要特性之一,也是其他特性的基础。
Apache 服务程序由全世界的众多开发者共同维护,并且任何人都可以自由使
用,这充分体现了开源软件的精神。
2、跨平台应用:这个特性得益于 Apache 的源代码开放。Apache 服务器可以运
行在绝大多数软硬件平台上,所有 UNIX 操作系统都可以运行 Apache 服务
器,甚至 Apache 服务器可以良好地运行在大多数 Windows 系统平台中。
Apache 服务器的跨平台特性使其具有被广泛应用的条件。
3、支持各种Web 编程语言:Apache服务器可支持的网页编程语言包括Perl、PHP、
Python、Java 等,甚至微软的 ASP 技术也可以在 Apache 服务器中使用。支
持各种常用的 Web 编程语言使 Apache 具有更广泛的应用领域。
4、模块化设计:Apache 并没有将所有的功能集中在单一的服务程序内部,而是
尽可能地通过标准的模块实现专有的功能,这为 Apache 服务器带来了良好的
扩展性。其他软件开发商可以编写标准的模块程序,从而添加 Apache 本身
并不具有的其他功能。
5、运行非常稳定:Apache 服务器可用于构建具有大负载访问量的 Web 站点,很
多知名的企业网站都使用 Apache 作为 Web 服务软件。
6、良好的安全性:Apache 服务器具有相对较好的安全性,这是开源软件共同具
有的特性。并且,Apache 的维护团队会及时对已发现的漏洞提供修补程序,
为 Apache 的所有使用者提供尽可能安全的服务器程序。
(1)搭建YUM仓库(前面博客有详写)
(2)为了避免发生端口冲突、程序冲突等现象,建议先卸载使用RPM方式安装的httpd
[root@localhost ~]# rpm -e httpd --nodeps
(1)解包
安装Apache所需软件
apr-1.6.2.tar.gz
apr-util-1.6.0.tar.gz
httpd-2.4.29.tar.gz
将上面3个包传到opt目录下
[root@localhost ~]# cd /opt
[root@localhost opt]# tar xf apr-1.6.2.tar.gz
[root@localhost opt]# tar xf apr-util-1.6.0.tar.gz
[root@localhost opt]# tar xf httpd-2.4.29.tar.bz2
[root@localhost opt]# mv apr-1.6.2 httpd-2.4.29/srclib/apr
[root@localhost opt]# mv apr-util-1.6.0 httpd-2.4.29/srclib/apr-util
安装环境
[root@localhost opt]# yum -y install \
gcc \
gcc-c++ \
make \
pcre-devel \
expat-devel \
perl
(2)配置
[root@localhost opt]# cd /opt/httpd-2.4.29/
[root@localhost httpd-2.4.29]# ./configure \
--prefix=/usr/local/httpd \
--enable-so \
--enable-rewrite \
--enable-charset-lite \
--enable-cgi
配置模块解释
–prefix:指定将 httpd 服务程序安装到哪个目录下,如/usr/local/httpd
–enable-so:启用动态加载模块支持,使 httpd 具备进一步扩展功能的能力。
–enable-rewrite:启用网页地址重写功能,用于网站优化及目录迁移维护。
–enable-charset-lite:启动字符集支持,以便支持使用各种字符集编码的网
–enable-cgi:启用 CGI 脚本程序支持,便于扩展网站的应用访问能力。
(3)编译及安装
[root@localhost httpd-2.4.29]# make && make install
[root@localhost httpd-2.4.29]# ln -s /usr/local/httpd/conf/httpd.conf /etc/
[root@localhost httpd-2.4.29]# ln -s /usr/local/httpd/bin/* /usr/local/bin/
在/lib/systemd/system/目录下,建立一个以.service 结尾的单元(unit)配置文件,
用于控制由 systemd 管理或监控的 httpd 服务
[root@localhost ~]# cd /lib/systemd/system/
[root@localhost system]# vim httpd.service
[Unit]
Description=The Apache HTTP Server
After=network.target
[Service]
Type=forking
PIDFile=/usr/local/httpd/logs/httpd.pid
ExecStart= /usr/local/bin/apachectl $OPTIONS
ExecrReload= /bin/kill -HUP $MAINPID
[Install]
WantedBy=multi-user.target
[root@localhost system]# systemctl start httpd.service
[root@localhost system]# systemctl enable httpd.service
[root@localhost system]# systemctl is-enabled httpd.service
MySQL是一种开放源代码的关系型数据库管理系统(RDBMS),使用最常用的数据库管理语言–结构化查询语言(SQL)进行数据库管理。
MySQL是开放源代码的,因此任何人都可以在General Public License的许可下下载并根据个性化的需要对其进行修改。
MySQL是一个真正的多线程,多用户的SQL数据库服务,凭借其速度、可靠性和适应性而备受关注。大多数人都认为在不需要事务化处理的情况下,MySQL是管理内容最好的选择。
[root@localhost ~]# yum install ncurses-devel autoconf cmake -y
[root@localhost ~]# useradd -s /sbin/nologin mysql
上传mysql-boost-5.7.20.tar.gz到opt目录下
[root@localhost ~]# cd /opt
[root@localhost ~]# tar xf mysql-boost-5.7.20.tar.gz
[root@localhost ~]# cd /opt/mysql-5.7.20/
[root@localhost mysql-5.7.20]# cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \
-DSYSCONFDIR=/etc \
-DSYSTEMD_PID_DIR=/usr/local/mysql \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \
-DMYSQL_DATADIR=/usr/local/mysql/data \
-DWITH_BOOST=boost \
-DWITH_SYSTEMD=1
配置选项含义
1、DCMAKE_INSTALL_PREFIX:指定将 mysql 数据库程序安装到某目录下,
如目录/usr/local/ mysql。
2、DSYSCONFDIR:指定初始化参数文件目录
3、DDEFAULT_CHARSET:指定默认使用的字符集编码,如 utf8。
4、DDEFAULT_COLLATION:指定默认使用的字符集校对规则,utf8_general_ci
是适用于 UTF-8 字符集的通用规则。
5、DWITH_EXTRA_CHARSETS:指定额外支持的其他字符集编码。
[root@localhost mysql-5.7.20]# make && make install
[root@localhost ~]# chown -R mysql:mysql /usr/local/mysql/
[root@localhost ~]# vi /etc/my.cnf
[client]
port = 3306
default-character-set=utf8
socket = /usr/local/mysql/mysql.sock
[mysql]
port = 3306
default-character-set=utf8
socket = /usr/local/mysql/mysql.sock
[mysqld]
user = mysql
basedir = /usr/local/mysql
datadir = /usr/local/mysql/data
port = 3306
character_set_server=utf8
pid-file = /usr/local/mysql/mysqld.pid
socket = /usr/local/mysql/mysql.sock
server-id = 1
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_AUTO_VALUE_ON_ZERO,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,PIPES_AS_CONCAT,ANSI_QUOTES
[root@localhost ~]# echo 'PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH' >> /etc/profile
[root@localhost ~]# echo 'export PATH' >> /etc/profile
[root@localhost ~]# source /etc/profile
[root@localhost ~]# cd /usr/local/mysql/
[root@localhost mysql]# bin/mysqld \
--initialize-insecure \
--user=mysql \
--basedir=/usr/local/mysql \
--datadir=/usr/local/mysql/data
[root@localhost mysql]# cp usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system/
[root@localhost mysql]# systemctl enable mysqld
[root@localhost mysql]# systemctl start mysqld
[root@localhost mysql]# mysqladmin -u root -p password "123456" '//给root用户设置密码'
'//mysqladmin -u用户名 -p旧密码 password 新密码'
Enter password: '//原本密码为空,直接回车即可'
Warning: Using a password on the command line interface can be insecure.
[root@localhost mysql]# mysql -u root -p
Enter password: '//输入刚设置的密码123456'
...省略内容
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| test |
+--------------------+
4 rows in set (0.00 sec)
mysql> exit
Bye
PHP即“超文本预处理器”,是一种通用开源脚本语言。PHP是在服务器端执行的脚本语言,与C语言类似,是常用的网站编程语言。PHP独特的语法混合了C、Java、Perl以及 PHP 自创的语法。利于学习,使用广泛,主要适用于Web开发领域
PHP支持绝大多数流行的数据库,在数据库层面的操作功能十分强大,而且能够支持Unix,Windows,Linux等多种操作系统
[root@localhost ~]# yum -y install \
libjpeg \
libjpeg-devel \
libpng libpng-devel \
freetype freetype-devel \
libxml2 \
libxml2-devel \
zlib zlib-devel \
curl curl-devel \
openssl openssl-devel
上传php-7.1.10.tar.bz2包到opt目录下
[root@localhost ~]# cd /opt
[root@localhost opt]# tar xjvf php-7.1.10.tar.bz2
[root@localhost php-7.1.10]# ./configure \
--prefix=/usr/local/php \
--with-apxs2=/usr/local/httpd/bin/apxs \
--with-mysql-sock=/usr/local/mysql/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@localhost php-7.1.10]# make && make install
[root@localhost php-7.1.10]# cp php.ini-development /usr/local/php/lib/php.ini
[root@localhost php-7.1.10]# vi /usr/local/php/lib/php.ini
mysqli.default_socket = /usr/local/mysql/mysql.sock
date.timezone = Asia/Shanghai
/usr/local/php/bin/php -m //验证安装的模块
vi /etc/httpd.conf //在合适位置新增
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
DirectoryIndex index.php index.html
[root@localhost ~]# rm -f /usr/local/httpd/htdocs/index.html
[root@localhost ~]# vi /usr/local/httpd/htdocs/index.php
<?php
phpinfo();
?>
[root@localhost ~]# systemctl restart httpd
[root@localhost ~]# mysql -u root -p
mysql> CREATE DATABASE myadm;
mysql> GRANT all ON myadm.* TO 'myadm'@'%' IDENTIFIED BY 'admin123';
mysql> GRANT all ON myadm.* TO 'myadm'@'localhost' IDENTIFIED BY 'admin123';
mysql> flush privileges;
mysql> exit
[root@localhost ~]# vi /usr/local/httpd/htdocs/index.php
<?php
$link=mysqli_connect('20.0.0.23','myadm','admin123');
if($link) echo "Success!!
";
else echo "Fail!!";
?>
phpMyAdmin是一个使用PHP语言编写,用来管理MySQL数据库的Web应用系统。通过该套件的网页界面,几遍是对SQL语句不太熟悉的人,也能够非常容易的对MySQL数据库进行管理和维护。
上传phpMyAdmin-4.7.6-all-languages.zip到opt下面
[root@localhost ~]# cd /opt
[root@localhost opt]# unzip phpMyAdmin-4.7.6-all-languages.zip -d /opt/
[root@localhost opt]# mv phpMyAdmin-4.7.6-all-languages /usr/local/httpd/htdocs/myadm
[root@localhost opt]# cd /usr/local/httpd/htdocs/myadm
[root@localhost myadm]# cp config.sample.inc.php config.inc.php
[root@localhost myadm]# vi config.inc.php
$cfg['Servers'][$i]['host'] = '127.0.0.1'; //把localhost 改成IP 31行
使用phpMyAdmin 系统时,应先通过MySQL服务器中授权的数据库用户进行登录(如我们这次的就是用户root,密码123456),认证成功后可以看到管理界面,
选择指定库中的表,可以分别进行浏览数据、修改表结构、搜索数据、插入数据等操作
单击右侧的“SQL”标签,可以打开SQL查询窗口。在该窗口中,可以直接输入MySQL操作语句,并通过单击右下方的“执行”按钮来完成相应的管理任务。