ubuntu 18 PHP Mysql Nginx Node.js 环境配置

一 更新服务器

sudo apt update
sudo apt install nginx

二 安装 Nginx Web 服务器

sudo apt install nginx
sudo ufw allow 'Nginx HTTP'

您可以通过运行以下更改来验证更改

sudo ufw status

此命令的输出将显示允许 HTTP 流量:

Output
Status: active
To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere
Nginx HTTP                 ALLOW       Anywhere
OpenSSH (v6)               ALLOW       Anywhere (v6)
Nginx HTTP (v6)            ALLOW       Anywhere (v6)

添加了新的防火墙规则后,您可以通过访问 Web 浏览器中的服务器的域名或公共 IP 地址来测试服务器是否启动并运行。

如果服务器没有指向的域名,并且不知道服务器的公共 IP 地址,则可以通过运行以下命令找到它:

ip addr show eth0 | grep inet | awk '{ print $2; }' | sed 's/\/.*$//'

这将打印出一些 IP 地址。您可以在 Web 浏览器中依次尝试每个它们。

作为替代方案,您可以检查可从 Internet 上的其他位置查看哪些 IP 地址:

curl -4 icanhazip.com
//output 
42.96.170.181

在浏览器中输入 http://42.96.170.181

如果您看到上面的页面,您已成功安装 Nginx。

三 安装 MySQL 

sudo apt install mysql-server
#卸载mysql命令 --purge 删除配置文件
sudo apt-get remove --purge mysql*

运行安全脚本,添加 root 用户

sudo mysql_secure_installation
# 新手建议选no
Securing the MySQL server deployment.
Connecting to MySQL using a blank password.
VALIDATE PASSWORD PLUGIN can be used to test passwords and improve security. It checks the strength of password and allows the users to set only those passwords which are secure enough. Would you like to setup VALIDATE PASSWORD plugin?
Press y|Y for Yes, any other key for No: no

后面的步骤一路默认即可,设置完成后使用 root 用户登陆mysql

mysql -u root -p 密码
mysql> use mysql;
mysql> SELECT user,authentication_string,plugin,host FROM mysql.user;


Output
+------------------+-------------------------------------------+-----------------------+-----------+
| user             | authentication_string                     | plugin                | host      |
+------------------+-------------------------------------------+-----------------------+-----------+
| root             |                                           | auth_socket           | localhost |
| mysql.session    | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| mysql.sys        | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| debian-sys-maint | *CC744277A401A7D25BE1CA89AFF17BF607F876FF | mysql_native_password | localhost |
+------------------+-------------------------------------------+-----------------------+-----------+
4 rows in set (0.00 sec)

在此示例中,root 用户实际上使用插件进行身份验证。要将 root帐户配置为使用密码进行身份验证,请运行以下命令。

mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';
mysql> flush privileges;
#再次查询
mysql> SELECT user,authentication_string,plugin,host FROM mysql.user;
Output

+------------------+-------------------------------------------+-----------------------+-----------+
| user             | authentication_string                     | plugin                | host      |
+------------------+-------------------------------------------+-----------------------+-----------+
| root             | *183D65026AC1D28A81FAB11FC8C005F14A2045E5 | mysql_native_password | %         |
| mysql.session    | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| mysql.sys        | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| debian-sys-maint | *8B9DC09B22162C4D0A56B0059E021F0E3274B2A3 | mysql_native_password | localhost |
+------------------+-------------------------------------------+-----------------------+-----------+
4 rows in set (0.02 sec)


# 设置任意 ip 可使用 root 连接
mysql> update user set host = '%' where user = 'root';

重启 mysql

/etc/inint.d/mysql restart

四 安装 PHP

sudo apt install php-fpm php-mysql
#安装完成后查看PHP版本
php -v
PHP 7.2.24-0ubuntu0.18.04.3 (cli) (built: Feb 11 2020 15:55:52) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies
    with Zend OPcache v7.2.24-0ubuntu0.18.04.3, Copyright (c) 1999-2018, by Zend Technologies

安装必要的PHP扩展

sudo apt install libapache2-mod-php7.2 php7.2-common php7.2-mysql php7.2-gmp php7.2-curl php7.2-intl php7.2-mbstring php7.2-xmlrpc php7.2-soap php7.2-ldap php7.2-gd php7.2-bcmath php7.2-xml php7.2-cli php7.2-zip

配置 Nginx 将 PHP 处理器用于动态内容

Nginx默认配置文件路径为/etc/nginx/sites-available/

sudo vi /etc/nginx/sites-available/xiaolaiwo.com

尽量不编辑默认配置文件,而通过创建新的服务器配置文件管理站点。

将以下内容添加到新的服务器块配置文件中:

#xiaolaiwo.com
server {
        listen 80;
        root /var/www/html/xiaolaiwo;
        index index.php index.html index.htm index.nginx-debian.html;
        server_name xiaolaiwo.com;

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

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

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

以下是每个指令和位置块的作用:

  • listen• 定义 Nginx 将侦听的端口。在这种情况下,它将侦听端口,HTTP 的默认端口。80
  • root• 定义存储网站提供的文件的文档根。
  • index• 配置 Nginx 以优先处理在请求索引文件时命名的服务文件(如果可用)。index.php
  • server_name• 定义应用于向服务器发出给定请求的服务器块。将此指令指向服务器的域名或公共 IP 地址。
  • location /• 第一个位置块包含一个指令,该指令检查是否存在与 URI 请求匹配的文件。如果 Nginx 找不到适当的文件,它将返回 404 错误。try_files
  • location ~ \.php$• 此位置块通过将 Nginx 指向配置文件和文件来处理实际的 PHP 处理,该文件声明与 关联的套接字。fastcgi-php.confphp7.2-fpm.sockphp-fpm
  • location ~ /\.ht• 最后一个位置块处理 Nginx 不处理的文件。通过添加指令,如果任何文件碰巧进入文档根目录,它们将不会提供给访问者。.htaccessdeny all.htaccess

添加此内容后,保存并关闭该文件。通过创建新服务器块配置文件(目录中)到目录的符号链接,启用新的服务器块:

cd /etc/nginx/sites-available//etc/nginx/sites-enabled/
sudo ln -s /etc/nginx/sites-available/xiaolaiwo.com /etc/nginx/sites-enabled/

然后,从目录中取消链接默认配置文件:/sites-enabled/

sudo unlink /etc/nginx/sites-enabled/default

注意:如果您需要还原默认配置,可以通过重新创建符号链接来执行此操作,如下所示:

sudo ln -s /etc/nginx/sites-available/default /etc/nginx/sites-enabled/

通过键入:测试新配置文件是否存在语法错误:

sudo nginx -t

如果报告任何错误,请返回并重新检查文件,然后再继续。

准备就绪后,重新加载 Nginx 进行必要的更改:

sudo systemctl reload nginx

安装完成,创建一个PHP文件测试吧。

参考文章:

如何在Ubuntu 18.04上安装Linux, Nginx, MySQL, PHP 

如何在Ubuntu 18.04上使用Let’s Encrypt来保护Nginx的安全

发表评论