LNMP環(huán)境介紹
LNMP代表的就是:Linux系統(tǒng)下Nginx+MySQL+PHP這種網(wǎng)站服務(wù)器架構(gòu)。
這四種軟件均為免費(fèi)開源軟件,組合到一起,成為一個(gè)免費(fèi)、高效、擴(kuò)展性強(qiáng)的網(wǎng)站服務(wù)系統(tǒng)。
Nginx是一個(gè)高性能的HTTP和反向代理服務(wù)器,也是一個(gè)IMAP/POP3/SMTP代理服務(wù)器。
作為 Web 服務(wù)器:相比 Apache,Nginx 使用更少的資源,支持更多的并發(fā)連接,體現(xiàn)更高的效率。
安裝nginx服務(wù)器
注:
我的ecs上選擇的是Ubuntu16,64位的操作系統(tǒng)
- 更新包列表
sudo apt-get update
- 安裝nginx
sudo apt-get install nginx
-
啟動(dòng)nginx服務(wù)
sudo service nginx start
在瀏覽器輸入公網(wǎng)ip,可以看到nginx的歡迎界面
安裝mysql
- 安裝mysql服務(wù)和客戶端
sudo apt-get install mysql-server mysql-client -
安裝好后運(yùn)行
mysql -u root -p
出現(xiàn)如下界面,成功
安裝PHP
- 安裝php
sudo apt install php7.0 php7.0-fpm php7.0-mcrypt
-
配置php
vim /etc/php/7.0/fpm/php.ini
通過輸入/cgi.fix_pathinfo=1來快速查找cgi.fix_pathinfo選項(xiàng)并將它前面的“;”去掉,值改為0
- 啟用php7.0-mcrypt
sudo phpenmod mcrypt - 重啟php7.0-fpm
sudo service php7.0-fpm restart
安裝composer
- composer介紹
簡(jiǎn)單來說,Composer 是一個(gè)新的安裝包管理工具,服務(wù)于 PHP 生態(tài)系統(tǒng)。它實(shí)際上包含了兩個(gè)部分:Composer 和 Packagist。 - 安裝composer
方法一
- 依次執(zhí)行以下三條命令
php -r "copy('https://install.phpcomposer.com/installer', 'composer-setup.php');" #下載安裝腳本 - composer-setup.php - 到當(dāng)前目錄
php composer-setup.php #執(zhí)行安裝過程
php -r "unlink('composer-setup.php');" #刪除安裝腳本
- 全局安裝
全局安裝是將 Composer 安裝到系統(tǒng)環(huán)境變量 PATH 所包含的路徑下面,然后就能夠在命令行窗口中直接執(zhí)行 composer 命令了。
方法二
- 去以下網(wǎng)址下載最新版composer.phar ,并上傳到服務(wù)器
- 添加執(zhí)行權(quán)限
chmod a+x composer.phar - 全局安裝
sudo mv composer.phar /usr/local/bin/composer
- 查看是否安裝與設(shè)置成功
composer -version
注:
這里報(bào)了一個(gè)警告:Do not run Composer as root/super user! See https://getcomposer.org/root for details
意思是叫你不要用root用戶執(zhí)行composer相關(guān)命令。這是出于對(duì)安全的考慮。
解決:
切換到非root用戶執(zhí)行composer命令。 - 配置 composer 使用國(guó)內(nèi)源,提升速度
composer config -g repo.packagist composer https://packagist.phpcomposer.com
在阿里云ECS上部署Laravel項(xiàng)目
-
配置nginx服務(wù)器
首先,對(duì)需要修改的nginx配置文件進(jìn)行備份
cp /etc/nginx/sites-available/default /etc/nginx/sites-available/default.bak
然后修改nginx的配置文件
sudo vim /etc/nginx/sites-available/default
要修改的是server的部分
server {
listen 80 default_server;
listen [::]:80 default_server;root /var/www/html; index index.html index.htm index.nginx-debian.html; server_name _; location / { try_files $uri $uri/ =404; }}
修改以下部分:
root部分的修改
root /var/www/blog/public; # 這里的blog是你自己的laravel項(xiàng)目名稱
將nginx服務(wù)器的根目錄指向blog的public文件夾下,Laravel項(xiàng)目的代碼將會(huì)放在/var/www/blog目錄下index部分的修改
index index.php index.html index.htm index.nginx-debian.html;
注意:將index.php排在最前面server_name部分的修改
server_name server_domain_or_IP;
其中,server_domain_or_IP是公網(wǎng)的iplocation部分的修改
location / {
try_files $uri $uri/ /index.php?$query_string;
}
- 最后
我們還需要配置一下Nginx,讓其執(zhí)行PHP文件。同樣是在這個(gè)文件里,在location下方添加下面的配置:
location ~ \.php$ {
try_files $uri /index.php =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
- 配置完之后重啟Nginx,使上面的配置項(xiàng)生效。
sudo service nginx restart
- Laravel項(xiàng)目遷移和創(chuàng)建
laravel項(xiàng)目創(chuàng)建
- 在/var/www目錄下,創(chuàng)建laravel 5.1項(xiàng)目, 若不指定版本,默認(rèn)安裝最新版
composer create-project laravel/laravel --prefer-dist blog 5.1
其中 blog是laravel項(xiàng)目的名稱
命令執(zhí)行完后,就會(huì)在/var/www下執(zhí)行生成一個(gè)blog文件夾。然后可以進(jìn)行相關(guān)開發(fā)。
laravel項(xiàng)目遷移
- 將本地的laravel項(xiàng)目文件一起通過filezill等工具上傳到/var/www目錄下。這里的項(xiàng)目名稱應(yīng)該和nginx配置文件的root部分的修改一致。
- 配置云服務(wù)器上的mysql數(shù)據(jù)和本地laravel項(xiàng)目數(shù)據(jù)一致。重建相關(guān)表和數(shù)據(jù)填寫。
如果執(zhí)行數(shù)據(jù)庫(kù)遷移的時(shí)候報(bào)以下錯(cuò)誤: root@'localhost' 。。。
多半是root權(quán)限的問題
可以試試以下方法:
方法一
mysql中執(zhí)行如下命令:
grant all on . to root@'localhost' identified by password '' with grant option;
方法二
- laravel項(xiàng)目的權(quán)限更改
sudo chmod -R 777 /var/www/laravel項(xiàng)目名稱/storage #修改storage文件夾權(quán)限
sudo chown -R :項(xiàng)目所有者 /var/www/laravel #修改項(xiàng)目所有者權(quán)限,根據(jù)需要修改
- 完了 就可以在瀏覽器中輸入網(wǎng)址,既可以看到相應(yīng)頁面。
參考:
開啟 Laravel 之旅以及環(huán)境配置
在阿里云ECS上搭建LEMP環(huán)境
nginx+MySQL+Laravel+PHP7+Redis+Node.js
從零開始部署一個(gè) Laravel 站點(diǎn)
Packagist / Composer中國(guó)全量鏡像