參考了兩篇文章,今天終于在阿里云上嘗試部署了laravel的環(huán)境
一步一步教你部署自己的Laravel應(yīng)用程序到服務(wù)器
從零開始部署 Laravel 項(xiàng)目
準(zhǔn)備工作
- 在阿里云上購(gòu)買一個(gè)ECS實(shí)例,本ECS安裝環(huán)境為 ubuntu 14.04
- 本文的使用的部署方式為 linux + mysql5.7 + nginx + php7.1
一.安裝 Php 7.1
首先用SSH連接到你的服務(wù)器,Windows 用戶建議使用 SecureCRT 來連接,這是一個(gè)收費(fèi)軟件,請(qǐng)自行搜索 XX版 。
登錄命令
ssh root@公網(wǎng)IP
1. 準(zhǔn)備
安裝 Php7.1 之前,要先安裝language-pack-en-base這個(gè)包,運(yùn)行:
sudo apt-get update
sudo apt-get install -y language-pack-en-base
這個(gè)包是為了解決系統(tǒng)不同語言之間可能發(fā)生的沖突,安裝之后可以減少許多因語言編碼帶來的問題。其中-y參數(shù)表明直接安裝,無需確認(rèn)。
安裝完成之后,運(yùn)行:
locale-gen en_US.UTF-8
設(shè)定語言編碼為UTF-8。
接下來安裝Git,Vim,運(yùn)行:
sudo apt-get install git vim
Git 是必備的,你可以很方便的使用Git來拉取遠(yuǎn)程倉(cāng)庫(kù)的代碼,vim是一款強(qiáng)大的編輯器,可以幫助你修改一些配置文件,如.env文件,如果的你的服務(wù)器已經(jīng)安裝了vim編輯器,可以忽略。
進(jìn)入正題,安裝Php7.1,本教程采用ppa方式安裝php7.1,運(yùn)行:
sudo apt-get install software-properties-common
software-properties-common是add-apt-repository所依賴的包,安裝成功后,運(yùn)行:
sudo LC_ALL=en_US.UTF-8 add-apt-repository ppa:ondrej/php
來添加php7的ppa,注意LC_ALL=en_US.UTF-8參數(shù)告訴我們系統(tǒng)語言為UTF-8,如果沒有,可能會(huì)出現(xiàn)錯(cuò)誤,如阿里云的服務(wù)器。
安裝完成之后,運(yùn)行sudo apt-get update更新安裝包,把剛才添加的包拉取下來。
運(yùn)行apt-cache search php7.1搜索php7.1開頭的包檢驗(yàn)是否安裝成功,輸出如下:
root@demo:~# apt-cache search php7.1
php-yaml - YAML-1.1 parser and emitter for PHP
php-apcu - APC User Cache for PHP
php-ssh2 - Bindings for the libssh2 library
php-igbinary - igbinary PHP serializer
php-mailparse - Email message manipulation for PHP
php-libsodium - PHP wrapper for the Sodium cryptographic library
php-propro - propro module for PHP
php-raphf - raphf module for PHP
....................省略...........................
2. 安裝
安裝php7.1:
sudo apt-get -y install php7.1
安裝成功后運(yùn)行php -v查看是否安裝成功,成功的話會(huì)輸出類似如下信息:
PHP 7.1.0beta2 (cli) ( NTS )
Copyright (c) 1997-2016 The PHP Group
Zend Engine v3.1.0-dev, Copyright (c) 1998-2016 Zend Technologies
with Zend OPcache v7.1.0beta2, Copyright (c) 1999-2016, by Zend Technologies
安裝php7.1-mysql,這是 Php7.1 與 mysql 的通信模塊:
sudo apt-get -y install php7.1-mysql
安裝 fpm,這是Nginx 用來解析php文件的:
sudo apt-get install php7.1-fpm
安裝其他必備模塊:
apt-get install php7.1-curl php7.1-xml php7.1-mcrypt php7.1-json php7.1-gd php7.1-mbstring
至此與php相關(guān)的模塊安裝安裝完成。
二.安裝Mysql
直接安裝Mysql5.7吧,5.7 可以說是里程碑式的版本,提高了性能,并增加了很多新的特性。特別是新增加的json字段,用過之后你會(huì)愛上她的!!
1. 下載.deb
包到你的服務(wù)器:
wget http://dev.[MySQL](http://lib.csdn.net/base/mysql).com/get/mysql-apt-config_0.8.1-1_all.deb
2. 然后使用dpkg
命令添加Mysql的源:
sudo dpkg -i mysql-apt-config_0.8.1-1_all.deb
注意在添加源的時(shí)候,會(huì)叫你選擇安裝 MySQL 哪個(gè)應(yīng)用,這里選擇 Server 即可,再選擇 MySQL 5.7 后又會(huì)回到選擇應(yīng)用的那個(gè)界面,此時(shí)選擇 Apply 即可。
- 安裝
sudo apt-get update
sudo apt-get install mysql-server
安裝完成之后運(yùn)行mysql -V
查看版本:
root@demo:~# mysql -Vmysql Ver 14.14 Distrib 5.7.15, for Linux (x86_64) using EditLine wrapper
- 注意
如果你已經(jīng)通過 ppa 的方式安裝了 MySQL 5.6,首先得去掉這個(gè)源。
sudo apt-add-repository --remove ppa:ondrej/mysql-5.6# 如果沒有 apt-add-repository 先安裝上# sudo apt-get install software-properties-common
然后其它和上面一樣,**但最后要運(yùn)行sudo mysql_upgrade -u root -p
升級(jí)數(shù)據(jù)庫(kù),
** 如果安裝mysql出現(xiàn)問題,需要卸載舊版mysql
sudo apt-get autoremove mysql* --purge
sudo apt-get remove apparmor
sudo rm /var/lib/mysql/ -R //非常重要
sudo rm /etc/mysql/ -R //非常重要
運(yùn)行sudo service mysql restart
重啟數(shù)據(jù)庫(kù),這樣你的數(shù)據(jù)會(huì)完好無缺(不出意外的話)**。
三,安裝Nginx
簡(jiǎn)單,運(yùn)行:
sudo apt-get -y install nginx
即可,然后運(yùn)行curl localhost
查看是否運(yùn)行成功。你也可以直接訪問你的IP地址,如下:

如果你打開瀏覽器發(fā)現(xiàn)看到的是Apache的話,可以禁用或刪除apache
通過下面的命令來刪除Apache
sudo service apache2 stop
update-rc.d -f apache2 remove
sudo apt-get remove apache2
四.配置
1. 配置php:
sudo vim /etc/php/7.1/fpm/php.ini
vim命令輸入/fix_pathinfo搜索,將cgi.fix_pathinfo=1改為cgi.fix_pathinfo=0
Why ? 假設(shè)有如下的 URL:http://phpvim.net/foo.jpg,當(dāng)訪問 http://phpvim.net/foo.jpg/a.php 時(shí),foo.jpg 將會(huì)被執(zhí)行,如果 foo.jpg 是一個(gè)普通文件,那么 foo.jpg 的內(nèi)容會(huì)被直接顯示出來,但是如果把一段 php 代碼保存為 foo.jpg,那么問題就來了,這段代碼就會(huì)被直接執(zhí)行。這對(duì)一個(gè) Web 應(yīng)用來說,所造成的后果無疑是毀滅性的。具體參看:http://www.cnblogs.com/buffer/archive/2011/07/24/2115552.html
2. 編輯fpm的配置文件:
運(yùn)行:
sudo vim /etc/php/7.1/fpm/pool.d/www.conf
找到listen = /run/php/php7.1-fpm.sock修改為listen = /var/run/php/php7.1-fpm.sock。當(dāng)然,你也可以不修改,但必須前后一致,后面會(huì)用到這個(gè)配置。

3. 配置Nginx:
sudo vim /etc/nginx/sites-available/default
主要是配置server這一部分,最終配置如下:
server {
listen 80 default_server;
listen [::]:80 default_server ipv6only=on;
root /var/www/your-laravelproject-name/public;
index index.php index.html index.htm;
# Make site accessible from http://localhost/
server_name lufficc.com www.lufficc.com;
location / {
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
try_files $uri $uri/ /index.php?$query_string;
# Uncomment to enable naxsi on this location
# include /etc/nginx/naxsi.rules
}
location ~ \.php$ {
try_files $uri /index.php =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php/php7.1-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
解釋:
- root:是你的項(xiàng)目的public目錄,也就是網(wǎng)站的入口
- index:添加了,index.php,告訴Nginx先解析index.php文件
- server_name:你的域名,沒有的話填寫localhost
- location / try_files修改為了try_files $uri $uri/ /index.php?$query_string;
- location ~ .php$部分告訴Nginx怎么解析Php,原封不動(dòng)復(fù)制即可,但注意:fastcgi_pass unix:/var/run/php/php7.1-fpm.sock;的目錄要和fpm的配置文件中的listen一致。
4. 創(chuàng)建網(wǎng)站目錄,Laravel項(xiàng)目:
如果你還沒有/var/www目錄,運(yùn)行mkdir /var/www,然后將Nginx的用戶名和用戶組www-data分配給它:
sudo chown -R www-data:www-data 項(xiàng)目路徑
然后進(jìn)入到/var/www/目錄,cd /var/www/。這個(gè)www目錄就是放置你的網(wǎng)站文件的目錄(可以多個(gè))。
這里創(chuàng)建Laravel項(xiàng)目可以使用git 把已有的項(xiàng)目拉下來或使用 composer 來新建
1. git方式,假設(shè)項(xiàng)目名稱為laraveldemo
首先cd到 /var/www/ 目錄
git clone 代碼倉(cāng)庫(kù)路徑
再次給予目錄權(quán)限,運(yùn)行(在/var/www/laraveldemo下面):
sudo chmod -R 775 storage/
sudo chown -R www-data:www-data /var/www/laraveldemo
注:上面這一步十分重要
記得修改前面步驟的nginx配置的root 位置 為
root /var/www/laraveldemo/public;
最后??!重啟nginx,fpm,訪問你的ip地址,不出意外,安裝成功,部署完成!
sudo service nginx restart
sudo service php7.1-fpm restart
2. composer方式
安裝 composer
$ curl -sS https://getcomposer.org/installer | php
$ sudo mv composer.phar /usr/local/bin/composer
由于被墻的原因,第一條指令通常會(huì)失敗,可以直接在composer官網(wǎng)下載composer.phar壓縮包,然后再移動(dòng)到 /usr/local/bin/composer
如果發(fā)現(xiàn)composer指令提示權(quán)限問題無法使用,可以增加權(quán)限
chmod +x composer.phar
安裝完 composer后可以使用 composer來安裝larvavel項(xiàng)目
在使用 composer來安裝larvavel項(xiàng)目前,你必須確認(rèn)你的ubuntu系統(tǒng)安裝了zip和uzip包,如果木有,則需要 先安裝zip和uzip
apt-get install zip unzip
使用 composer來安裝larvavel項(xiàng)目
cd /var/www/
composer create-project laravel/laravel laraveldemo --prefer-dist "5.1.*"
然后重復(fù) Git方式安裝 的 最后幾個(gè)步驟: 修改nginx配置文件 -> 指定項(xiàng)目用戶與組,修改權(quán)限
至此,本教程基本結(jié)束
node.js安裝
如果有些庫(kù)需要用到node.js,可自行安裝
參考ubuntu安裝node.js
方式一 apt-get
sudo apt-get update
sudo apt-get install nodejs
sudo apt-get install npm
方式二 添加ppa源方式安裝
curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash -
For the older LTS (the 4.x branch), use:
curl -sL https://deb.nodesource.com/setup_4.x | sudo -E bash -
For the currently active release (the 7.x branch), use:
curl -sL https://deb.nodesource.com/setup_7.x | sudo -E bash -
The PPA will be added to your configuration and your local package cache will be updated automatically. After running the setup script from nodesource, you can install the Node.js package in the same way that you did above:
sudo apt-get install nodejs
The nodejs package contains the nodejs binary as well as npm, so you don't need to install npm separately. However, in order for some npm packages to work (such as those that require building from source), you will need to install the build-essentials package:
sudo apt-get install build-essential
yarn安裝
參考
一個(gè)替代npm包管理器方案的選擇
你需要先配置倉(cāng)庫(kù):
curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add -
echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list
sudo apt-get update && sudo apt-get install yarn