本地laravel项目部署上线
操作环境
服务器:阿里云ECS公用镜像 ubuntu14.04 本地:win10
准备
首先用ssh连接到服务器,我用的是Git Bash,阿里云在初始化服务器时可以选择密钥,配置好后启动服务器,在win10下打开Git Bash,命令ssh [email protected]你的公网ip
配置环境前下好language-pack-en-base
这个包,解决不同语言之间可能发生的冲突,-y
参数的意思是直接安装无需确认。
sudo apt-get update
sudo apt-get install -y language-pack-en-base
安装完成后运行locale-gen en_US.UTF-8
再在服务器上安装Git sudo apt-get install git
配置环境
安装php7.1
ppa方式安装php7.1:sudo apt-get install software-properties-common
安装成功后运行sudo LC_ALL=en_US.UTF-8 add-apt-repository ppa:ondrej/php
添加php7的ppa
完成后再运行sudo apt-get update
更新安装包把刚刚的添加包拉取下来,运行apt-cache search php7.1
检验是否安装成功,成功了就能安装php7.1了。
php7.1安装:sudo apt-get -y install php7.1
成功后运行php -v
查看版本,应显示类似信息
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的各个模块
sudo apt-get -y install php7.1-mysql
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
安装mysql
sudo apt-get install mysql-server mysql-client
过程中输入密码,确定后安装完成。
mysql -u root -p
再输入密码测试,能成功登陆即安装完成。exit
退出mysql
因为上线的应用为laravel 5.5版本开发的,为了之后的兼容性问题,ubuntu14.04直接安装的mysql不是较新版本,因此要升级一下mysql:
cd ~
wget https://dev.mysql.com/get/mysql-apt-config_0.8.1-1_all.deb
sudo dpkg -i mysql-apt-config_0.8.1-1_all.deb
解压安装包后会弹出框,选择好mysql 5.7版本后选择ok 然后继续
然后,更新包索引:sudo apt-get update
然后,安装MySQL-server:sudo apt-get install mysql-server
然后,升级全部的Mysql数据库:sudo mysql_upgrade -u root -p
最后,重启mysql server:sudo service mysql restart
登陆一下mysql看看是否已经升级完毕,成功了进入下一步
安装nginx
这里有点迷糊,阿里云的纯净镜像应该是不带Apache2的,但是安装完php7.1后此时检查已经安装了Apache2在服务器上,真是巨坑。。在安装Nginx之前,把Apache卸载掉,不然之后萌新会遇到各种奇怪的错误。
sudo service apache2 stop
update-rc.d -f apache2 remove
sudo apt-get remove apache2
删除完了之后更新一下包列表sudo apt-get update
然后安装Nginx sudo apt-get install nginx
安装完成后可以输入公网地址访问,成功的话可以看到Nginx的自带欢迎页面
配置PHP
sudo vim /etc/php/7.1/fpm/php.ini
命令行模式下输入/
进入查找模式,搜索fix_pathinfo
将cgi.fix_pathinfo=1
改为cgi.fix_pathinfo=0
配置Nginx
命令sudo vim /etc/nginx/sites-available/default
server {
listen 80 default_server;
listen [::]:80 default_server ipv6only=on;
root /var/www/sample/public;
index index.php index.html index.htm;
# Make site accessible from http://localhost/
server_name 你的公网IP(有域名直接填域名);
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;
}
# deny access to .htaccess files, if Apache‘s document root
# concurs with nginx‘s one
#
#location ~ /\.ht {
# deny all;
#}
}
root 后填的是laravel项目的public路径,根据项目名称确定这里的信息
安装Composer
cd ~
curl -sS https://getcomposer.org/installer | php
再使用命令全局可用composer sudo mv composer.phar /usr/local/bin/composer
因为国内墙的原因,换一下镜像
composer config -g repo.packagist composer https://packagist.phpcomposer.com
创建新站点
- 移步/var/www目录下.使用
git clone
整个项目,然后/var/www目录下就有你的项目了
后面以sample项目为例子操作:git clone https://balabala/sample.git
cd sample
进入/var/www/sample目录.cp .env.example .env
- 用vim更改一下配置文件
vim .env
运行mysql,创建一个新的数据库CREATE DATABASE sample CHARACTER SET =utf8
```
APP_NAME=sample
APP_ENV=local
APP_KEY=base64:c656DOWHg7B9THMemhSV67+aRHOeOBypwNZrybaoGzs=
APP_DEBUG=true
APP_LOG_LEVEL=debug
APP_URL=http://localhost
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=sample
DB_USERNAME=root
DB_PASSWORD=数据库密码
BROADCAST_DRIVER=log
CACHE_DRIVER=file
SESSION_DRIVER=file
SESSION_LIFETIME=120
QUEUE_DRIVER=sync
REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379
MAIL_DRIVER=log
MAIL_HOST=smtp.mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null
PUSHER_APP_ID=
PUSHER_APP_KEY=
PUSHER_APP_SECRET=
PUSHER_APP_CLUSTER=mt1
- 在/var/www/sample目录下运行命令`composer install`
- 完成后运行`php artisan key:generate`生成密钥
- 命令`php artisan migrate`迁移数据库
- 命令`php artisan up`上线
最后给予目录权限
sudo chmod -R 775 storage/
sudo chown -R www-data:www-data /var/www/laravel-blog
--------
####重启Nginx服务
如果运气够好,环境一致的话,按照步骤已经部署完成,重启Nginx
sudo service nginx restart
sudo service php7.1-fpm restart
```
此时在另一设备上从浏览器输入服务器的公网ip已经可以访问您的Laravel项目了!
部署完成!!
新手搞这个部署到处找资源,然后磕磕绊绊终于部署成功,很开心。写这个教程希望可以帮助到更多的希望接触laravel开发的同学们~
致谢
一步步教你部署laravel到服务器
laravel部署上线的最佳实践
laravel部署LNMP脚本
配置过程中这些文章给我很大帮助!脚本部署试了一次但是失败了,以后再做尝试~