本文主要讲网站程序在云服务器迁移时遇到的问题,和各家云服务的比较选择。
之前用laravel 5.1开发了一个社区交流的程序,放在亚马逊的EC2实例上,是一个AIM 亚马逊自家构建的linux服务器,不能不说亚马逊的服务是一流的,基本没有多少坑给你踩,但是自从发现 linode, DigitalOcean, Rackspace之后,比较了一下性价比,就有了迁移的想法,毕竟便宜了一半。 linode.com比较有历史,而且套餐是2G内存,24G SSD硬盘,10美金一个月怎么样都比亚马逊要来得实惠,至于Digital Ocean的最便宜的选择是 5美金一个月,但是只有512内存,走一点程序就爆了,所以还是选择linode,速度和亚马逊比也不算慢。 至于其他试了一下Nitrous.com,都大同小异。
但各家云服务商最流行的是Ubuntu Linux 14.X 和16.X, Ubuntu本身一般自带的PHP版本是7.0,Apache版本是2.4.9
我选择的是Ubuntu Linux 14.X
要安装以下软件:
PHP5.5 –PHP5.6
Apache2.4.16, 但是这个和ubuntu不配,它家的安装包没有这个package,只能装Apache2.4.9
Composer 1.0-dev (2015-10-13)
Laravel5.1.X
---------------------------------------------------------------------
先说PHP的配置,要使用Laravel的话,就要具备某些模块,这在https://laravel.com/docs/5.3这里说的明白,不要怀疑,没有一定会报错。
- PHP >= 5.6.4 (我装的Laravel5.1,所以还可以用PHP5.5.9 )
- OpenSSL PHP Extension
- PDO PHP Extension
- Mbstring PHP Extension
- Tokenizer PHP Extension
- Mcrypt PHP Extension 这个是我加的
PDO就是连接数据库的,我用的sqlite,所以还要装
sudo apt-get install php5-sqlite,
用mysql的同学要装
sudo apt-get install php5-mysql,
git clone 程序地址 下来后,改目录名字为你在apache配置的路径名, 例如 huiqiao,
这里要把目录和目录下的文件改成apache2的组,可以这样写:
sudo chown –R www-data:www-data huiqiao
还要给两个二级子目录 775的权限,可以这样写:
sudo chmod –R 775 huiqiao/storage huiqiao/bootstrap
到了这里刷浏览器,还是有问题,不出现页面,于是:
sudo rm composer.lock
sudo composer update
composer dump-autoload
访问网站出现了首页,但是点击分页面,发现路径不起作用,这里浪费了很多时间, 因为我不知道rewrite的作用, 以为数据库坏了,重新migrate:refresh了数据库,不行又换mysql试了一次,还是不行。最后发现是mod_rewrite模块没有enabled,这个是apache2的问题,不是php的问题,一直没有找到重点。 因为Laravel的public目录里有个.htaccess文件,作用是路径重写。 在不同的linux里面启用的方法可能不一样在debian和ubuntu里是这样:
su a2enmod rewrite (这个命令就是apache2 enable module的意思)
su service apache2 restart
或 /etc/init.d/apache2 restart
这些问题的解决都可以依靠 在 /var/www/html/下面写个
echo “<?php phpinfo();”>index.php 探针,然后可以看到apache,php都有哪些模块active的, 还可以看到apache2的用户组
以上是linode的,下面是亚马逊的,太全了。
有钱就不折腾,呵呵。