Ubuntu 16.04安装Linux, Nginx, MySQL, PHP (LNMP)

目录
  1. 1. Nginx
  2. 2. MySQL
  3. 3. PHP 7
  4. 4. Redis
  5. 5. 安装composer
  6. 6. 使用phpMyAdmin管理MySQL
  7. 7. 修改MySQL、SSH端口号
  8. 8. Ubuntu18.04 启动root账号并授权远程登录

Nginx

安装Nginx

1
2
$ sudo apt update
$ sudo apt -y install nginx

访问你的主机IP
http://server_domain_or_IP

如果出现”Welcome to nginx”字样则证明安装成功.

给html目录赋予nginx读写权限:chown www-data.www-data -R /home/www/html

注意:不要把项目的目录设置到/root目录下,否则会出现各种莫名其妙的问题。

Ubuntu18.0 默认安装的NGINX版本是1.14.0

安装最新稳定版NGINX
1.下载nginx_signing.key

1
2
wget http://nginx.org/keys/nginx_signing.key
sudo apt-key add nginx_signing.key

2.对于Ubuntu,将codename替换为Ubuntu分发代号(ubuntu 18.04代号是bionic),并将以下代码附加到/etc/apt/sources.list文件末尾:

1
2
deb http://nginx.org/packages/ubuntu/ codename nginx
deb-src http://nginx.org/packages/ubuntu/ codename nginx

3.然后运行以下命令:

1
2
apt-get update
apt-get install nginx

MySQL

安装MySQL
$ sudo apt -y install mysql-server

如果是ubuntu20.04系统,上面的命令安装的MySQL版本是8.0

mysql5.7 虽然设置了密码,但是直接回车就能登录解决方法:

1
2
3
4
5
6
7
8
9
sudo mysql

use mysql;
update user set authentication_string=PASSWORD("密码") where user='root'; //修改密码
update user set plugin="mysql_native_password";
flush privileges;
quit;
service mysql restart;
mysql -u root -p 密码;

如果不是root用户安装的mysql,那么mysql -uroot -p会报错:ERROR 1698 (28000): Access denied for user 'root'@'localhost'
使用:sudo mysql -u root即可

MySQL创建用户与授权
MySQL无法远程连接

PHP 7

安装php7.0
$ sudo apt -y install php7.0-fpm php-mysql php-gd php-xml php7.0-mbstring php7.0-mcrypt

PHP fix_pathinfo 潜在安全漏洞修复,在/etc/php/7.0/fpm/php.ini中找到
;cgi.fix_pathinfo=1
改为
cgi.fix_pathinfo=0

重启 php

$ systemctl restart php7.0-fpm或者service php7.0-fpm restart

/etc/nginx/sites-available/default 中添加配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
server {
listen 80;
listen [::]:80;

# 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/server_domain_or_IP;
index index.html index.htm index.php;

server_name server_domain_or_IP;

location / {
try_files $uri $uri/ =404;
}

location /phpmyadmin {
index index.php;
}

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

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

重启Nginx
$ systemctl restart nginx或者service nginx restart

测试PHP是否已完成安装配置,编辑/var/www/html/info.php
$ vi /var/www/html/info.php

添加内容

1
2
3
<?php
phpinfo();
?>

然后访问
http://server_domain_or_IP/info.php

出现php版本信息则安装配置成功

安装最新版PHP
sudo apt-get -y install php

可选php扩展:
sudo apt-get -y install php-fpm php-mysql php-curl php-gd php-intl php-pear php-imagick php-imap php-memcache php-pspell php-sqlite3 php-tidy php-xmlrpc php-mbstring

安裝php拓展的時候遇到這個錯,原因是安裝了apache2的包,但是我的服務器用的是nginx。

NOTICE: Not enabling PHP 7.4 FPM by default.
NOTICE: To enable PHP 7.4 FPM in Apache2 do:
NOTICE: a2enmod proxy_fcgi setenvif
NOTICE: a2enconf php7.4-fpm
NOTICE: You are seeing this message because you have apache2 package installed.
Setting up php7.4-zip (7.4.4-1+ubuntu16.04.1+deb.sury.org+1) …

解決方法:
卸載apache相關的東西。

1
2
3
sudo apt-get purge apache2
sudo apt autoremove
sudo apt autoclean

然后再次安裝所需要的拓展就行了。

Ubuntu20.04上,apt install php默认安装的是php7.4。

Redis

安装redis
sudo apt install redis-server
安装php的redis扩展
sudo apt-get install php-redis
然后重启nginx和php-fpm

安装Redis后,发现无法启动,报错误:
Job for redis-server.service failed because a timeout was exceeded.
执行service redis-server status,有一行:
Failed to start Advanced key-value store.
查看日志,发现报错: cannot assign address
这是由于主机上禁用了IPv6,而Ubuntu的redis-server软件包(版本 5:4.0.9-1)附带了:绑定 127.0.0.1 :: 1
编辑redis.conf:
sudo vim /etc/redis/redis.conf
bind 127.0.0.1 :: 1改成bind 127.0.0.1
重启redis-server即可.

安装最新版Redis
ubuntu 18.04 默认安装的Redis版本是3.1.6,如果要安装最新版
首先安装依赖:
apt-get install software-properties-common -y
使用如下命令添加 Redis 源:
add-apt-repository ppa:chris-lea/redis-server -y
使用如下命令安装 Redis:
apt-get update && apt-get install redis-server -y
通过以上命令便可安装最新版 Redis ,终端中输入以下命令查询 Redis 版本:
redis-server -v

如果安装了Redis5.0以上版本,并且要使用Stream功能的话,php-redis也要安装最新版本才行,通过apt-get install php-redis安装的版本太低,要使用pecl install redis才能安装最新版,如果报错【phpize: not found】,则需要先执行apt-get install php7.x-dev

默认redis是不允许远程登录的,需要我们配置 
编辑redis配置文件:sudo nano /etc/redis/redis.conf
注释掉这一行:bind 127.0.0.1
设置连接密码:requirepass 123456
修改完重启下redis:sudo service redis-server restart
使用命令行远程连接:redis-cli -h 127.0.0.1 -p 6379 -a 123456

安装composer

全局安装:
curl -sS https://getcomposer.org/installer | php
mv composer.phar /usr/local/bin/composer

改为阿里巴巴的镜像(全局配置):
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
取消配置:
composer config -g --unset repos.packagist

使用phpMyAdmin管理MySQL

安装phpMyAdmin

1
2
$ apt update
$ apt install phpmyadmin php-mbstring php-gettext

创建链接
$ ln -s /usr/share/phpmyadmin/ /var/www/html/

重启Nginx
$ systemctl restart nginx

访问
http://server_domain_or_IP/phpmyadmin

注:phpmyadmin 这么安装不是最新版,没有json数据类型的选项,还是在官网直接下载最新版,解压到www目录比较好。

修改MySQL、SSH端口号

打开文件/etc/mysql/mysql.conf.d/mysqld.cnf,修改port值,service mysql restart
打开文件/etc/ssh/sshd_config,修改Port值,service ssh restart
ssh打开终端ssh -p XX root@XXX.XXX.XXX.XXX

Ubuntu18.04 启动root账号并授权远程登录

Ubuntu18.04安装完成后默认不启动root账号,这使得远程管理很不方便,需要手动开启一下。

1.如果没有安装ssh, 需要安装一下哈
sudo apt install openssh-server

2.sudo passwd root

3.sudo vim /etc/ssh/sshd_config
PermitRootLogin prohibit-password改成PermitRootLogin yes

4.sudo systemctl restart sshd

5.云主机防火墙界面开启对应ssh端口。
大功告成啦!