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

1. Typecho博客上云

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

  • Nginx 1.18.0
  • MySQL 5.7
  • PHP >= 5.4【推荐版本7.2】

PHP 必要扩展:curl, mbstring, iconv, mysql, php-fpm

2. Nginx

Nginx(发音同“engine X”)是异步框架的网页服务器,也可以用作反向代理、负载平衡器和 HTTP 缓存。该软件由伊戈尔·赛索耶夫创建并于2004年首次公开发布。2011年成立同名公司以提供支持。2019年3月11日,Nginx 公司被 F5 Networks 以6.7亿美元收购。

根据 Netcraft 在2016年11月网络服务器调查,Nginx 被发现是所有“活跃”站点(被调查站点的18.22%)和百万最繁忙站点(被调查站点的27.83%)中使用次数最多的 Web 服务器。根据 W3Techs 的数据,前100万个网站中的37.7%,前10万个网站中的49.7%,以及前10000个网站中的57.0%被使用。据 BuiltWith 统计,在全球前10000个网站中,有38.2%的网站使用 Nginx。维基百科使用 Nginx 作为其 SSL 终端代理。从OpenBSD 5.2版本(2012年11月1日)开始,Nginx 成为了 OpenBSD 基础系统的一部分,提供了替代Apache 1.3系统的替代方案,但是后来被替换为 OpenBSD 自己的 httpd。

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 Nginx 安装

CentOS 的 yum 源中并未集成 Nginx,我们需要到 Nginx 官网寻找,Nginx 提供了 yum 和源码两种安装方式,此处我们使用 yum 方式安装。

# 1. 配置 yum 源:
yum -y install yum-utils

vi /etc/yum.repos.d/nginx.repo

# 将如下内容添加进 /etc/yum.repos.d/nginx.repo 文件中
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

[nginx-mainline]
name=nginx mainline repo
baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

# 2. 安装 nginx 的 stable 版本
yum -y install nginx

# 3. 管理 nginx 服务
#   3.1 启动
systemctl start nginx
#   3.2 停止
systemctl stop nginx
#   3.3 重启
systemctl restart nginx
#   3.4 状态
systemctl status nginx

参考:

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. 检查 yum 仓库的 php 版本及安装状态
yum info php

image.png

申明:默认 CentOS 7.x 的 yum 仓库中的软件包版本一般都比较陈旧,此处显示出 PHP 的版本为 5.4.16。

# 2. 寻找第三方的 PHP 安装源
#   2.1 EPEL 源:EPEL(Extra Packages for Enterprise Linux)是由Fedora Special Interest Group维护的Enterprise Linux(RHEL、CentOS)中经 常用到的包,一般的云服务器上已配置该 epel 源。
wget -O /etc/yum.repos.d/Aliyun-epel.repo http://mirrors.aliyun.com/repo/epel-7.repo

#   2.2 Remi 源:Remi 源大家或许很少听说, 但是我们强烈推荐, 尤其对于不想编译最新版的 linux 使用者, 因为 Remi 源中的软件几乎都是最新稳定版。
yum -y install https://rpms.remirepo.net/enterprise/remi-release-7.rpm
yum -y install yum-utils
yum-config-manager --disable 'remi-php*'
yum-config-manager --enable   remi-php72

# 3. 检查 PHP 源安装情况
yum repolist all | grep php

# 4. 安装 PHP 7.2
yum -y install php

# 5. 检查 PHP 安装情况
php -v
php -m

参考

4. LNP

  • Nginx 已正常使用
  • PHP 7.2 安装完成
  • 进行 Nginx 与 PHP 集成

Nginx 本身并不会对 PHP 文件进行解析。对 PHP 页面的请求将会被 Nginx 交给 FastCGI 进程监听的 IP 地址及端口,由 php-fpm(第三方的 fastcgi 进程管理器)作为动态解析服务器处理,最后将处理结果再返回给 Nginx。即 Nginx 通过反向代理功能将动态请求转向后端 php-fpm,从而实现对 PHP 的解析支持。

# 1. 安装 PHP 的扩展模块,PHP-FPM
yum -y install php-fpm

# 2. 启动 php-fpm 服务
systemctl start php-fpm

# 3. 修改 Nginx 配置,使其将 PHP 的请求转发至 PHP-FPM
vi /etc/nginx/conf.d/default.conf

# 将如下配置
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
#location ~ \.php$ {
#    root           html;
#    fastcgi_pass   127.0.0.1:9000;
#    fastcgi_index  index.php;
#    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
#    include        fastcgi_params;
#}

# 修改为
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
location ~ \.php(.*)$ {
    root           /usr/share/nginx/html;
    fastcgi_pass   127.0.0.1:9000;
    fastcgi_index  index.php;
    fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
    include        fastcgi_params;
}

# 4. 重启 Nginx 服务
systemctl restart nginx

# 4. 添加 PHP 测试页
cat > /usr/share/nginx/html/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)

# 2. 根据系统安装对应的 MySQL YUM 源 
yum -y localinstall https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm

# 3. YUM 源中默认启用的是 MySQL 8.0 版本,需要做如下设置
yum repolist all | grep mysql
yum-config-manager --disable mysql80-community
yum-config-manager --enable mysql57-community

# 4. 确认 MySQL 软件包的名称
yum search mysql | grep ^mysql
yum info mysql-community-server

# 5. 安装
yum -y install mysql-community-server

# 6. 启动 MySQL 数据库
systemctl start mysqld

# 7. 重新设置 MySQL 中 root 的密码
#   7.1 MySQL 生成的临时密码查看
grep "temporary password" /var/log/mysqld.log

#   7.2 设置密码
mysqladmin -uroot -p password

# 8. 登录测试
mysql -uroot -p

image.png

参考

6. LNMP

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

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

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

  • 运行环境准备
# 1. 检查 PHP 已安装模块并安装 Typeecho博客 中必要的 PHP 扩展模块
php -m
yum -y install php-mysqlnd php-mbstring

# 2. 重启 PHP-FPM 服务
systemctl restart php-fpm

# 3. 将 Typecho博客部署至 /usr/share/nginx/html 中
cd /usr/share/nginx/html

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. 设置站点文件访问权限(运行 php-fpm 服务的用户身份)
ps -ef | grep php-fpm
chown -R apache:apache ./*

image.png

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

image.png

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

image.png

image.png

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