阿里云上配置Laravel上线环境(详细)

本地laravel项目部署上线

操作环境

服务器:阿里云ECS公用镜像 ubuntu14.04 本地:win10


准备

首先用ssh连接到服务器,我用的是Git Bash,阿里云在初始化服务器时可以选择密钥,配置好后启动服务器,在win10下打开Git Bash,命令ssh root@你的公网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_pathinfocgi.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脚本
配置过程中这些文章给我很大帮助!脚本部署试了一次但是失败了,以后再做尝试~

posted @ 2018-02-28 20:33  ustc_rjgc2017  阅读(347)  评论(0编辑  收藏  举报