Magento系统是一款开源的电子商务软件系统(e-commerce software),里面也整合了一个cms(content management system)内容管理系统,是基于 PHP Zend Framework框架开发的。Magento提供了面向对象的编程方式和MVC (Model-View-Controller)三层开发架构,使用MySQL/MariaDB作为系统数据库。这款软件是美国公司Varien Inc在2009年开始立项开发的。在过去几年,Magento已经成为世界上最受欢迎和客户信赖的电子商务建站平台。在这篇文章中,我们将一步步教你把Magento2.1部署在centos7.4系统上,包括Nginx服务器,Php7.0-pm解析,Mysql数据库。
重要:需要把CentOS7.4系统的SELinux状态设置为 enabled。 设置方法: vim /etc/selinux/config 将SELINUX=disabled改为SELINUX=enforcing 重启机器即可 reboot
Step 1 - Install Nginx
这个步骤,我们将会通过Epel的方式安装Nginx。因为Epel安装方式不是CentOS系统默认的,所以我们需要把Epel方式用yum命令安装好,
yum -y install epel-release
然后从Epel安装源开始安装Nginx
yum -y install nginx
安装好后,启动Nginx服务器,把它添加到CentOS开机默认启动。
systemctl start nginx systemctl enable nginx
Nginx 默认端口是80,你可以通过以下命令来查看Nginx是否已经启动。
netstat -plntu
如果你输入命令后无法看到这个界面,并提示'command not found',你需要安装下net-tools。
yum -y install net-tools
Step 2 - Install and Configure PHP-FPM
接下去我们要安装php环境,并让Nginx服务器支持php文件的解析。目前Magento2.1需要php7以上版本的支持,我们通过Webtatic repository安装源的方式安装php7。下载并添加一个Webtatic安装源到系统。
rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
现在输入下面的命令就可以安装PHP-FPM7所有的包和相关的扩展,为Magento部署好php运行环境。
yum -y install php70w-fpm php70w-mcrypt php70w-curl php70w-cli php70w-mysql php70w-gd php70w-xsl php70w-json php70w-intl php70w-pear php70w-devel php70w-mbstring php70w-zip php70w-soap
当PHP-FPM7安装完毕,我们需要对它的参数进行配置。我们编辑php.ini文件和php-fpm的配置文件www.conf。
vim /etc/php.ini
去掉cgi.fix_pathinfo参数的注释,就是去掉每一行的最前面的;。
cgi.fix_pathinfo=0 配置memory limit,max execution time,zlib output compression,按照下面的修改。 memory_limit = 512M max_execution_time = 1800 zlib.output_compression = On
去掉session的路径注释,并更改这个值。按照下面修改
session.save_path = "/var/lib/php/session"
最后保存退出。
下一步,用vim编辑php-fpm配置文件www.conf
vim /etc/php-fpm.d/www.conf
PHP-FPM7 运行在 'nginx'用户组下面, 把两个值都设定为nginx。
user = nginx group = nginx
我们配置php-fpm在一个socket文件下运行,而不是通过服务器端口。改变服务器的监听对象,如下面所示。
listen = /var/run/php/php-fpm.sock 这个socket文件需要指定的所有者,我们把所有者设定为nginx。 listen.owner = nginx listen.group = nginx listen.mode = 0660
最后取消第366-370的注释
env[HOSTNAME] = $HOSTNAME env[PATH] = /usr/local/bin:/usr/bin:/bin env[TMP] = /tmp env[TMPDIR] = /tmp env[TEMP] = /tmp
保存并退出。
下一步要创建一个session目录和php sock目录。然后把这两个目录的所有者都改为‘nginx’。为session path创建一个新的目录。
mkdir -p /var/lib/php/session/ chown -R nginx:nginx /var/lib/php/session/
为php-fpm创建一个本地目录
mkdir -p /run/php/ chown -R nginx:nginx /run/php/
PHP-FPM7配置已经完成,可以在开机时自动启动该服务。用systemctl命令。
systemctl start php-fpm systemctl enable php-fpm
如果输入的这些命令都没有错误提示,输入下面的命令你能看到下图的信息,这样说明PHP-FPM7已经运行了。
netstat -pl | grep php-fpm.sock
Step 3 - Install MySQL 5.7 Server
Magento 2.1需要最新版本的MySQL,你能使用MySQL 5.6或5.7版本的。在这个教程中,我们将使用5.7版本的MySQL服务器。下载并添加最新版本的MySQL地址到yum仓库。
yum localinstall https://dev.mysql.com/get/mysql57-community-release-el7-9.noarch.rpm
现在开始用yum命令安装MySQL 5.7。
yum install mysql-community-server
当安装完成,启动mysql服务器,并把mysql设为开机时自动启动。
systemctl start mysqld systemctl enable mysqld
MySQL 5.7安装完了会有一个默认的root密码,它是储存在mysqld.log文件中。使用grep命令可以查看这个默认的密码。
grep 'temporary' /var/log/mysqld.log
现在你能看到当前的root密码,你应该马上修改这个缺省的密码。首先用下面的方式连接上mysql。
mysql -u root -p TYPE DEFAULT PASSWORD
修改密码的方式用下面的查询语句。 我将使用这个新的密码 'Hakase-labs123@' 。
ALTER USER 'root'@'localhost' IDENTIFIED BY 'admin123@'; flush privileges;
现在mysql的默认密码已经修改好了。下一步我们创建一个新的用户和新的数据库为安装Magento2.1做准备。我们将创建一个名叫'magentodb'的新数据库和一个新的用户'magentouser',该用户的登录密码为'Magento123@'。然后把mysql所有的权限赋给这个用户。连接上mysql数据库后,执行下面的语句就可以完成操作。
create user magentouser@localhost identified by 'Magento123@'; grant all privileges on magentodb.* to magentouser@localhost identified by 'Magento123@'; flush privileges;
至此MySQL 5.7 已经安装完毕,为安装Magento2.1准备的数据库和相关的条件也已准备就绪。
Step 4 - Install and Configure Magento
这一步,我们安装和配置Magento。web服务器的根目录,我们使用'/var/www/magento2'。我们需要php composer的支持。首先安装php Composer,我们使用curl命令进行安装。
curl -sS https://getcomposer.org/installer | sudo php -- --install-dir=/usr/bin --filename=composer
当安装完成,你可以用composer version进行查看,是否安装成功。
composer -v
看到以上图片信息,说明PHP Composer已经成功安装。
下载Magento并解压缩,定位到'/var/www'路径,把下载的文件放在这个目录下。
cd /var/www/ wget https://github.com/magento/magento2/archive/2.1.zip
用yum命令安装unzip
yum -y install unzip
解压缩Magento,并且把解压缩后的文件重新命名为 'magento2'
unzip 2.1.zip mv magento2-2.1 magento2
安装PHP依赖,定位到magento2目录,用composer命令安装
cd magento2 composer install -v
配置magento虚拟服务器,定位nginx服务器路径下,在'conf.d'目录下创建一个名叫'magento.conf'的虚拟服务器
cd /etc/nginx/ vim conf.d/magento.conf
粘帖下面这些内容
upstream fastcgi_backend {
server unix:/run/php/php-fpm.sock;
}
server {
listen 80;
server_name magento.hakase-labs.com;
set $MAGE_ROOT /var/www/magento2;
set $MAGE_MODE developer; include /var/www/magento2/nginx.conf.sample; }
然后保存文件并退出vim。 现在我们来测试这个配置是否已经成功。当下面的命令成功执行,重启nginx服务器。
nginx -t systemctl restart nginx
安装Magento 2.1,定位到'/var/www/magento2/'目录,执行安装命令。
cd /var/www/magento2
执行下面的命令,确定你的配置是正确的。文件中的值可以修改成你自己的内容。像第二段解释一样。
bin/magento setup:install --backend-frontname="adminlogin" \
--key="biY8vdWx4w8KV5Q59380Fejy36l6ssUb" \
--db-host="localhost" \
--db-name="magentodb" \ --db-user="magentouser" \ --db-password="Magento123@" \ --language="en_US" \ --currency="USD" \ --timezone="America/New_York" \ --use-rewrites=1 \ --use-secure=0 \ --base-url="http://magento.hakase-labs.com" \ --base-url-secure="https://magento.hakase-labs.com" \ --admin-user=adminuser \ --admin-password=admin123@ \ --admin-email=admin@newmagento.com \ --admin-firstname=admin \ --admin-lastname=user \ --cleanup-database
修改的值:
--backend-frontname: Magento admin login page "adminlogin"
--key: generate your own key --db-host: Database host localhost --db-name: database name 'magentodb' --db-user: database user 'magentouser' --db-password: database password 'Magento123@' --base-url: Magento URL --admin-user: Your admin user --admin-password: Your Magento admin password --admin-email: Your email address
当你执行完命令,没有看到出错提示,你将看到下面的结果。
Magento 2.1系统已经安装好了。我们接下去要配置文件操作权限,magento的etc文件属于配置文件,需要可写入的权限。magento根目录需要写入权限。
chmod 700 /var/www/magento2/app/etc chown -R nginx:nginx /var/www/magento2
Magento Cron
crontab -u nginx -e
粘帖下面哦内容。
* * * * * /usr/bin/php /var/www/magento2/bin/magento cron:run | grep -v "Ran jobs by schedule" >> /var/www/magento2/var/log/magento.cron.log * * * * * /usr/bin/php /var/www/magento2/update/cron.php >> /var/www/magento2/var/log/update.cron.log * * * * * /usr/bin/php /var/www/magento2/bin/magento setup:cron:run >> /var/www/magento2/var/log/setup.cron.log
保存并退出。