# 2020 Deploy Laravel Environment (LNMP=Linux、Nginx、MySQL、PHP、Laravel)
Prepare:
- server(I use aws servcice)
- server system is linux (I use Ubuntu 18.04)
- Command tool(I use iTerm for mac)
# Step 1 Deploy Linux server to AWS
# Step 2 Connect Server by ssh
# Step 3 connect as a root
$ sudo passwd root
[sudo] password for ramesh:
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
Or
su -root or sudo -i
# Step 4 Install Nginx
apt-get update
//Update apt is because for install php nginx and mysql
apt-get install nginx
nginx -v
//check install succeful or not
# Step 5 Install MySQL
apt-get install mysql-server
// type Y if asking
mysql -v
// check is that install successful
// you will go to mysql command like below
//mysql>
// just type quit command
# Step 6 Install PHP and Module
//1)
apt install php7.2-cli
// Tyepe Y if asking
// Check install seccessful
php -v
// 2)
// Install php-fpm
apt-get install php-fpm
// Tyepe Y if asking
// 3)
// Check Module
php -m
This is my output
[PHP Modules]
calendar
Core
ctype
date
exif
fileinfo
filter
ftp
gettext
hash
iconv
json
libxml
openssl
pcntl
pcre
PDO
Phar
posix
readline
Reflection
session
shmop
sockets
sodium
SPL
standard
sysvmsg
sysvsem
sysvshm
tokenizer
Zend OPcache
zlib
[Zend Modules]
Zend OPcache
4)
// Module requirement for laravel ,please check you have these
PHP >= 7.1.3
PHP OpenSSL
PHP PDO
PHP Mbstring
PHP Tokenizer
PHP XML
PHP Ctype
PHP JSON
// Install it if you dont have
apt-get install php-mysql php-xml php-mbstring php-ctype php-zip php-curl
// Type Y if asking
# Step 8 Install Conmposer
// 1)
// 进入 ubuntu 的 home 路径
cd ~
// 2)
// 下载安装脚本 - composer-setup.php - 到当前目录
php -r “copy (‘https://install.phpcomposer.com/installer’, ‘composer-setup.php’);”
// 3)
// 执行安装过程
php composer-setup.php
// 4)
// 删除安装脚本
php -r “unlink (‘composer-setup.php’);”
// 5)
// 全局将 Composer 配置到系统中,全局安装是将 Composer 安装到系统环境变量 PATH 所包含的路径下面,然后就能够在命令行窗口的任何路径下直接执行 composer 命令了
sudo mv composer.phar/usr/local/bin/composer
// 6)
// 修改权限
chmod u+x /usr/local/bin/composer
// 7)
// 验证 Composer 是否安装成功
composer -v
// 输出版本号之类的即安装成功
// 8)
// 全局修改 Composer 镜像地址(为什么要修改,因为 Composer 在国外,众所周知访问慢所以修改)
// 注意:下方有两个配置的地址,选一个即可,
// 现在你所看的 composer 安装教程是 https://pkg.phpcomposer.com 的官方推荐,但是我用该网站
// 只有在装我 Windows 本地测试的时候可以但在 aliyun 主机上 不太行,有些东西下载不到,所以我用的是下方的链接一
一、composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
二、composer config -g repo.packagist composer https://packagist.phpcomposer.com
// 修改后会有一行橙色的警告
Do not run Composer as root/super user! See https://getcomposer.org/root for details
// 提示不要在 root 权限下修改 Composer,官方这样做是为了避免一些第三方代码拥有超级管理员的权限来执行一些脚本之类的
// 警告只是提示一下,不会影响你配置的代码
// 9)
// 验证上个步骤是否配置成功
composer config -lg
// 在接下来的输出中会有一行
[repositories.packagist.org.url] https://mirrors.aliyun.com/composer/
// 这样的,如果你的地址是上一步中配置的地址,那么就配置对了
apt-get install npm
// 接下来的提示是否确定时输入:Y
// 安装该工具也会顺便安装 Node.js,默认的 NPM 版本比较低,我们可以通过这个命令对其进行升级
npm install -g npm
// 升级后需要输入命令 reboot 重启主机或需要退出或打开新的窗口登录服务器
// 再 npm -v 才会看到现在安装的最新版本
apt-get install git
// 接下来的提示是否确定时输入:Y
// 为主机生成 ssh key(将双引号里的换成你的账号就行)
ssh-keygen -t rsa -C “tcheewing1@gmail.com”
// 上面的命令输入后连续按回车即可,好像是三次
I get this
The key’s randomart image is:
±–[RSA 2048]----+
| …o+. |
| …=. |
| .E.= |
| o… … . |
| .o+o.S* |
| oB.+O + |
| o=Bo.+ o |
| oooBo= . |
| o++=o= o |
±—[SHA256]-----+
root@ip-172-31-29-228:~#
1)Create Laravel
// 我们将 Laravel 项目创建到 Linux 主机的 /var/www 目录下
// 首先进入目录
cd /var/www/
//ls 可以看当前目录下的文件,会看到有一个 html 的文件夹
2)
创建 Laravel 项目(2 种方式)
// 第一种:直接通过 Composer 安装
composer create-project laravel/laravel Laravel60 --prefer-dist “6.*”
// 第二种(推荐):虽然我们已经在安装 Composer 的过程中配置了比较快的镜像地址,但有些时候可能还是会比较慢
// 在这里我为大家创建了一个完全新的 Laravel 项目,其 Laravel 版本是 6.18.2
// 由于我们前面已通过 Git 在 GitHub 中 clone 准备好的纯净 Laravel 项目
git clone https://github.com/sq57133/Laravel60.git
// 该项目的 GitHub 网页地址 https://github.com/sq57133/Laravel60
3)
上条步骤安装成功后,此时你就可以开始开发你的项目了
初始化 配置项目
1)
// 进入你的项目
cd /var/www/Laravel60
2)
// 执行安装(该安装是指安装你 Laravel 项目根目录下 composer.json 里引用的东西,如果你安装过程中输出的内容
// 中会有挺多 failed 或者你安装完后运行也不好用,那么你应该去本教程步骤 8 的第 8 个小步骤中直接选新的地址后重新 composer install 试试
// 即可,里面我也写了我用的是哪个)
composer install
3)
// 初始化前端依赖、前端资源
npm install
npm run prod
// 如果在运行 npm run prod 的过程中报错,可以尝试通过在 package.json 中指定 cross-env 的路径来解决:
“scripts”: {
…
“prod”: “npm run production”,
“production”: “node node_modules/cross-env/dist/bin/cross-env.js NODE_ENV=production node_modules/webpack/bin/webpack.js --no-progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js”
},
修改项目权限,创建软连
cd /var/www
chown -R www-data:www-data Laravel60/
// Laravel60 是你的 Laravel 你的项目文件夹名
// 如此一来就一劳永逸解决了 Laravel 项目权限问题
// 在 Laravel 项目的 public 目录下创建一个指向 storage/app/public 目录的软链 storage:
cd /var/www/Laravel60
php artisan storage:link
Restart nginx mysql php
// 刚安装完的项目不重启初始化一下可能会出错,重启它们
service nginx restart
service mysql restart
service php7.2-fpm restart // 这里要注意如果你不是跟着教程安装的 7.2 就要改成你的
Create Database
1)
// 登录数据库
mysql -u root -p
// 默认密码为空,若提示输入密码直接回车即可
2)
// 为数据库创建密码
ALTER USER ‘root’@‘localhost’ IDENTIFIED WITH mysql_native_password BY ‘your-password’;
//ALTER USER ‘root’@‘localhost’ IDENTIFIED WITH mysql_native_password BY ‘customer2020’;
// 将 your-password 替换为你的密码,不要去掉单引号
3)
// 在数据库中创建一个数据库
create database laravel60 default charset utf8 collate utf8_general_ci;
// 至此,我们就创建了一个名为 laravel60 的数据库了
4)
// 退出 MySQL 命令行
quit
1)更新 Laravel.env 配置
// 若你还不了解 Laravel 的相关操作,那么到现在其实已经相当于创建了 Laravel 项目但是还没配置
// 接下来我们会将 Laravel 项目配置到可以通过域名访问,那么如果你只是想跟着教程到最后能够完成配置可以继续看下去
// 但是毕竟你是要开发 Laravel 项目的,如果你不会就算配置完了能运行实际上也是没有太大意义的
// 推荐一个学习的网站
// https://xueyuanjun.com/books/laravel-tutorial-6
2)
// 复制 .env.example 文件新文件文件名为 .env
cd /var/www/Laravel60
cp .env.example .env
3)
// 准备编辑 .env
// Laravel60 根目录下
vim .env
4)
// 编辑并配置 .env(如何用 vim 编辑在本章大步骤 2 中的易错点 2 中可以看到 vim 的基本编辑使用方式)
APP_NAME=Laravel60
APP_URL=http:// 你的域名
DB_DATABASE=Laravel60
DB_USERNAME=root
DB_PASSWORD=xxxxxx
// APP_NAME 改为你的项目名
// APP_URL 你的域名,不写也可以
// DB_DATABASE 为你第 15 步中创建的数据库名称
// DB_USERNAME 数据库用户名
// DB_PASSWORD 为你第 15 步中创建的密码
5)
// 生成 Application key 想看直接到 key 值的后面加上 "--show" 不包括双引号
php artisan key:generate
base64:MoaI4UOF6+CEcH3tcsxZfokncv4iePblakrtUXQJZ1c=
php artisan migrate
// 没有报错即成功
// 运行填充命令初始化测试数据(若你不懂或者没有写测试数据可以不运行)
php artisan db:seed
Deploy nginx on laravel
1)
// 进入 nginx 配置目录
cd /etc/nginx/sites-available/
//ls 命令可以看到当前目录下有一个文件 default
2)
// 备份 default 文件方便配置错了可以恢复
cp default defaultBackup
3)
//vim default 文件,这里我直接把我的 default 配置粘贴出来告诉你们改了哪里