昨天朋友让我给她搭建个临时的商品页面,我就动手搭了一下,还是用的opencart老版本,想着轻车熟路、简单。
用的 vultr 的VPS。ubuntu 18.04.
遇到了一些坑,这里记录一下。(可能没什么用了,毕竟现在ubuntu都更新到20+了,opencart也更新到4.0+了)
首先是防火墙放行端口(vultr的ubuntu默认开启 ufw)
之前没怎么用过ufw,这次想着用一下,作死一下。
我们需要的是80、443端口。
ufw allow http ufw allow https
ufw 加规则挺简单,一条命令就生效,无需像 iptables 需要保存。
查看ufw规则
ufw status
然后是把环境搭起来,php、mysql、nginx。
php
apt install php7.2-fpm php7.2-curl php7.2-gd php7.2-zip php7.2-xml php7.2-mysql php7.2-mbstring apt install php-pear php7.2-dev apt install libmcrypt-dev libreadline-dev pecl install mcrypt find / -name 'php.ini' echo 'extension=mcrypt.so' >>/etc/php/7.2/fpm/php.ini service php7.2-fpm restart php -m
php 7.2 需安装已丢弃的 mcrypt 模块,所以步骤较多。
mysql
apt install mysql-server-5.7 mysql -u root -p create database opencart23; use mysql; alter user 'root'@'localhost' identified with mysql_native_password by 'root'; flush privileges; exit;
安装完 mysql,创建 opencart 的表,然后一定要修改密码。
nginx
apt install nginx
下载 opencart 2.3
cd /home/ wget https://github.com/mycncart/opencart_international/archive/opencart_international_2.3.0.2.zip unzip opencart_international_2.3.0.2.zip mv opencart_international-opencart_international_2.3.0.2/ opencart chmod 755 -R opencart chown www-data:www-data -R opencart cd opencart/ mv config-dist.php config.php cd admin/ mv config-dist.php config.php
nginx 配置
nano /etc/nginx/sites-enabled/default
server { listen 80; server_name xxx.com www.xxx.com; index index.html index.htm index.php; root /home/opencart; location / { try_files $uri $uri/ =404; } location ~ \.php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/var/run/php/php7.2-fpm.sock; } }
环境搭好,访问IP就会开启opencart的安装向导
第一、二个步骤,由于我们已配置好环境,直接过。
第三个步骤,数据库选择“mysql”模式,再依次填写数据库用户、数据库密码、数据库名称、opencart管理员信息等等就能完成了。
完成向导后,需要删除opencart根目录下的install文件夹,保证安全。
rm -rf /home/opencart/install/
后台登录地址:
http://ip/admin
账号默认是admin。密码就用你刚才设置的密码。
开启Https
先在opencart后台设置——服务器 那里开启 SSL。
然后在opencart的2个config文件里将https部分,http 改为 https:
nano /home/opencart/config.php nano /home/opencart/admin/config.php
然后申请证书、配置nginx。
curl https://get.acme.sh | sh /root/.acme.sh/acme.sh --issue -d xxx.com --nginx mkdir -r /etc/nginx/ssl /root/.acme.sh/acme.sh --install-cert -d xxx.com --key-file /etc/nginx/ssl/xxx.com.key --fullchain-file /etc/nginx/ssl/fullchain.cer --reloadcmd "service nginx force-reload"
nginx 配置:
server { listen 80; server_name xxx.com www.xxx.com; return 301 https://www.xxx.com$request_uri; } server { listen 443 ssl; server_name xxx.com www.xxx.com; ssl_certificate /etc/nginx/ssl/fullchain.cer; ssl_certificate_key /etc/nginx/ssl/xxx.com.key; index index.html index.htm index.php; root /home/opencart; location / { try_files $uri $uri/ =404; } location ~ \.php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/var/run/php/php7.2-fpm.sock; } }