本文根据慕课网的视频教程练习,感谢慕课网!php
慕课视频学习地址:https://www.imooc.com/video/14218。html
慕课的参考文档地址:https://github.com/apanly/mooc/tree/master/va mysql
Laravel的官网地址:https://www.golaravel.com/nginx
laravel对php的版本有要求,laravel
本环境的php版本是5.5.9,因此只能选择laravel版本为5.2和以前的版本。git
查看laravel的安装教程:https://docs.golaravel.com/docs/5.0/installation/github
环境要求:sql
检查各项是否已安装,若是php5-json没有安装:sudo apt-get install php5-json。apache
而后按照文档安装:json
方式一,经过 Laravel 安装工具:
首先,使用 Composer 下载 Laravel 安装包:
composer global require "laravel/installer=~1.1"
而后建立项目:
laravel new 项目名字
注意若是laravel不是全局的命令,则能够执行使用全路径:
~/.composer/vendor/bin/laravel new 项目名字
结果虽然框架建立下来了,可是报了不少错误问题,显示环境不符合要求,
这样默认下载的是最新的laravel框架,须要php版本为7以上,框架中还缺乏vender目录,因此尝试第二种方式下载框架。
方式二,经过 Composer Create-Project:
composer create-project laravel/laravel 路径/项目名字 5.0 --prefer-dist
结果显示:
Problem 1 - laravel/framework v5.0.9 requires ext-mcrypt * -> the requested PHP extension mcrypt is missing from your system. To enable extensions, verify that they are enabled in your .ini files: - /etc/php5/cli/conf.d/05-opcache.ini - /etc/php5/cli/conf.d/10-pdo.ini - /etc/php5/cli/conf.d/20-gd.ini - /etc/php5/cli/conf.d/20-json.ini - /etc/php5/cli/conf.d/20-mysql.ini - /etc/php5/cli/conf.d/20-mysqli.ini - /etc/php5/cli/conf.d/20-pdo_mysql.ini - /etc/php5/cli/conf.d/20-readline.ini
提示没有这个mcrypt扩展,框架中依然没有vender目录。
至于提示中的那些.ini文件在/etc/php5/cli/conf.d/下都已经存在。
搜索mcrypt官方文档,http://php.net/manual/zh/mcrypt.installation.php。
提示:
Note, for Ubuntu, simply installing php5-mcrypt did not get mcrypt to work. You need to execute the following commands as root to enable it:
//安装php5-mcrypt ,这一步已经安装过,跳过。
sudo apt-get install php5-mcrypt
//移动到指定目录下,发现文件已经在指定的目录里,也跳过。
mv -i /etc/php5/conf.d/mcrypt.ini /etc/php5/mods-available/
//开启扩展,执行一下
sudo php5enmod mcrypt
//重启apache
sudo service apache2 restart
而后从新建立项目,结果又有错误,显示以下:
proc_open(): fork failed - Cannot allocate memory The archive may contain identical file names with different capitalization (which fails on case insensitive filesystems) Unzip with unzip command failed, falling back to ZipArchive class The following exception is caused by a lack of memory or swap, or not having swap configured Check https://getcomposer.org/doc/articles/troubleshooting.md#proc-open-fork-failed-errors for details PHP Warning: proc_open(): fork failed - Cannot allocate memory in phar:///usr/local/bin/composer/vendor/symfony/console/Application.php on line 959 Warning: proc_open(): fork failed - Cannot allocate memory in phar:///usr/local/bin/composer/vendor/symfony/console/Application.php on line 959 [ErrorException] proc_open(): fork failed - Cannot allocate memory
搜索到的结论是可能交换空间不足,须要创建交换空间:
sudo /bin/dd if=/dev/zero of=/var/swap.1 bs=1M count=1024 sudo /sbin/mkswap /var/swap.1 sudo /sbin/swapon /var/swap.1
再次建立项目,框架下载成功。
nginx配置:
建立配置文件:
cd /etc/nginx/conf.d/
touch laravel.conf
编辑内容:
sudo vim laravel.conf
server{ server_name study.laravel.com; root /home/www/laravel/public; index index.php index.html; location / { try_files $uri $uri/ /index.php?$args; } location ~ \.php$ { include fastcgi_params; fastcgi_pass 127.0.0.1:9000; try_files $uri = 404; } }
而后在host文件中增长
IP地址 study.laravel.com
重启nginx,而后在本地电脑上的host里也增长配置
IP地址 study.laravel.com
配置apache:
进入apache的配置目录:
cd /etc/apache2/sites-enabled/
建立配置文件:
touch laravel.conf
编辑配置文件:
sudo vim laravel.conf
<VirtualHost *:8888> ServerName study.laravel.com DocumentRoot /home/www/laravel/public/ ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost>
而后重启apache,完成。
有错误:
[error] 905#0: *1 FastCGI sent in stderr: "PHP message: PHP Fatal error: Uncaught exception 'UnexpectedValueException' with message 'The stream or file "/home/www/laravel/storage/logs/laravel-2018-08-31.log" could not be opened: failed to open stream: Permission denied' in /home/www/laravel/vendor/monolog/monolog/src/Monolog/Handler/StreamHandler.php:107 Stack trace: #0 /home/www/laravel/vendor/monolog/monolog/src/Monolog/Handler/RotatingFileHandler.php(107): Monolog\Handler\StreamHandler->write(Array) #1 /home/www/laravel/vendor/monolog/monolog/src/Monolog/Handler/AbstractProcessingHandler.php(37): Monolog\Handler\RotatingFileHandler->write(Array) #2 /home/www/laravel/vendor/monolog/monolog/src/Monolog/Logger.php(337): Monolog\Handler\AbstractProcessingHandler->handle(Array) #3 /home/www/laravel/vendor/monolog/monolog/src/Monolog/Logger.php(616): Monolog\Logger->addRecord(400, 'exception 'Unex...', Array) #4 /home/www/laravel/vendor/laravel/framework/src/Illuminate/Foundation/Exceptions/Handler.php(47): Monolog\Logger->error('exception 'Unex...'... PHP message: PHP Fatal error: Uncaught exception 'UnexpectedValueException' with message 'The stream or file "/home/www/laravel/storage/logs/laravel-2018-08-31.log" could not be opened: failed to open stream: Permission denied' in /home/www/laravel/vendor/monolog/monolog/src/Monolog/Handler/StreamHandler.php:107 Stack trace: #0 /home/www/laravel/vendor/monolog/monolog/src/Monolog/Handler/RotatingFileHandler.php(107): Monolog\Handler\StreamHandler->write(Array) #1 /home/www/laravel/vendor/monolog/monolog/src/Monolog/Handler/AbstractProcessingHandler.php(37): Monolog\Handler\RotatingFileHandler->write(Array) #2 /home/www/laravel/vendor/monolog/monolog/src/Monolog/Logger.php(337): Monolog\Handler\AbstractProcessingHandler->handle(Array) #3 /home/www/laravel/vendor/monolog/monolog/src/Monolog/Logger.php(616): Monolog\Logger->addRecord(400, 'exception 'Symf...', Array) #4 /home/www/laravel/vendor/laravel/framework/src/Illuminate/Foundation/Exceptions
还有错误,而后给文件增长权限:
chmod -R 777 storage/ chmod -R 777 bootstrap/cache/
再次访问,错误消失,访问项目成功。
总结:
(1)安装laravel框架时老是出问题,须要一点点分析解决,有时很耗时间,须要耐心。
(2)发现错误日志的时间不对,设置时区为上海的命令为:
sudo cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime