阿里云 ECS 服务器 Ubuntu14.04 部署 Laravel 5.5 项目上线
系统环境
服务器:阿里云 ECS 公用镜像 ubuntu14.04 64位 本地:Mac OS
补充说明:国内服务器备案比较繁琐,购买了香港服务器,同系统按照此文步骤也部署成功。
准备工作
- 本地连接到服务器,个人使用 SecureCRT
- 下载语言包,解决不同语言之间可能发生的冲突
sudo apt-get update sudo apt-get install -y language-pack-en-base
-y
参数的意思是直接安装无需确认
安装完后运行locale-gen en_US.UTF-8
- 在服务器上安装 Git
sudo apt-get install git
配置环境
一:安装 PHP 7.1
ppa 方式安装 php7.1 : sudo apt-get install software-properties-common
添加 php7 的 ppa sudo LC_ALL=en_US.UTF-8 add-apt-repository ppa:ondrej/php
,
完成后再运行 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
安装过程中需要输入 2 次密码确认,安装完成后 mysql -u root -p
登陆测试,能正常登陆即安装完成。exit;
退出 mysql
ubuntu14.04 直接安装的 mysql 不是较新版本,为了更好的兼容 Laravel 5.5 项目,因此要升级 mysql 为 5.7 版本
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 查看是否已经升级完毕,成功升级 5.7 版本进入下一步
四:安装 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 的自带欢迎页面
五:配置 PHPsudo vim /etc/php/7.1/fpm/php.ini
命令行模式下输入/
进入查找模式,搜索fix_pathinfo
将cgi.fix_pathinfo=1
改为cgi.fix_pathinfo=0
六:配置 Nginxsudo 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;
charset utf-8;
# 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;
#}
}
同服务器多个站点,可以再复制一次以上内容写入 default
文件中,注意要删除 default_server
默认站点只能添加一个。
配置好之后,运行 Nginx -t
如果出现报错,尝试删除其他站点的 ipv6only=on
七:安装 Composer
cd ~
curl -sS https://getcomposer.org/installer | php
再使用命令全局可用 Composer sudo mv composer.phar /usr/local/bin/composer
sudo apt-get install zip unzip
安装 zip unzip 包,避免 Composer 可能因缺少应用造成错误
八:创建新站点cd /var/www
目录下,使用 git clone
整个项目,然后 /var/www
目录下就有你的项目了
后面以 sample 项目为例子操作:git clone https://github.com/xxxxxx/sample.git
cd 进入/var/www/sample目录. cp .env.example .env
用 vim 更改一下配置文件vim .env
,vim 编辑器使用参考10分钟掌握Linux vi编辑器常见命令的使用,最简单的vi编辑器教程
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
运行 mysql,创建一个新的数据库CREATE DATABASE sample CHARACTER SET =utf8
在/var/www/sample目录下运行命令composer install
完成后运行php artisan key:generate
生成密钥
命令php artisan migrate
迁移数据库,可能出现数据库拒绝访问的错误,解决方案参考MySQL5.7 实现远程连接
命令php artisan up
上线
最后给目录授权
sudo chmod -R 775 storage/
sudo chown -R www-data:www-data /var/www/sample
九:重启Nginx
如果环境一致的话,按照步骤已经部署完成,重启Nginx
sudo service nginx restart
sudo service php7.1-fpm restart
此时在另一设备上从浏览器输入服务器的公网ip已经可以访问您的Laravel项目了!
部署完成!!
致谢
此文大部分内容转载于本地laravel项目部署上线,新人部署环境遇到太多坑,感谢原贴作者精心整理,按照步骤部署在迁移数据库的时候遇到拒绝访问的问题已经贴出解决链接,希望能帮助更多新人。
本作品采用《CC 协议》,转载必须注明作者和本文链接
请问楼主有考虑过使用docker部署吗?
一键部署,源自 summer
@xhh110 这个我试过,不知道什么原因部署失败了。。。
@Yvan 我的 16.04 可以完美的运行
No hint path defined for [sudosu] 在页面上提示这个需要怎么解决呢?
已解决。。。
香港服务器的速度怎么样
Class Illuminate\Session\middleware\AuthenticateSession does not exist
出现这个 文件是存在的
很详细 哈哈 :stuck_out_tongue_closed_eyes:
W: GPG error: http://repo.mysql.com trusty InRelease: The following signatures were invalid: KEYEXPIRED 1487236823 KEYEXPIRED 1487236823 KEYEXPIRED 1487236823
在更新数据库版本包索引时出的。更新失败了。。有什么解决办法吗
阿里云国际不是要手机验证吗,楼主怎么弄上的?
腾讯云ubuntu亲测可行。感谢楼主!!
请问怎么我配置完Nginx后打开网页还是Nginx的欢迎页面
谢谢楼主,配置了3遍终于配置完成。
安装mysql的时候,没有5.7,只有5.6
我错了,多点一步就看到了…………,尴尬了
locale-gen en_US.UTF-8
也要使用sudo
命令 :stuck_out_tongue_closed_eyes:我直接访问39.105.111.181,可以打开默认的网站,但是通过39.105.111.181:8001,就无法打开,
nginx的error.log里也没有内容。
大佬,我该怎么办,百度也没找到解决这个问题的方法,我服务器的防火墙也没开启。
楼主🐂🍺,我用那个自动部署任务弄半天都弄不好,参照您的教程一次成功。 :+1: :+1: :+1: :+1: :+1:
403 Forbidden 怎么解决 一步一步按照步骤配置的
博客:docker 部署 Laravel 上线访问 403 记录 解决我的问题