• 首页

  • 分类&标签

  • 归档

  • 手册

  • 项目池

  • 友链

  • 关于
伯 乐 讲 堂
伯 乐 讲 堂

查看「系列思维导图」

侠客 · Mr.潘

获取中...

10
25
企业级系统环境

第 6 节 源码版的LAMP环境部署

发表于 2020-10-25 • 企业级系统环境 • 被 944 人看爆

目标:基于 CentOS 7.8 + Apache 2.4 + PHP 7.2 + MySQL 5.7 运行环境部署个人博客。

1. Typecho博客上云

此处,博主选择的是 Typecho博客,运行环境要求:

  • Apache 2.4.46 源码安装
  • MySQL 5.7.32 编译版安装
  • PHP 7.2 源码安装

PHP 必要扩展:curl, mbstring, iconv, mysql

2. Apache

Apache HTTP Server(简称 Apache)是 Apache 软件基金会的一个开放源码的网页服务器,可以在大多数计算机操作系统中运行,由于其多平台和安全性被广泛使用,是最流行的 Web 服务器端软件之一。它快速、可靠并且可通过简单的 API 扩展,将Perl/Python等解释器编译到服务器中。

Web server market share

申明:本图来源于 Netcraft 发布的 October 2020 Web Server Survey,在2020年10月的调查中,我们收到了来自 1,205,797,275 个网站的响应,涉及 264,098,084 个独特域名和 10,449,223 台面向网络的电脑。这反映了 950 万个主机名和 111,000 台计算机的增加。

2.1 Apache 安装

# 1. 源码下载
cd ~
wget https://mirror.bit.edu.cn/apache//httpd/httpd-2.4.46.tar.gz

# 2. 解压
tar -xzf ~/httpd-2.4.46.tar.gz

# 3. 配置、编译、安装:请参照 httpd 官方手册
#   3.1 根据配置、编译、安装提示解决 或者 根据官方手册的 Requirements 完成前置需求(推荐)
#   1). Disk Space

#   2). ANSI-C Compiler and Build System
yum -y install gcc gcc-c++

#   3). APR and APR-Util
wget https://mirrors.tuna.tsinghua.edu.cn/apache//apr/apr-1.7.0.tar.gz \
	https://mirrors.tuna.tsinghua.edu.cn/apache//apr/apr-util-1.6.1.tar.gz
tar -xzf apr-1.7.0.tar.gz ; cd ./apr-1.7.0
./configure --prefix=/usr/local/apr
make && make install

cd ~
tar -xzf apr-util-1.6.1.tar.gz ; cd ./apr-util-1.6.1
./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr
# 如果编译或安装失败,查找失败原因,基本都是缺少依赖库,安装后 make clean 再次编译、安装
yum install expat-devel -y
make clean && make && make install

#   4). Perl-Compatible Regular Expressions Library (PCRE)
cd ~
wget https://ftp.pcre.org/pub/pcre/pcre-8.44.tar.gz
tar -xzf pcre-8.44.tar.gz && cd pcre-8.44
./configure --prefix=/usr/local/pcre
make && make install

#   5). Accurate time keeping
yum -y install ntpdate

cat >>/etc/resolv.conf<<EOF
nameserver 8.8.8.8
EOF

ntpdate  time.stdtime.gov.tw

#   6). Perl 5 [OPTIONAL]

#   3.2 配置
cd ~/httpd-2.4.46
./configure --prefix=/usr/local/httpd --with-apr=/usr/local/apr \
    --with-apr-util=/usr/local/apr-util \
    --with-pcre=/usr/local/pcre \
    --enable-so

#   3.3 编译、安装
make && make install

# 4. 管理 httpd 服务
/usr/local/httpd/bin/apachectl -k start
/usr/local/httpd/bin/apachectl -k stop
/usr/local/httpd/bin/apachectl -k restart

image.png

2.2 防火墙、安全组配置

  • 如果是本机或虚拟机环境的 CentOS 仅需配置防火墙即可
# 防火墙配置
systemctl restart firewalld.service
firewall-cmd --permanent --add-port=80/tcp
firewall-cmd --reload
  • 云服务中需要配置安全组

image.png

2.3 访问测试

打开浏览器,输入您的服务器的 IP(公网) 地址进行

image.png

3. PHP

PHP(全称:PHP:Hypertext Preprocessor,即“PHP:超文本预处理器”)是一种开源的通用计算机脚本语言,尤其适用于网络开发并可嵌入 HTML 中使用。PHP 的语法借鉴吸收 C 语言、Java 和 Perl 等流行计算机语言的特点,易于一般程序员学习。PHP 的主要目标是允许网络开发人员快速编写动态页面,但 PHP 也被用于其他很多领域。

PHP 最初是由勒多夫在1995年开始开发的;现在 PHP 的标准由 the PHP Group 维护。PHP 以 PHP License 作为许可协议,不过因为这个协议限制了 PHP 名称的使用,所以和开放源代码许可协议GPL 不兼容。

PHP 的应用范围相当广泛,尤其是在网页程序的开发上。一般来说PHP大多运行在网页服务器上,透过运行 PHP 代码来产生用户浏览的网页。PHP 可以在多数的服务器和操作系统上运行。根据 w3techs 官方显示,78.7%网站的服务器端编程语言使用 PHP ,其次是 ASP.NET占比10.5%,第三是 Java 占比3.5%,Python 则排名在第七占比1.4%。

image.png

# 1. 源码下载
cd ~
wget http://mirrors.sohu.com/php/php-7.2.34.tar.gz

# 2. 解压
tar -xzf php-7.2.34.tar.gz && cd php-7.2.34

# 3. 配置、编译、安装:请参照 php 官方手册
#   3.1 预先考虑待部署项目的环境要求,Web服务器,所需的 PHP 模块
#   3.2 配置、编译、安装
./configure --prefix=/usr/local/php --with-apxs2=/usr/local/httpd/bin/apxs --enable-mysqlnd --with-mysqli --with-pdo-mysql --enable-mbstring --with-curl --with-iconv-dir

#  3.3 继续执行 3.2 的操作,根据错误提示,陆续需要安装的前置软件包
yum -y install libxml2-devel libcurl-devel

#  3.4 继续执行 3.2 的操作,完成 PHP 的源码安装
./configure --prefix=/usr/local/php --with-apxs2=/usr/local/apache2/bin/apxs --enable-mysqlnd --with-mysqli --with-pdo-mysql --enable-mbstring --with-curl --with-iconv-dir

#   3.5 编译、安装
make && make install

参考:

  • PHP: Unix 系统下的 Apache 2.x

4. LAP

  • Apache 源码安装完毕
  • PHP 7.2 源码安装完成
  • 测试 Apache 与 PHP 集成
# 1. 在编译 PHP 时,就应该考虑用于解析 PHP 请求的 Web服务器所需的模块,所以此步见 PHP 安装节

# 2. 修改 apache 相关配置,使其能够解析 PHP 请求
cat >/usr/local/httpd/conf/extra/php.conf<<EOF
<FilesMatch \.php$>
    SetHandler application/x-httpd-php
</FilesMatch>
EOF

cat>>/usr/local/httpd/conf/httpd.conf<<EOF
Include conf/extra/php.conf
EOF

# 3. 重启 apache 服务
/usr/local/httpd/bin/apachectl -k restart

# 3. 添加 PHP 测试页
cat > /usr/local/httpd/htdocs/index.php<<EOF
<?php
    phpinfo();
EOF

# 4. 在浏览器访问 index.php 测试页

image.png

5. MySQL

MySQL 原本是一个开放源码的关系数据库管理系统,原开发者为瑞典的 MySQL AB 公司,该公司于2008年被昇阳微系统(Sun Microsystems)收购。2009年,甲骨文公司(Oracle)收购昇阳微系统公司,MySQL 成为 Oracle 旗下产品。

MySQL 在过去由于性能高、成本低、可靠性好,已经成为最流行的开源数据库,因此被广泛地应用在 Internet 上的中小型网站中。随着 MySQL 的不断成熟,它也逐渐用于更多大规模网站和应用,比如维基百科、Google 和 Facebook 等网站。非常流行的开源软件组合 LAMP 中的“M”指的就是 MySQL。

但被甲骨文公司收购后,Oracle 大幅调涨 MySQL 商业版的售价,且甲骨文公司不再支持另一个自由软件项目 OpenSolaris 的发展,因此导致自由软件社区们对于 Oracle 是否还会持续支持 MySQL 社区版(MySQL之中唯一的免费版本)有所隐忧,MySQL 的创始人麦克尔·维德纽斯以 MySQL 为基础,成立分支计划 MariaDB。而原先一些使用 MySQL 的开源软件逐渐转向 MariaDB 或其它的数据库。例如维基百科已于2013年正式宣布将从 MySQL 迁移到 MariaDB 数据库。

申明:由于 MySQL 的开源软件转向 MariaDB,所以 CentOS 7.x 版本的系统中不再内置 MySQL 数据库,取而代之的是 MariaDB(MySQL 5.5.65)。

1. 转至 MySQL 官网,寻找需要的 MySQL(MySQL Community 5.7.x)使用手册

image.png

image.png

2. 下载所需的 MySQL 已编译后的包

image.png

# 2. MySQL 官方的下载速度太慢,此处我选择使用了 清华大学的镜像源下载
cd
wget https://mirror.tuna.tsinghua.edu.cn/mysql/downloads/MySQL-5.7/mysql-5.7.32-linux-glibc2.12-x86_64.tar.gz

# 3. 解压至 /opt 目录下
tar -xzf mysql-5.7.32-linux-glibc2.12-x86_64.tar.gz -C /opt

# 4. 为 /opt/mysql-5.7.32-linux-glibc2.12-x86_64 创建一个位于 /usr/local/mysql 的软件链接
ln -s /opt/mysql-5.7.32-linux-glibc2.12-x86_64 /usr/local/mysql

# 5. mysql用户相关设置
groupadd mysql
useradd -r -g mysql -s /bin/false mysql

# 6. 确认 mysql 的配置文件 /etc/my.cnf , 内容如下
[mysql]
socket=/var/lib/mysql/mysql.sock

[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock

[mysqld_safe]
log-error=/var/log/mysql/mysqld.log
pid-file=/var/run/mysql/mysql.pid

# include all files from the config directory
!includedir /etc/my.cnf.d


# 7. 初始化数据库,启动数据库
bin/mysqld --initialize --user=mysql
bin/mysql_ssl_rsa_setup

# 7. 将 mysql 添加为系统服务
cat>/etc/systemd/system/mysqld.service<<EOF
[Unit]
Description=MySQL Server 5.7
Documentation=https://dev.mysql.com/doc/refman/5.7/en/using-systemd.html
After=network.target
After=syslog.target
[Install]
WantedBy=multi-user.target
[Service]
User=mysql
Group=mysql
ExecStart=/usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf
LimitNOFILE = 5000
EOF

# 8. 启动 mysql 数据库
systemctl start mysqld

# 9. 登录测试
bin/mysql -uroot -p

# 10. 为了数据库安全,建议重新设置 MySQL 用户密码

image.png

10. 为了方便使用 mysql 相关命令,将 /usr/local/mysql/bin 添加至 环境变量 PATH 中

image.png

# 将更改的文件生效
. ~/.bash_profile

参考:

  • MySQL YUM 安装手册
  • Managing MySQL Server with systemd

6. LAMP

LAMP 是指一组通常一起使用来运行动态网站或者服务器的自由软件名称首字母缩写:

  • Linux,操作系统
  • Apache,网页服务器
  • MySQL,数据库管理系统(或者数据库服务器)
  • PHP,脚本语言

各独立程序都已准备就绪,接下来根据需要部署的项目详细需求,做必要的调整即可。

  • 运行环境准备
# 1. 检查 PHP 已安装模块并安装 Typeecho博客 中必要的 PHP 扩展模块
/usr/local/php/bin/php -m

# 3. 将 Typecho博客部署至 /usr/local/httpd/htdocs 中
cd /usr/local/httpd/htdocs
wget -O ~/typecho.tar.gz http://typecho.org/downloads/1.1-17.10.30-release.tar.gz
tar -xzf ~/typecho.tar.gz -C ./
mv -f ./build/* ./ && rm -rf ./build

# 4. 设置站点文件访问权限(运行 httpd 服务的用户身份)
ps -ef | grep httpd
chown -R daemon:daemon ./*

image.png

  • 浏览器访问服务器,进入Typecho博客安装向导页

image.png

  • 创建typecho数据库
CREATE DATABASE IF NOT EXISTS typecho DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
  • 安装成功

image.png

image.png

至此,一个属于你的个人博客就搭建完毕了,行动吧,在互联网的世界里,留下你的足迹。

标题:第 6 节 源码版的LAMP环境部署
作者:侠客 · Mr.潘

读后有收获可以支付宝请作者喝咖啡,读后有疑问请加在下微信(pansfy)讨论:

第 6 节 性能测试监控平台TIGTICK栈
第 5 节 yum 版的 LNMP 环境部署
侠客 · Mr.潘

侠客 · Mr.潘

未来的你,会感谢今天仍正在奋斗的你

Github QQ Email RSS
看爆 Top10
  • 助力项目池 3,538次看爆
  • 第 4 节 yum 版的 LAMP 环境部署 2,535次看爆
  • 你的生产力工具集成就高效人士 1,880次看爆
  • 第 5 节 yum 版的 LNMP 环境部署 1,676次看爆
  • 第 3 节 企业级系统环境之上云篇 1,387次看爆
  • 服务端的架构的演进之路 1,284次看爆
  • 第 1 节 Docker 实践 1,190次看爆
  • 镜像仓库一文打尽 982次看爆
  • Docker本地私有镜像仓库Harbor搭建及配置 980次看爆
  • 第 6 节 源码版的LAMP环境部署 945次看爆

Copyright © 2023 侠客 · Mr.潘 · 苏ICP备19067937号

Proudly published with Halo · Theme by fyang · 站点地图