Ubuntu 16.04 搭建 LNMP 开发环境

根据软件版本变化不断更新,如何在 Ubuntu 上搭建 LNMP 环境,以及可能遇到的坑,以及如何进行安全性设置。作为本博客第一篇收费文章,看能不能收到钱。

札幌雪祭 Tsudome 会场

前天帮人配了台机器,未来可能还要帮人配。在学会用 Docker 之前,先写一篇记录下怎么搭建环境吧。

这篇收费!¥4.99,请阅后自觉打钱。

Ubuntu 16.04

这个没啥好说的,直接在阿里云那里选公共镜像。

登录后,先升级。

apt-get update
apt-get upgrade

然后创建ssh key,并且添加自己的 key 到 ~/.ssh/authorized_keys。

ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

然后关闭密码登录,修改 /etc/ssh/sshd_config,然后 service ssh restart 重启 SSH

ChallengeResponseAuthentication no 
PasswordAuthentication no

这里我认为修改端口号没啥意义,因为很容易被扫出来,还不如直接关掉。

安装 PHP 7.1

需要先添加 PHP 的源,然后更新,然后安装 PHP。后面几个包都是 WordPress 需要的。

apt install software-properties-common
add-apt-repository ppa:ondrej/php
apt update
apt install php
apt install php7.2-opcache
apt install php-apcu
apt install php-fpm
apt install php-xml
apt install php-mysql
apt install php-mcrypt
apt install php-mbstring
apt install php-gd
apt install php-curl
apt install php-zip

这个源会自动更新,所以现在执行 apt install php 直接安装的就是 7.2 版本,对于我这种喜欢追新的人当然好。如果你想装特定版本,可以加上版本号。某些模块会有针对的版本,也请大家在安装时甄别。

安装完成后,可以试运行一下。然后启动 php-fpm 服务:

php -v
service php7.2-fpm start

安装 MySQL 5.7

MySQL 也需要配置新源。选对了新源,对后面的配置很有帮助,至少,这次我就没再遇到系统表和 5.7 版本不匹配的问题。

首先去这个页面下载官方配置。

点击 “Download” 按钮,鬼 Oracle 非要登录,那就登录,然后才得到真实地址,目前是 0.8.2-1 版本,这里是链接

下载之后,将源信息导入系统,然后更新,再接着就可以安装了:

dpkg -i mysql-apt-config_w.x.y-z_all.deb
apt-get update
apt-get install mysql-server

安装完成之后,执行 mysql -uroot -p,输入刚才设置的密码,进入 MySQL,创建用户名和数据库:

create database `wordpress`;
create user 'meathill'@'localhost' identified by '123456';
grant all on wordpress.* to 'meathill'@'localhost';

然后可以登陆新建的账号测试一下,理论上没问题。接下来执行 mysql_secure_installation 提升一下安全性。按照提示一步一步搞即可。

安装 MySQL 8

安装 MySQL 8 的方式和之前基本一样。不过 MySQL 8 的密码生成方式与之前不同,所以如果直接使用上面的方式生成密码,使用 MySQL 连接没问题,但使用其它 client 连接都会失败。

可以参考 WordPress + MySQL 8 这篇文章来解决。

安装 Nginx 1.10.0

我对 nginx 没有版本需求,所以直接 apt-get install nginx 即可。阿里云公共镜像的源指向 1.10.0 版本。不同版本的默认配置不同,这点需要注意,也是我们配置服务器时最可能踩中的坑,搜索时一定要注意版本号和年代。

如果想安装最新版(我这个时候是 1.14.0),需要先把源添加进来

sudo add-apt-repository ppa:nginx/stable # 这里 stable 可以替换为 development/nightly 之类
sudo apt update
sudo apt install nginx

安装完成之后,

service nginx start

即可启动。启动之前,最好 nginx -t 检查一下配置文件。

此时我们多半都要配置服务器,随着版本提升,其实越来越好配了。复制 /etc/nginx/site-available/default/etc/ngingx/site-available/my-site,然后编辑它。

如果是 1.14.0,则复制 /etc/nginx/conf.d/default.conf/etc/nginx/conf.d/my-site.conf。这个版本里 nginx 取消了之前 site-avaisable 和 site-enabled 的设置。

server {
  root /mnt/www/html;

  # 要执行 php,所以添加 index.php
  index index.php index.html ....;

  # _ 表示默认域名,阿里云用未备案的域名会有问题
  server_name _;

  location / {
    # 这里要做好重定向,未直接命中的 URI 都交给 index.php 处理
    try_files $uri $uri/ /index.php?$args;
  }

  location ~ .php$ {
    # v.1.10 这个很重要,关于 PHP 的配置都在里面
    include snippets/fastcgi-php.conf;
    # v.1.14 改成了这些
    include         fastcgi_params;
    fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;

    # 然后就是 php-fpm 的通信端口
    fastcgi_pass unix:/var/run/php/php7.1-fpm.sock;
  }
}

如果 fastcgi_pass 没配置好,很可能遭遇 “File not found”问题。

保存修改,然后

ln -s /etc/nginx/site-available/my-site /etc/nginx/site-enabled/my-site
nginx -t
service nginx restart

如果正常,则大功告成。


参考

Connecting to GitHub with SSH
A Quick Guide to Using the MySQL APT Repository

作者: meathill

爱编程,爱旅游,爱吐槽。 今年的目标是完成并运营至少一个 Side Project。 《Electron + Vue 实战开发》龟速创作中……

欢迎吐槽,请勿装死

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据