Ubuntu 20.04 使用 apt/PPA 搭建 LNMP + Redis 建站环境记录

御卓
·
·
最初发布于 ocean.zhuo.one

上个月给VPS重装了系统,研究了关于LNMP环境的搭建,通过apt/PPA的方式安装了LNMP + Redis建站环境,顺便写成文章记录一下,作为一篇备忘笔记。

这篇文章记录了使用apt/PPA的方式,在Ubuntu 20.04的VPS上安装Nginx + MariaDB + PHP 8.0 + Composer + Redis生产建站环境。

相比各种一键方案,这种安装方式的灵活性更高,也不需要漫长的编译等待时间。

为了防止网络中断导致的安装失败,请使用 screen -S 命令创建安装窗口,使用 [Ctrl + A] + [D] 快捷键可以离开窗口,使用 screen -x 可以进入先前的窗口。

aptitude和apt-fast安装

为了配置好软件包的安装依赖、加速apt安装,我推荐使用aptitude和apt-fast两个实用工具,两者都是可选项,下文也不一定都使用aptitude命令安装。如果你使用的是国内的服务器,可能需要配置其他的mirror仓库镜像。

aptitude

aptitude 是一个增强版的apt软件包管理工具,最大的特点是对于软件包的依赖处理相比自带的apt-get更优、更干净,同时提供了可视化命令行界面查看软件包、依赖。

aptitude安装很简单,只需输入 sudo apt-get install aptitude 就可以安装了。使用 sudo aptitude install [软件名称] 即可安装软件,关于aptitude的具体使用说明,本文由于篇幅限制这里不再阐述。

apt-fast

apt-fast 是一个用于加速 apt/apt-get/aptitude 的加速工具,它基于著名的aria2下载工具,通过增加多线程、分片下载等aria2方式,达到加速下载的目的,推荐使用。

添加apt-fast的PPA源,然后更新一下并安装(这里其实可以使用aptitude安装)

sudo add-apt-repository ppa:apt-fast/stable
sudo apt-get update
sudo apt-get install apt-fast

之后终端会弹出一个界面,让你选择默认的加速配置,可以选择 apt/apt-get/aptitude ,这里我前面安装了 因此选择aptitude。

使用 apt-fast install 也可以直接加速安装。如果要重新配置加速选项,可以使用这个命令: sudo dpkg-reconfigure apt-fast

番外:使用 apt-get show [软件名称] 可以查看该软件包诸如版本之类的详细信息,在接下来使用PPA安装软件环境时会非常有用,建议每次安装前先 show 一下默认是不是最新版本。

Nginx

Nginx的安装方式较为简单,可参考这篇官方文档: https://www.nginx.com/resources/wiki/start/topics/tutorials/install/

编辑 /etc/apt/sources.list 文件,添加以下仓库源 :

deb https://nginx.org/packages/ubuntu/ focal nginx
deb-src https://nginx.org/packages/ubuntu/ focal nginx

然后用apt安装:

sudo apt update
sudo apt install nginx
sudo systemctl start nginx

注:如果在 apt update 时遇到公钥问题(NO_PUBKEY ,在后面还会显示公钥ID的字符串),需要再配置一下公钥:

sudo apt install gnupg
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 公钥ID

默认配置

为了防止跨站错误、被恶意解析的问题,需要配置一下Nginx的默认主机的default conf文件,对纯IP的访问请求返回444,相当于直接切断访问请求。

先生成自签名证书,用于配置https 443端口的访问(注:新版Nginx已经不接受1024位的RSA证书,需更改为2048位)

openssl genrsa -out server.key 2048
openssl req -new -key server.key -out server.csr
openssl x509 -req -in server.csr -out server.crt -signkey server.key -days 3650

然后打开default conf配置文件(默认其实并没有conf后缀名): nano /etc/nginx/sites-enabled/default ,我这里使用的是nano,可以换成任何一种编辑器。

default 配置文件如下:(将下方证书文件地址替换为实际地址)

server {
	listen 80 default_server;
	listen [::]:80 default_server;

	listen 443 ssl default_server;
	listen [::]:443 ssl default_server;

    ssl_certificate       [自签名证书文件];
    ssl_certificate_key   [自签名证书密钥];

	server_name _;

	location / {
		return 444;
	}

}

使用 nginx -t 命令测试一下配置文件,然后使用 nginx -s reload 命令重启

MariaDB

MariaDB是一个流行的MySQL社区替代品,其特点本文不再阐述。部分应用(如Ghost)只能兼容MariaDB,而不支持Oracle推出的MySQL 8.0版本,因此请安装MariaDB作为数据库。默认的仓库提供的是MariaDB 10.3版本。

sudo apt update
sudo apt install mariadb-server

按照惯例,配置一下安全选项

sudo mysql_secure_installation

输入mysql进入MariaDB命令行,将登陆方式改为mysql_native_password,方可通过应用程序连接

UPDATE mysql.user SET authentication_string = PASSWORD('数据库密码'), plugin = 'mysql_native_password' WHERE User = 'root' AND Host = 'localhost';

PHP 8.0

先添加Ondrej的PHP PPA源,这个PPA源维护着最新的PHP版本。此外Ondrej还有Nginx等软件的PPA源。

科普一下:这个PPA是由Ondřej Surý维护,他是一位 Debian 开发人员,自 PHP 5 以来一直为 Debian 打包 PHP。具体参见 这个回答 ,可放心使用

sudo apt install software-properties-common
sudo add-apt-repository ppa:ondrej/php

然后使用apt安装php-fpm,默认安装的是最新的 PHP 8.1 版本,使用 apt-get install php8.0-fpm 安装 PHP 8.0 版本的 FPM,之后使用apt安装PHP插件,也需要使用 php8.0-* 开头的安装。

使用 php -v 测试一下版本号, php -m 查看安装的插件。

安装PHP扩展模块

sudo aptitude install php8.0-bcmath php8.0-common php8.0-cli php8.0-curl php8.0-gd php8.0-igbinary php8.0-imagick php8.0-imap php8.0-mbstring php8.0-memcached php8.0-mysql php8.0-opcache php8.0-readline php8.0-redis php8.0-xml php8.0-xmlrpc php8.0-zip php8.0-zstd

具体需要安装的扩展模块,根据所需使用的业务应用选择。所有可安装的扩展与版本可以使用 apt show 查看,比如上文未列出的 php8.0-pgsql 就是可选项,日后我会单独发布关于PostgreSQL的安装记录。

如果在安装后忘记了自己通过apt安装过的模块扩展,可以使用aptitude查看。

另外,Nginx环境下不需要单独安装 PHP CGI 模块。

Composer

Composer是一个PHP包管理器,类似于Nodejs的NPM,Composer可以自动配置好PHP程序的依赖,在安装Flarum、Lychee之类的大型PHP程序需要用到。

下载安装脚本

php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php -r "if (hash_file('sha384', 'composer-setup.php') === '55ce33d7678c5a611085589f1f3ddf8b3c52d662cd01d4ba75c0ee0459970c2200a51f492d557530c71c15d8dba01eae') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
php composer-setup.php
php -r "unlink('composer-setup.php');"

移动至全局安装

sudo mv composer.phar /usr/local/bin/composer

参考:https://getcomposer.org/download/

Redis

目前Redis已经有一个官方的apt仓库,包含最新版的Redis 7.0,我这里采用了Redis的 官方文档 中的安装方式,只需要添加下仓库就可以安装了。

curl -fsSL https://packages.redis.io/gpg | sudo gpg --dearmor -o /usr/share/keyrings/redis-archive-keyring.gpg

echo "deb [signed-by=/usr/share/keyrings/redis-archive-keyring.gpg] https://packages.redis.io/deb $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/redis.list

sudo apt-get update
sudo apt-get install redis

然后使用 redis-cli 测试一下,成功运行。

如果要设置授权密码(类似Token),可使用 config set requirepass [密码] 命令设置。

Redis的授权密码推荐设置为20位以上。考虑到一些明文存储密码的应用可能不识别特殊字符,这里我使用 makepasswd --chars 20 随机生成一个20位的大小写字母+数字的混合密码。

评论
社区准则 博客 联系 反馈 状态
主题