Magento2尝鲜

Magento已在进行Magento 2的开发,测试版已放出,下载地址为https://github.com/magento/magento2,安装方法请参照:

[New Update] How to install Magento 2.0: Clear & detail-oriented guide to set up easily

其中composer在安装过程中,会要求翻墙才能连接到相应的服务器去下载资源,这里不进行赘述。整个安装页面进行了优化,相比1.x.x而言要更加高大上了,以下是安装完成后后台的登录页面:

Magento 2登录页面

以下是后台页面显示效果,可以看出整个界面做了比较大的调整:

Magento 2后台页面

当然最大的更改是整个代码的目录结构,如我们熟悉的skin目录在Magento2中被完全去除,主题都放到了app\design\frontend\Magento下等等。

常见问题

1.Mac使用XAMPP php替代系统(~/.bash_profile)
Magento 2最新版本要求使用PHP 7,如果所使用的XAMPP集成的是PHP 5请去Apache Friends下载最新版本

export XAMPP_HOME=/Applications/XAMPP
export PATH=${XAMPP_HOME}/bin:${PATH}
export PATH

2.缺少ext-intl的问题
切换到Magento根目录执行composer install时,有可能会出现多种报错,像mcrypt之类的问题通过常见问题1中的方法即可解决,但对于intl缺失的问题,需要单独进行安装,报错内容如下:

Your requirements could not be resolved to an installable set of packages.

  Problem 1
    - The requested PHP extension ext-intl * is missing from your system. Install or enable PHP's intl extension.

解决步骤如下:

# 下载最新版Autoconf
http://ftp.gnu.org/gnu/autoconf/autoconf-latest.tar.gz
# 解压后进行该目录执行安装
./configure
make
sudo make install
# 根据XAMPP的PHP版本到PHP官网下载对应版本的源码,如Alan现在使用的是7.1.4
http://jp2.php.net/distributions/php-7.1.4.tar.gz
# 解压进入ext/intl文件夹,执行如下命令来安装
/Applications/XAMPP/bin/phpize
./configure --enable-intl --with-php-config=/Applications/XAMPP/bin/php-config --with-icu-dir=/Applications/XAMPP/xamppfiles/
make
sudo make install
# 安装完成后重启XAMPP的Apache服务,用以下命令查看是否安装成功
php -m | grep intl 
# 再次进入Magento 2的根目录执行以下命令来进行依赖包的安装
composer install

Magento的安装

前面我们完成了Magento的环境搭建,现在我们开始正式安装Magento,安装前需要做一些准备工作,先来创建所需的目录:

sudo mkdir -p /srv/www/magento_dev/public_html/
sudo mkdir /srv/www/magento_dev/logs/
sudo mkdir /srv/www/magento_dev/ssl/

其中的-p为强制创建,magento_dev可根据个人喜好进 行修改。接下来安装SVN

sudo apt-get install subversion -y

安装完SVN后切换到magento_dev目录并使svn指令运行最新版本的Magento(当前为1.9)

cd /srv/www/magento_dev
sudo svn export –force http://svn.magentocommerce.com/source/branches/1.9 public_html/

拷贝完所有的Magento文件后,需要进行一些权限方面的设置:

sudo chown -R www-data:www-data public_html/ (PHP5-FPM默认属于www-data用户组)
sudo chmod -R 755 public_html/var/
sudo chmod -R 755 public_html/media/
sudo chmod -R 755 public_html/app/etc/

下面就需要创建一个数据库来供Magento安装时使用,首先通过之前用过的指令进入到MySQL命令行

sudo mysql -uroot -palanhou2014

下面就可以使用MySQL的指令来创建一个空数据库了:

create database magento_dev; (可通过show databases;指令查看已创建的数据库)

出于安全考虑通常在实际运用中不会直接使用root用户来操作数据库,因为这样一旦被入侵的话除当前数据库外的所有数据库都存在风险,下面我们就来创建一个针对magento_dev的用户:

GRANT ALL PRIVILEGES ON magento_dev.* TO ‘alan’@’localhost’ IDENTIFIED BY ‘alanhou2014’; (其中alan和alanhou2014分别为用户名和密码,可根据需要调整)

接下来我们需要配置Apache2,为其添加一些模块(Modules),当前Apache版本中包含如下指令可供使用:

  • a2ensite: 在sites-available和sites-enabled文件夹下的vhost文件间创建符号连接(symlink或symbolic link),以允许Apache服务器读取这些文件;
  • a2dissite: 删除由a2ensite所创建的符号连接,从而直接disable整个站点;
  • a2enmod: 这条命令主要用于创建mods-enabled目录与模块配置文件间的符号连接;
  • a2dismod: 这条指令会删除mods-enabled目录中的符号连接,进而阻止Apache加载指定模块。

Magento中会使用mod_rewrite模块来重写url,首先通过如下指令来激活mod_rewrite

sudo a2enmod rewrite

然后在sites-available目录下创建一个virtual host文件:

sudo nano /etc/apache2/sites-available/magento.localhost.com

粘贴如下内容:

<VirtualHost *:80>
ServerAdmin magento@locahost.com
ServerName magento.localhost.com
DocumentRoot /srv/www/magento_dev/public_html

<Directory /srv/www/magento_dev/public_html/>
Options Indexes FollowSymlinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
ErrorLog /srv/www/magento_dev/logs/error.log
LogLevel warn
</VirtualHost>

按下Ctrl+O写入,Ctrl+X退出,下面激活站点:

cd /etc/apache2/sites-available
sudo mv magento.localhost.com magento.localhost.com.conf
sudo a2ensite magento.localhost.com.conf
sudo apache2ctl restart

采取以上做法是了为解决ERROR: Site magento.localhost.com does not exist!的错误。如果上面步骤您都成功了的话,下一步就开始绑定host文件,Windows如果系统盘是C盘的话,打开C:\system32\drivers\etc\hosts文件,在最后添加一条192.168.156.1 magento.localhost.com,前面的ip可通过ifconfig进行查询。

(似乎在新版ubuntu中默认的访问路径为/var/www或/var/www/html,通过上述方法并未能成功访问安装文件,Alan直接在/var/www/html下添加了相应的文件夹,因而采用了http://magento.localhost.com/magento_dev/public_html/作为根目录。)

下一步就可以按照流程来进行Magento安装了,你也可参照XAMPP,Magento环境安装及XAMPP删除一节使用xampp来进行magento的安装。

Magento安装

下一节我们来介绍一下Magento的基本结构

 

Zencart本地安装及模板添加

Zencart是另一个比较流行的网店系统,安装也十分的简单,基本可以参考前面Magento本地安装进行配置。同样是需要在phpmyadmin中创建一个对应的数据库,然后按流程一步步安装,只是出于安全考虑,初次登录可能需要您修改admin文件夹的名称以及重置密码。

Zencart设置

如何添加Zencart模板?

为Zencart添加模板首先需要将您下载的模板解压缩复制到includes\templates文件夹下,然后登录Zencart后台点击菜单栏Tools>Template Selection,在右边点击Edit在下拉列表中选择相应的模板名称,然后点击Update更新即可。

Zencart模板选择

XAMPP,Magento环境安装及XAMPP删除

现在建立一个网站已经相当容易,像alanhou.org的博客使用的Wordpress,现在也非常流行,让像我这样不太懂程序的人也可以轻松运营一个博客。有的时候您可能想要在购买空间和域名之前先熟悉一下或者先不在线上进行编辑,这时您可以安装本地的服务器环境,如WAMP,MAMP,XAMPP等集成环境(AMP分别指Apache,MySQL,PHP),这些在网上都非常容易下载。而有时您需要的可能不仅仅是博客,而是想要赶一下电子商务的浪潮,现在同样有很多流行的网站系统,这里以Magento为例进行简单的说明。

首先安装xampp本地服务器环境,按照安装流程进行即可,安装完成后您将能看到一个xampp的控制窗口,运行本地服务器环境通常您仅需开启Apache和MySQL这两项服务。

Xampp control

Xampp与Skype冲突

在实际操作中您可能会遇到在上图的控制面板中无法成功开启Apache服务的情况,这时请检查是否同时开启了Skype,而Skype会占用Apache默认使用80端口。您可以选择关闭Skype,或者点击Skype菜单栏的工具>选项>高级>连接,将默认勾选的”将80端口与443端口作为接入连接的备用端口”去除;您还以选择修改httpd.conf文件中的”Listen 80″字段,将默认的80端口修改为其它端口。

安装Magento

下载magento解压缩后放到htdocs文件下,如C:\xampp\htdocs(根据安装路径会略有不同,以下所说C:\都是指安装路径),同意协议直接点下一步,在配置页可能会看到PHP extension “curl” must be loaded的警告,此时在C:\xampp\php下找到php.ini文件,使用ctrl+F搜索curl,将extension=php_curl.dll前面的分号;删除保存即可(此时您需要重启Apache以使修改生效)。

如果还不可以的话,您需要在xamp中找到libeay32.dll, ssleay32.dll, php5ts.dll, php_curl.dll,前3个在php文件夹下,最后1个在该文件夹下的ext文件夹内(本地路径为C:\xampp\php\ext)这些文件,然后把它们都拷贝到C:\Windows\System32目录下,再重启apache即可。

PHP extension "curl" warning

打开http://localhost/phpmyadmin在MySQL版块创建一个数据库命名为Magento(或其它的名称)如果您在安装后修改了数据库的密码等,可打C:\xampp\htdocs\magento\app\etc下的local.xml修改数据库用户名和密码,在CDATA[ ]的框中输入或修改相应的内容即可
<username><![CDATA[root]]></username>

<password><![CDATA[ ]]></password>

安装Magento配置页面
后台登陆地址为http://localhost/magento/index.php/admin,如若无法登录:可能是由于浏览器在解析没有.的域名时候有问题,请将http://localhost换成
http://127.0.0.1试试 ,
当然您有可以通过修改host文件(C:\Windows\System32\drivers\etc)的方法实现
Alan测试使用的是下面的地址是,可以正常运行( 如果这些方法都不行的话,这可能是由于magento的cookie的问题,建议您使用非ie内核的浏览器,如firefox)
127.0.0.1        test.localhost.com

修改MySql密码phpmyadmin无法登录

在您修改了MySql之后可能会出现下面的提示:

Error
MySQL said:

Cannot connect: invalid settings.

phpMyAdmin tried to connect to the MySQL server, and the server rejected the connection. You should check the host, username and password in your configuration and make sure that they correspond to the information given by the administrator of the MySQL server.

这是因为您没有在phpmyadmin的相应文件中进行更新密码操作的原因。方法很简单,用记事本打开安装目录下的phpMyAdmin文件夹(如C:\xampp\phpMyAdmin)下的config.inc.php文件,然后找到下面的部分,然后更新密码即可。

$cfg[‘Servers’][$i][‘user’] = ‘root’;

$cfg[‘Servers’][$i][‘password’] =’请在些处更新密码’;

xampp及Linux站点配置相关知识

在日常使用中Apache的默认端口为80,有时会与其它服务的端口号相冲突,这时可通过修改httpd.conf中对于端口号的配置来解决冲突问题:
#Listen 0.0.0.0:80
#Listen [::]:80
Listen 80(此处可修改为8080等端口)

ServerName localhost:80(同样此处可修改为8080等端口)

配置站点根目录可在httpd.conf文件中修改以下两处地址,XAMPP中的默认地址为D:/xampp/htdocs:
DocumentRoot “D:/xampp/htdocs”
<Directory “D:/xampp/htdocs”>

关于站点的配置信息需要在httpd-vhosts.conf文件中进行配置,要使用这些配置需要在httpd.conf中配置该文件的地址,#表示注释,若Include前有#需将其删除:
# Virtual hosts
Include “conf/extra/httpd-vhosts.conf”
httpd-vhosts.conf中的主要配置信息:
<VirtualHost *:80>
ServerAdmin postmaster@dummy-host2.localhost 用于配置管理邮箱
DocumentRoot “D:/xampp/htdocs/dummy-host2.localhost” 用于配置站点路径
ServerName dummy-host2.localhost 用于配置域名
ServerAlias www.dummy-host2.localhost 用于配置别名
ErrorLog “logs/dummy-host2.localhost-error.log” 用于配置错误日志存放地址
CustomLog “logs/dummy-host2.localhost-access.log” combined 用于配置自定义日志存放地址
</VirtualHost>

上面的信息通常站点路径和域名较为重要,其它可根据实际需要来进行配置。此外如果在本地为站点配置了一个自定域名,需要在Windows系统盘下的host文件中配置相应的域名来实现该域名的访问。

删除xampp部分文件无法删除

此外在卸载xampp您可能会遇到xampp 文件夹无法完全删除的情况,这通常是由于您将mysql创建为了一项服务。解决方案就是在services里找到mysql, disable该服务。

然后以管理员权限在命令窗口(可以通过在开始菜单中或按Win+R快捷键然后输入cmd)输入sc delete mysql,此时您就可以正常删除xmapp目录下的所有文件了。

删除Services中的MySQL

 

顺便说一下在命令窗口修改MySQL数据库root用户密码使用的代码如下:

另外在做迁移时打数据库可以选择phpmyadmin也可以通过命令行,在Windows命令行中cd到MySQL的bin目录,如cd C:\xampp\mysql\bin,然后使用mysqldump命令进行打包
mysqldump -u root -p -–all-databases > allbackupfile.sql

解决Xampp与VMware冲突的问题

在开启了VMware的情况下启动Xampp会出现类似如下这样的443端口已被占用的报错

Port 443 in use by “E:\VMware\vmware-hostd.exe -u “C:\ProgramData\VMware\hostd\config.xml”” with PID 10784!

解决方法是在VMware(管理员权限)的主界面点击Edit>Preferences>Shared VMs,然后点击Disable Sharing修改HTTPS后的端口号(如改为446),再点击Enable Sharing,这样就可以正常启动Xampp服务了。

VMware修改端口

Mac系统中Xampp的安装

安装方法比较简,双击下载下来的后缀名为dmg的安装文件,然后按提示下一步下一步完成安装即可

Mac系统安装Xampp

Mac上Xampp配置进程

安装完成后可以在Lauchpad中找到Xampp并双击其中的程序,在弹出的窗口中点击Manager Servers选项卡,即可以选择开启或关闭Apache、MySQL服务。开启服务后在浏览器中输入http://localhost/xampp和http://localhost/phpmyadmin即可以访问到和Windows界面下同样的Xampp主页面和数据库管理界面。

 

Mac上Xampp的程序界面

另一种打开服务的方法是在终端(Terminal)中执行

/Applications/XAMPP/xamppfiles/xampp start

/Applications/XAMPP/xamppfiles/xampp stop

来同时开启/关闭Apache和MySQL服务,在执行之前请选输入sudo su切换到root权限,否则会出现如下报错:

You need to be root to perform this action.

sh-3.2# /Applications/XAMPP/xamppfiles/xampp start
Starting XAMPP for Mac OS X 1.8.3-3...
XAMPP: Starting Apache...ok.
XAMPP: Starting MySQL...ok.
XAMPP: Starting ProFTPD...ok.
sh-3.2# /Applications/XAMPP/xamppfiles/xampp stop
Stopping XAMPP for Mac OS X 1.8.3-3...
XAMPP: Stopping Apache...ok.
XAMPP: Stopping MySQL...ok.
XAMPP: Stopping ProFTPD...ok.

Magento或其它站点的文件和Windows类似,则需要放到/Applications/XAMPP/htdocs目录下。

如果想要通过命令行输入mysql -uroot -p连接数据库会提示sh: mysql: command not found,这和Windows中的环境变量的道理是一样的,所以可以通过

1.输入/Applications/XAMPP/bin/mysql -uroot -p来实现在命令行连接MySQL

2.ln -s /applications/xampp/bin/mysql /usr/bin来做一个软链接再执行连接