Ubuntu 18.04 快速配置 LNMP 笔记

目前这台 VPS 是运行在日本 IDCF 的最低配的 VPS , CN2 线路,虽然有时候会抽,但是最低延迟只有 30ms 左右,应该是日本这边我能买到的连国内最快的了。但是配置有多低呢,低到 RAM 只有 0.8 GB, 1CPU 0.8Ghz 。本来打算运行 CentOS 7.4 然后用 LNMP一键安装包直接编译安装的,无奈在 SSH 里头这个自动编译脚本跑了 30 分钟,竟然只到了编译 MySQL 步骤,而且只编译了 30% …

这速度,编译完一份我这超长八天的五一黄金周都要过去了…经过 Coxxs 提醒,想起来 Debian 和 Ubuntu 是有“新立得软件包管理器(apt)”的,这样就可以直接安装了,效率巨高,只要软件源有已经编译好的我们需要的软件,直接就可以下载自动安装,十分方便。而且之前其实我主要就是用 Ubuntu 和 CentOS , Ubuntu 也用过很久比较熟悉了,趁着新开的 VPS 没装东西,遂直接更换 Ubuntu 系统。

因为 Ubuntu 18.04 LTS刚发布也就两个星期,IDCF 的镜像还没有,于是我就直接安装了 16.04 LTS 版本。上一篇我讲了下如何从 16.04 LTS升级到 18.04 LTS ,这篇就讲一下如何快速配置 LNMP 环境。

所谓 LNMP 就是, Linux + nginx + MySQL + PHP ,但是这个组合在英语国家那边好像是叫 LEMP ,中国没太有这么说的,日本也都是讲 LNMP ,所以本篇还是称之为 LNMP 。截止目前最新版本是 nginx 1.14.0, MySQL 5.7.22, PHP 7.2.5 。

就说这么多废话,下面就是整个过程啦。

首先安装软件源扩展(16.04 需要)

sudo apt -y install software-properties-common apt-transport-https lsb-release ca-certificates

添加 PHP 的 PPA源,过程中需要按一次回车

add-apt-repository ppa:ondrej/php

更新 APT 源和软件包至最新

sudo apt update && sudo apt dist-upgrade && sudo apt autoremove

nginx 安装

sudo apt install nginx

MySQL 安装

sudo apt install mysql-server mysql-client

安装过程中需设置 MySQL 的 root 密码

PHP和相关扩展安装

sudo apt install php7.2-fpm php7.2-mysql php-pear php7.2-curl php7.2-dev php7.2-gd php7.2-mbstring php7.2-xml php7.2-xmlrpc php7.2-zip php7.2-opcache php7.2-sqlite php7.2-imap php7.2-bz2 -y

简易配置

修改 nginx 默认站点配置,路径:/etc/nginx/sites-available/default

# Default server configuration
#
server {
	listen 80 default_server;
	listen [::]:80 default_server;

	# listen 443 ssl http2;
	# listen [::]:443 ssl http2;

	# include ssl.conf;
	# ssl_certificate /path/to/crt;
	# ssl_certificate_key /path/to/key;

	root /var/www/html;
	index index.html index.htm index.php;
	server_name _;

	location ~ /\. { return 404; }
	location / {
		try_files $uri $uri/ =404;
	}

	location ~ \.php$ {
		include snippets/fastcgi-php.conf;
		fastcgi_pass unix:/run/php/php7.2-fpm.sock;
	}

	location ~ /\.ht {
		deny all;
	}
}

其中预留了未来启用 SSL 的代码,ssl.conf 文件如下:

ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
ssl_session_tickets on;
ssl_stapling on;
ssl_stapling_verify on;
#ssl_trusted_certificate /path/to/pem;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers 'ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS';
ssl_prefer_server_ciphers on;

配置完记得重启下 nginx

systemctl restart nginx

phpMyAdmin 安装

sudo apt install phpmyadmin

安装过程会弹出一个选择框,因为我们不是 Apache 环境,所以使用 TAB 键跳过,直接选择 OK ,会安装在以下目录

/usr/share/phpmyadmin/

因为 apt 上的 phpMyAdmin 版本比较旧,对 PHP 7.2 和 MySQL 5.7 支持不太好,所以我们直接将整个目录删除,去 phpMyAdmin 的官网(https://www.phpmyadmin.net/)下载最新版本,直接上传覆盖到该目录,然后输入软链接命令

sudo ln -s /usr/share/phpmyadmin/ /var/www/html/phpmyadmin

打开浏览器,输入 网站路径/phpmyadmin/setup/ ,按照提示对 phpMyAdmin 进行配置,配置完毕后会生成 config.inc.php 文件,将其上传到 phpMyAdmin 安装路径,并在该路径建立 tmp 文件夹 并设置该文件夹权限为 777 

LNMP默认目录

nginx

配置路径:/etc/nginx/

网站路径:/var/www/

MySQL

配置路径:/etc/mysql/

数据路径:/var/lib/mysql/

PHP

配置路径:/etc/php/7.2/

phpMyAdmin

安装路径:/usr/share/phpmyadmin/

网站目录

存放路径:/var/www/

nginx存放配置路径:/etc/nginx/sites-available/

nginx启用配置路径:/etc/nginx/sites-enabled/

(使用 ln -s 将 sites-available 软链接到 sites-enabled 并 systemctl reload nginx 重启 nginx 服务,即可启用新网站)

常用命令

ubuntu 18.04 使用 systemctl 管理服务。

LNMP 中 service 名称分别为 nginx、mysql、php7.2-fpm

启动:systemctl start service

停止:systemctl stop service

重载:systemctl reload service

重启:systemctl restart service

查看状态:systemctl status service

开启自启动:systemctl enable service

关闭自启动:systemctl disable service

如重启 nginx 和 PHP 服务:

systemctl reload nginx
systemctl reload php7.2-fpm

参考

https://coxxs.me/405

Postfix 插件的配置

https://bbs.aliyun.com/read/161211.html

https://www.linode.com/docs/email/postfix/email-with-postfix-dovecot-and-mysql/

5 Comments (1423 Views)

  1. 哇,巨羡慕IDCF的,目前用着代购的35CNY/月,线路不错,就是CPU性能太渣了哇 QwQ
    对了,直接安装出来的支持tls1.3嘛?
    1. @Leter.io:35块钱挺良心了,540日元一个月,汇率折一下差不多三十多块钱了。看了下nginx的编译参数,没加--no-tls1_3,应该是支持tls1.3的。
      1. @Lance.Moe:好像是,做人不能太贪,2333
        你测试下,我之前采用此方法之后是不支持tls1.3特性的。
  2. 换了个模板,看了登陆界面,感觉不像emlog了?
    1. @taoxinhao:花了几天改的emlog6.0beta,后台好多bug我都修复了,准备过几天放出来,运行速度还是蛮快的,对PHP7兼容也挺不错。

Leave a Reply

Your email address will not be published. Required fields are marked *