为什么要更改运行用户

  • nginx 和 fpm 默认运行用户的 www-data
  • 再部署项目的时候 一般来说都是用自己创建的用户去 git clone 代码 所以 clone 下来的代码文件 都属于这个用户, 所以在运行项目的时候就会有很多权限的问题, 所以要改变 nginx 和 fpm 的默认运行用户

更改 nginx 默认用户

vi /etc/nginx/nginx.conf
user 更改这里;
worker_processes auto;
pid /run/nginx.pid;
include /etc/nginx/modules-enabled/*.conf;

events {
        worker_connections 768;
        # multi_accept on;
}

更改 php-fpm 默认用户

/etc/php/7.3/fpm/pool.d/www.conf
..... 
user = 更改这里
group = 更改这里

....
listen.owner = 更改这里
listen.group = 更改这里

最后要记得 重启 nginx 和 php-fpm

更新 apt-get
命令: sudo apt update
安装 nginx
命令: sudo apt install nginx 

安装完成之后可以在浏览器看到 nginx 默认欢迎页

    http://server_domain_or_ip

65404-xn4s79c6v8.png
如果看到上面的页面,则说明您已经成功安装了 nginx

安装 mysql
命令: sudo apt install mysql-server

运行完命令 Mysql数据库 就已经安装了, 但没配置完成.

为了确保安全, Mysql附带了一个脚步, 运行该脚本会询问我们是否修改一些不安全的默认值, 通过以下命令来启动脚本

sudo mysql_secure_installation

同意 Y '是', 否则继续进行任何操作(不启用).

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:

如果启用了验证,则脚本还将要求您选择密码验证级别,如果输入2(最高级别),则设置复杂的密码包括大小写字母特殊字符等, 否则都会收到错误消息.

There are three levels of password validation policy:

LOW    Length >= 8
MEDIUM Length >= 8, numeric, mixed case, and special characters
STRONG Length >= 8, numeric, mixed case, special characters and dictionary                  file

Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 1

接下来, 将要求您提交并确认root密码:

Please set the password for root here.

New password:

Re-enter new password:

其余的问题,您应该在每个提示下按下Y并ENTER击键. 这将删除一些匿名用户和测试数据库,禁用远程root登录,并加载这些新规则. 以便MySQL立即遵守我们所做的更改.

注意:

请注意, 在运行MySQL 5.7(及更高版本) Ubuntu系统中, 默认情况下, MySQL为 root 用户设置使用auth_socket插件而非密码进行身份验证. 在许多情况下,这可以提高安全性和可用性,但是当您需要允许外部程序(例如phpMyAdmin)访问时也可能变得不方便.

更换Mysql root用户密码验证

如果您希望以root用户身份连接到MySQL时使用密码, 则需要将其身份验证方法从切换auth_socket为mysql_native_password. 为此,请从终端打开MySQL提示符.

sudo mysql

接下来, 使用以下命令检查每个MySQL用户帐户使用的身份验证方法:

mysql> SELECT user,authentication_string,plugin,host FROM mysql.user;
+------------------+-------------------------------------------+-----------------------+-----------+
| 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.01 sec)

在此示例中, 可以看到root用户使用auth_socket插件进行身份验证. 要将root帐户配置使用密码进行身份验证, 请运行以下ALTER USER命令 .确保更改password为您选择的强密码

其中 'password' 为您要设置的 root 用户的密码, 如果密码验证级别输入的是 2(最高级别), 请输入复杂的密码 否则会有错误提示

mysql>  ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';

然后,运行FLUSH PRIVILEGES告诉服务器重新加载授权表并使新的更改生效:

mysql>  FLUSH PRIVILEGES;

再次检查每个用户使用的身份验证方法, 以确认root不再使用auth_socket插件进行身份验证:

mysql> SELECT user,authentication_string,plugin,host FROM mysql.user;
Output
+------------------+-------------------------------------------+-----------------------+-----------+
| user             | authentication_string                     | plugin                | host      |
+------------------+-------------------------------------------+-----------------------+-----------+
| root             | *3636DACC8616140347782ADD08F92C1571D6D78F | mysql_native_password | 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.01 sec)

您可以在此示例输出中看到, MySQL root 用户现在使用密码进行了身份验证. 一旦在自己的服务器上确认了这一点,就可以退出MySQL Shell:

mysql> exit;
注意2:

将root的 MySQL用户配置为使用密码进行身份验证后, 将无法再sudo mysql使用以前使用的命令访问MySQL. 相反必须运行以下命令

mysql -u root -p

至此, mysql数据库系统已经完成了, 可以继续安装PHP

安装PHP

使用下面的命令将 ondrej/php 添加到Ubuntu的存储库

sudo apt install software-properties-common
sudo add-apt-repository ppa:ondrej/php
sudo apt-get update
安装 PHP7.4 以及 php-mysql
sudo apt install php7.4-fpm php7.4-mysql
安装 PHP插件
sudo apt-get install php7.4-<插件名称>

php安装完成以后就需要配置nginx 虚拟主机

配置 nginx 虚拟主机

/etc/nginx/sites-available/ 目录中打开一个配置文件, 在此示例中新的服务器块配置文件名为example.com

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

将以下内容添加到example.com配置文件中

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

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

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

        location ~ /\.ht {
                deny all;
        }
}
软连接

添加此内容后,保存并关闭文件. 通过软连接的形式来启用此配置

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

取消默认配置的软连接

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

测试新配置文件的语法错误

sudo nginx -t

没有问题的话,重启nginx

sudo service nginx restat

这样就完成了LEMP的安装和配置,和相互通信

测试是否正常运行
sudo vi /var/www/html/info.php

加入以下内容:

<?php
phpinfo();

完成后,保存并关闭文件.

现在, 可以在浏览器中访问此页面, 访问服务器的域名或公共IP地址 后面跟/info.php:

http://your_server_domain_or_IP/info.php

vagrant版本 2.2.6
virtualbox 版本 6.1

1. 第一大坑

33783-o38k07bwocm.png

上面的报错意思就是, vagrant 不支持 安装版本的 virtualbox

然后我就想 不应该啊 我都去官网 安装的最新版本 为什么会出这样的错误呢?
最终经过 百度 找到了 Vagrant 在 GitHub 上的仓库 查看了 issue 果然 已经有大神解决了

解决办法

issues
链接里讲的很明白, 只需要手动修复一下 跟着操作就可以了.

第二个解决办法

如果你懒的手动去改这些文件, 那么你只需要去下载旧版本的 virtualbox 重新安装就可以了.

2. 第二大坑

34723-z258sibvld8.png这里的报错意思就是, 电脑没有开启 vt虚拟化

打开任务管理器, 然后到 性能 选项页, 在右下角虚拟化中我们就可以看到了

09599-4b2f27edj5l.png
知道了问题, 去百度自己的 主板 怎么开启虚拟化就可以了, 我的是 华硕主板

最后还是想说一句 还是 Mac 下开发省心啊!

VitrualBox

VitrualBox 是一款非常强大的免费虚拟机软件,使用者可以在 VitrualBox 上安装并运行 Linux、Windows、Mac OS X 等操作系统,类似的软件还有 VMware

Vagrant

Vagrant 是一个用于创建和部署虚拟化开发环境的工具,其依赖于 VirtualBox 虚拟机,致力于帮助开发者快速构建一个环境统一的虚拟系统。

Vagrant 可以将一整套虚拟环境封装在一个box 内,这样只要所有人都使用这个 box,大家的开发环境就实现统一了!而 Homestead 就是这样一个 Laravel 官方预装的适合 Laravel 开发的 Vagrant box 。

理解

其实可以这样理解,你有了虚拟机(VirtualBox),有了集成环境(homestead环境也就是vagrant box),那么你总需要把集成环境放到虚拟机上是吧。那么谁来做这个事情呢?必须要有人来做才行啊,不然的话,虚拟机是不会自己装环境的。vagrant 就是做这个事情的

总结

VirtualBox 是虚拟机软件
vagrant 是管理虚拟机的工具,主要作用是提供一个可配置、可移植和复用的软件环境
Homestead 里面包含了 Nginx Web 服务器、PHP 7、MySQL、Postgres、Redis、Memcached、Node,以及所有你在使用 Laravel 开发时需要用到的各种软件(Homestead Box 虚拟机盒子),它一套可配置的 Laravel 开发环境(Homestead 管理脚本)

办公工具

效率工具

开发工具

娱乐工具

其他