半小時搭建電子商務網站--opencart

onephone發表於2017-01-18

原文連結: http://codeshold.me/2017/01/opencart_installation.html

前言

朋友在亞馬遜(美國)上開了一家網點且註冊了自己的品牌,amazon需要品牌商提供自己的網站,於是乎朋友找到了我,並給了我一個品牌商網站的參考(他的一位朋友在淘寶上買的電子商務網站--三四百塊),然後我點開了,接著我留意了網站底下的Powered By OpenCart,最後我發現這壓根可以不要錢啊啊啊啊(儘管自己不搞前端)!

自己仔細看了朋友的朋友買的電子商務網站,它用的就是一個開源的opencart(類似 wordpress),而且也沒有什麼定製化的內容,更沒有開通支付功能(開通支付功能貌似還要加一千塊),也就是一個純正的開源的東西!

於是自己花了一個小時免費幫朋友弄了下,好在他自己註冊且備案了一個域名,而我正好也有個vps,下文是自己部署OpenCart的記錄!

安裝OpenCart

1. 準備

  1. opencart是幹嗎的?
  2. vps用的是DigitalOcean(自己用來翻牆的)
  3. 域名是在阿里雲上註冊和備案的
  4. 伺服器作業系統 CentOS 7

2. 部署

  • 安裝並配置httpd

    ```bash
    ## 1. 安裝軟體包
    [root@ss ~]# yum install httpd php-y
    ## 2. 啟動httpd服務
    ##    httpd啟動後,瀏覽器輸入伺服器ip即可瀏覽預設的apache web頁面
    [root@ss ~]# systemctl start httpd
    ## 3. 設定httpd和mariadb開機啟動
    [root@ss ~]# systemctl enable httpd
    ```
    
  • 安裝並配置mariadb(mysql)

    ```
    ## 1. 安裝軟體包
    [root@ss ~] yum install mariadb mariadb-server -y
    
    
    ## 2. 啟動自動安裝&配置
    [root@ss html]# mysql_secure_installation 
    ......
    
    
    ## 3. 登陸mysql
    ##    建立資料庫opencartdb
    ##    新建使用者opencart(密碼opencart)並賦予許可權
    [root@ss html]# mysql -u root -p
    ......
    ## 3.1 建立資料庫opencartdb
    MariaDB [(none)]> create database opencartdb;
    Query OK, 1 row affected (0.00 sec)
    ## 3.2 新建使用者opencart(密碼opencart)並賦予許可權
    MariaDB [(none)]> grant all privileges on opencartdb.* to opencart@localhost identified by 'opencart';
    
    
    ## 3. 設定mariadb開機啟動
    [root@ss ~]# systemctl enable httpd mariadb
    ```
    
  • 安裝php及相關擴充套件包 可跳過擴充套件包的安裝,根據後面opencart檢測的結果再安裝也行

    ```bash
    ## 1. 安裝php
    [root@ss ~]# yum install php -y
    
    
    ## 2. 安裝擴充套件包(可跳過此步驟,後面根據opencart檢測的結果再安裝)
    [root@ss ~]# yum install php-mysql php-mcrypt php-gd php-cli php-pdo -y
    
    
    ## 3. 查詢結果如下
    [root@ss opencart]# rpm -qa | grep php
    php-common-5.4.16-42.el7.x86_64
    php-5.4.16-42.el7.x86_64
    php-mysql-5.4.16-42.el7.x86_64
    php-mcrypt-5.4.16-7.el7.x86_64
    php-gd-5.4.16-42.el7.x86_64
    php-cli-5.4.16-42.el7.x86_64
    php-pdo-5.4.16-42.el7.x86_64
    
    
    ```
    
  • 安裝和配置opencart 安裝包可從官網github上下載最新版本

    ```bash
    [root@ss ~]# mkdir opencart && cd opencart
    
    
    ## 1. 從github上下載最新版本的compiled包
    [root@ss opencart]# wget https://github.com/opencart/opencart/releases/download/2.3.0.2/2.3.0.2-compiled.zip
    
    
    ## 2. 解壓
    [root@ss opencart]# unzip -q 2.3.0.2-compiled.zip
    
    
    ## 3. 拷貝upload目錄下的檔案到/var/www/html/下
    [root@ss opencart]# cd /var/www/html/
    [root@ss html]# cp ~/opencart/upload/* . -rf
    
    
    ## 3. 根據目錄下的`install.txt`檔案即可完成配置和安裝)
    ## 3.1 修改config.php 檔名
    [root@ss html]# mv config-dist.php config.php
    [root@ss html]# mv admin/config-dist.php admin/config.php
    ## 3.2 新增可寫許可權
    [root@ss html]# chmod a+w config.php admin/config.php 
    [root@ss html]# chmod a+w /var/www/html/image/ -R
    [root@ss html]# chmod a+w /var/www/html/system/ -R
    ```
    
  • 進入安裝頁面

瀏覽器輸入伺服器ip地址進入頁面安裝
可能會需要systemctl restart httpd重啟httpd服務 QQ截圖20170117153441.png-52.2kB

  • 進入pre-installation檢測頁面 請根據檢測的結果,安裝相應的軟體包、php擴充套件包或者設定檔案許可權 如下圖顯示缺少了php擴充套件(修改請參考前面步驟,如yum install php-mcrypt -y,修改後重啟httpd服務systemctl restart httpd,再重新整理頁面)!
    QQ截圖20170117153535.png-73.6kB 如下圖顯示缺少對應檔案或目錄的可寫許可權(修改請參考前面步驟,如chmod a+w config.php admin/config.php,修改後重啟httpd服務systemctl restart httpd,再重新整理頁面)! image_1b6lm4dep1ndo1qs41jh41slg1pm318.png-92.3kB 修改後的 image_1b6lmii5g12pkpk21fh81gb2nmp1l.png-42.9kB

  • 進入配置頁面 填寫前面設定的資料庫名opencartdb,以及使用者名稱和密碼(opencart/opencart)
    如果一開始已經配置好了域名解析,hostname一欄填寫域名即可!

image_1b6ln2cspq6m1pusaud7v01vic22.png-72.1kB

  • 完成安裝後 參考install.txt

    ```bash
    ## 刪除安裝目錄
    [root@ss html]# rm -rf install/
    ## 由於安裝的是github上的compiled包,所以要拷貝vendor
    [root@ss ~]# cp -rf  ~/opencart/vendor/ /var/www/
    [root@ss www]# cd /var/www/ && ls 
    cgi-bin  html  vendor
    ```
    
  • 輸入IP測試

image_1b6lnoorg1mjc1br31s8e1nlh17md2f.png-220.3kB

其他配置(防火牆,ftp)

  • 防火牆配置 自己取消了CentOS7的firewalls,使用的是iptables,如下

    ```
    ## 1. 取消firewalld服務
    [root@ss ~]# systemctl stop firewalld && systemctl disable firewalld
    ## 2. 安裝iptables-services
    [root@ss ~]# yum install iptables-services -y 
    ## 3. 新增防火牆設定
    [root@ss ~]# vim /etc/sysconfig/iptables
    ## 3.1 新增如下規則
    -A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
    ## 3.2 啟動防火牆並設定開機啟動
    [root@ss ~]# systemctl start iptables && systemctl enable iptables
    ```
    
  • ftp配置 安裝vsftp, yum install vsftpd -y, 配置好後,瀏覽器進入管理頁面(http://域名/admin/)進行設定,如下

image_1b6m9vfu2gn4hjf1tk61qr2cve3m.png-30.2kB

域名設定

  • 在阿里雲雲解析DNS上新增記錄,如下(假設域名為codeshold.me

|記錄型別|主機記錄|記錄值|解析線路|TTL(秒)|說明| |:------:|:------:|:----:|:------:|:-------:|----| |A|@|XX.XX.XX.XX|預設|600|@表示將codeshole.me解析為該IP, 600表示DNS快取生存時間為10分鐘| |A|www|XX.XX.XX.XX|預設|600|@表示將www.codeshole.me解析為該IP, 600表示DNS快取生存時間為10分鐘|

  • 修改config檔案 在配置好自己的域名後,如果出現在瀏覽器輸入域名登入網站後,在點選頁面連結,域名顯示為了IP地址 這個問題(見問題1),如下,則需修改config檔案,如下

    [root@ss ~]# systemctl restart httpd [root@ss ~]# vim /var/www/html/admin/config.php ...... [root@ss ~]# vim /var/www/html/config.php ......

image_1b6m9h0ue12li11ll1j2r74n1ioq39.png-10.1kB

問題

1. 位址列域名變成了IP

解決方法見上

image_1b6m9fv5a163g13f983r12j15kq2s.png-32.2kB

2. 訪問不了頁面

請確保防火牆的設定

相關文章