阿里雲上配置Laravel上線環境(詳細)

本地laravel項目部署上線

操做環境

服務器:阿里雲ECS公用鏡像 ubuntu14.04 本地:win10php


準備

首先用ssh鏈接到服務器,我用的是Git Bash,阿里雲在初始化服務器時能夠選擇密鑰,配置好後啓動服務器,在win10下打開Git Bash,命令ssh root@你的公網iphtml

配置環境前下好language-pack-en-base這個包,解決不一樣語言之間可能發生的衝突,-y參數的意思是直接安裝無需確認。mysql

sudo apt-get update
sudo apt-get install -y language-pack-en-base

安裝完成後運行locale-gen en_US.UTF-8nginx

再在服務器上安裝Git sudo apt-get install gitlaravel


配置環境

安裝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查看版本,應顯示相似信息git

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退出mysqlsql

由於上線的應用爲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 而後繼續apache

而後,更新包索引:sudo apt-get updatejson

而後,安裝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腳本 配置過程當中這些文章給我很大幫助!腳本部署試了一次可是失敗了,之後再作嘗試~

相關文章
相關標籤/搜索