如何使用NGINX安装Shopware 6并加密到CentOS 8

如何使用NGINX安装Shopware 6并加密到CentOS 8

Shopware是一个免费的开源平台,可以帮助您启动自己的电子商务网站以增强在线业务。它提供了许多有用的工具来帮助您构建和定制完全响应的在线商店。 与Magento非常相似。 与Magento相比,Shopware是一个功能强大,易于使用且灵活的应用程序。使用现代化的用户界面,可以从任何设备轻松创建和管理内容和产品。

本教程显示了如何使用Nginx和Let’s Encrypt SSL在CentOS 8上安装Shopware。

先决条件

  • 运行CentOS的服务器8。
  • 指向服务器IP的有效域名。
  • 根密码由服务器组成。

安装LEMP服务器

Shopware在Web服务器上运行,使用Symfony和Zend组件在PHP上构建,并使用MySQL或MariaDB作为数据库后端。因此,您需要在服务器上安装Nginx,MariaDB,PHP和其他扩展。您可以使用以下命令将它们全部安装:

dnf install nginx mariadb-server php php-cli php-intl php-fpm php-common php-mysqli php-curl php-json php-zip php-gd php-xml php-mbstring php-opcache unzip -y

安装完所有软件包后,使用以下命令启动Nginx,MariaDB和PHP-FPM服务,以便可以在系统重新引导时启动它们。

systemctl start mariadbsystemctl enable mariadbsystemctl start nginxsystemctl start php-fpmsystemctl enable nginxsystemctl enable php-fpm

完成后,您可以继续下一步。

配置PHP-FPM

默认情况下,PHP-FPM配置为以apache用户和组身份运行。因此,应将其配置为以Nginx用户和组身份运行。您可以通过编辑文件/etc/php-fpm.d/www.conf来实现:

nano /etc/php-fpm.d/www.conf

更改以下行。

user = nginx 
group = nginx 

保存并关闭文件,然后创建会话目录并使用以下命令设置适当的所有权:

mkdir -p /var/lib/php/session chown -R nginx:nginx /var/lib/php/session

然后编辑php.ini文件并调整一些推荐设置。

nano /etc/php.ini

更改以下行。

memory_limit = 512M
upload_max_filesize = 20M
date.timezone = Asia/Kolkata

保存并关闭文件,然后重新启动PHP-FPM服务以应用更改。

systemctl restart php-fpm

创建一个商店数据库

接下来,您需要创建Shopware数据库和用户。首先,使用以下命令连接到MariaDB:

mysql

连接后,使用以下命令创建数据库和用户。

MariaDB [(none)]> CREATE DATABASE shopware;MariaDB [(none)]> GRANT ALL ON shopware.* TO 'shopware' IDENTIFIED BY 'password';

然后刷新特权并使用以下命令退出MariaDB:

MariaDB [(none)]> FLUSH PRIVILEGES;MariaDB [(none)]> EXIT;

完成后,您可以继续下一步。

下载商店

接下来,您需要为官方网站下载最新版本的Shopware。首先,在Nginx根目录内创建一个Shopware目录。

mkdir /var/www/html/shopware

然后使用以下命令下载购物软件:

wget https://www.shopware.com/en/Download/redirect/version/sw6/file/install_v6.3.5.0_ba08dbfc07784b5cefe7837f2abbda69dbf5b8b7.zip -O shopware.zip

下载完成后,将下载的文件解压缩到您的shopware目录。

unzip shopware.zip -d /var/www/html/shopware

然后使用以下命令设置适当的权限和所有权。

chown -R nginx:nginx /var/www/html/shopwarechmod -R 775 /var/www/html/shopware

完成后,您可以继续下一步。

配置Nginx for shopware

然后使用以下命令创建Shopware Nginx虚拟主机配置文件。

nano /etc/nginx/conf.d/shopware.conf

添加以下行。

server {
    listen 80;

    # Handle / to index.php
    index index.php;

    # Our server name
    server_name shopware.example.com;

    # Where the code is located
    root /var/www/html/shopware/public;

    # Needed for Shopware install / update
    location /recovery/install {
        index index.php;
        try_files $uri /recovery/install/index.php$is_args$args;
    }

    location /recovery/update/ {
        if (!-e $request_filename){
            rewrite . /recovery/update/index.php last;
        }
    }

    # Forward any not found file to index.php. Also allows to have beautiful urls like /homemade-products/
    location / {
        try_files $uri /index.php$is_args$args;
    }

    # Let php-fpm handle .php files
    location ~ .php$ {
        fastcgi_split_path_info ^(.+.php)(/.+)$;
        include fastcgi.conf;
        fastcgi_param HTTP_PROXY "";
        fastcgi_buffers 8 16k;
        fastcgi_buffer_size 32k;
        fastcgi_read_timeout 300s;
        client_body_buffer_size 128k;
        fastcgi_pass unix:/run/php-fpm/www.sock;
        http2_push_preload on;
    }
}

保存并关闭文件,然后使用以下命令检查Nginx的语法错误:

nginx -t

您应该获得以下输出:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

然后重新启动Nginx服务以应用您的更改。

systemctl restart nginx

您还可以使用以下命令检查Nginx的状态:

systemctl status nginx

您应该获得以下输出:

? nginx.service - The nginx HTTP and reverse proxy server
   Loaded: loaded (/usr/lib/systemd/system/nginx.service; disabled; vendor preset: disabled)
  Drop-In: /usr/lib/systemd/system/nginx.service.d
           ??php-fpm.conf
   Active: active (running) since Tue 2021-02-02 00:40:04 EST; 19s ago
  Process: 76059 ExecStart=/usr/sbin/nginx (code=exited, status=0/SUCCESS)
  Process: 76057 ExecStartPre=/usr/sbin/nginx -t (code=exited, status=0/SUCCESS)
  Process: 76054 ExecStartPre=/usr/bin/rm -f /run/nginx.pid (code=exited, status=0/SUCCESS)
 Main PID: 76060 (nginx)
    Tasks: 3 (limit: 12523)
   Memory: 5.5M
   CGroup: /system.slice/nginx.service
           ??76060 nginx: master process /usr/sbin/nginx
           ??76061 nginx: worker process
           ??76062 nginx: worker process

Feb 02 00:40:04 centos8 systemd[1]: Stopped The nginx HTTP and reverse proxy server.
Feb 02 00:40:04 centos8 systemd[1]: Starting The nginx HTTP and reverse proxy server...
Feb 02 00:40:04 centos8 nginx[76057]: nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
Feb 02 00:40:04 centos8 nginx[76057]: nginx: configuration file /etc/nginx/nginx.conf test is successful
Feb 02 00:40:04 centos8 systemd[1]: Started The nginx HTTP and reverse proxy server.

配置SELinux和防火墙

默认情况下,CentOS 8上启用了SELinux,因此您需要配置Shopware的SELinux上下文。可以使用以下命令进行配置:

setsebool httpd_can_network_connect on -Pchcon -R -u system_u -t httpd_sys_rw_content_t -r object_r /var/www/html/shopware

然后,使用以下命令允许端口80和443通过Firewalld。

firewall-cmd --permanent --add-service=httpfirewall-cmd --permanent --add-service=httpsfirewall-cmd --reload

完成后,您可以继续下一步。

访问Shopware Web界面

然后打开网络浏览器并输入URL http://shopware.example.com..

选择一种语言, 下一个 按钮。确保满足所有要求,然后 下一个 按钮。显示下一页。

同意GTC, 下一个 按钮。显示下一页。

配置Shopware数据库

输入您的数据库,用户名和密码,然后单击 开始 安装 按钮。安装完成后,将显示下一页。

Shopware 6已成功安装

单击下一页。系统将提示您输入商店名称,电子邮件地址,货币,国家/地区,管理员用户名和密码,然后单击。 下一个 按钮。 您将被重定向到Shopware仪表板。

设定店铺名称

货币和电子邮件设置

输入所有信息,然后[次へ]点击按钮。显示下一页。

Shopware仪表板

安装所需的语言插件, 下一个 按钮。显示下一页。

资料汇入

安装演示数据或跳过此操作,然后 下一个 按钮。显示下一页。

电子邮件设定

请点击 配置,设置 之后..显示下一页。

贝宝设置

请点击 跳过 按钮。显示下一页。

安装插件

请点击 下一个 按钮。显示下一页。

安全的商店商品帐户

请点击 跳过 按钮。显示下一页。

成功安装商品

请点击 结尾 按钮。 显示Shopware欢迎页面。

欢迎使用Shopware 6

让我们加密SSL安全的购物软件

接下来,您需要在系统上安装Certbot实用程序,以下载和安装Let’s Chat域的Let’s Encrypt SSL。

您可以使用以下命令安装Certbot客户端:

wget https://dl.eff.org/certbot-automv certbot-auto /usr/local/bin/certbot-autochown root /usr/local/bin/certbot-autochmod 0755 /usr/local/bin/certbot-auto

然后使用以下命令获取并安装let域的SSL证书。

certbot-auto --nginx -d shopware.example.com

上面的命令将首先在服务器上安装所有必需的依赖项。安装后,将提示您输入电子邮件地址并接受使用条款,如下所示。

Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator nginx, Installer nginx
Enter email address (used for urgent renewal and security notices) (Enter 'c' to
cancel): [email protected]

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Please read the Terms of Service at
https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. You must
agree in order to register with the ACME server at
https://acme-v02.api.letsencrypt.org/directory
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(A)gree/(C)ancel: A

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Would you be willing to share your email address with the Electronic Frontier
Foundation, a founding partner of the Let's Encrypt project and the non-profit
organization that develops Certbot? We'd like to send you email about our work
encrypting the web, EFF news, campaigns, and ways to support digital freedom.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: Y

Obtaining a new certificate
Performing the following challenges:
http-01 challenge for shopware.example.com
Waiting for verification...
Cleaning up challenges
Deploying Certificate to VirtualHost /etc/nginx/conf.d/shopware.conf

然后选择是否将HTTP流量重定向到HTTPS,如下所示。

Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: No redirect - Make no further changes to the webserver configuration.
2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for
new sites, or if you're confident your site works on HTTPS. You can undo this
change by editing your web server's configuration.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 2

输入2并按Enter继续。安装完成后,您将看到以下输出:

Redirecting all traffic on port 80 to ssl in /etc/nginx/conf.d/shopware.conf

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Congratulations! You have successfully enabled https://shopware.example.com

You should test your configuration at:
https://www.ssllabs.com/ssltest/analyze.html?d=shopware.example.com
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/shopware.example.com/fullchain.pem
   Your key file has been saved at:
   /etc/letsencrypt/live/shopware.example.com/privkey.pem
   Your cert will expire on 2021-04-2. To obtain a new or tweaked
   version of this certificate in the future, simply run certbot-auto
   again with the "certonly" option. To non-interactively renew *all*
   of your certificates, run "certbot-auto renew"
 - If you like Certbot, please consider supporting our work by:

   Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
   Donating to EFF:                    https://eff.org/donate-le

您现在可以使用URL https://shopware.example.com安全地访问Shopware。

结论

恭喜!您已经使用Nginx和Let’s Encrypt SSL在CentOS 8上成功安装和配置了Shopware。现在,您可以使用Shopware轻松托管自己的在线商店。如有任何疑问,请随时与我们联系。

Sidebar