Ubuntu 20.04 使用 apt/PPA 搭建 LNMP + Redis 建站环境记录
上个月给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/
先加源:
sudo deb https://nginx.org/packages/ubuntu/ focal nginx
sudo deb-src https://nginx.org/packages/ubuntu/ focal nginx
然后用apt安装:
sudo apt update
sudo apt install nginx
sudo systemctl start nginx
默认配置
为了防止跨站错误、被恶意解析的问题,需要配置一下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位的大小写字母+数字的混合密码。