• EShop网上商城项目(一)


    一、项目简介

      该项目由Irving提出,有Irving、wang.cheng、laoda、syh0307 四人开发,开发环境:LNMP

      该项目软件为四个程序员的兄弟连二期项目,不做任何商业用途。

      码云:https://git.oschina.net/include_yx/lamp.git || git@git.oschina.net:include_yx/lamp.git

    二、搭建服务器环境

      1. 服务器选择:LNMP(Linux+Nginx+MySQL+PHP)

      2.Linux安装:CentOS-6.3-i386-bin-DVD1.iso

      3.LNMP集成环境安装   

     1 [root@iZ287mhoky1Z ~]# wget -c http://soft.vpser.net/lnmp/lnmp1.2-full.tar.gz && tar zxf lnmp1.2-full.tar.gz && cd lnmp1.2-full && ./install.sh lnmp
     2 --2016-08-11 16:13:45--  http://soft.vpser.net/lnmp/lnmp1.2-full.tar.gz
     3 Resolving soft.vpser.net... 50.93.201.152, 2600:3c01::f03c:91ff:fe96:d57a
     4 Connecting to soft.vpser.net|50.93.201.152|:80... connected.
     5 HTTP request sent, awaiting response... 200 OK
     6 Length: 326745420 (312M) [application/octet-stream]
     7 Saving to: “lnmp1.2-full.tar.gz”
     8 
     9 100%[======================================================================================>] 326,745,420 2.05M/s   in 2m 10s  
    10 
    11 2016-08-11 16:15:56 (2.39 MB/s) - “lnmp1.2-full.tar.gz” saved [326745420/326745420]
    12 +------------------------------------------------------------------------+
    13 |          LNMP V1.2 for CentOS Linux Server, Written by Licess          |
    14 +------------------------------------------------------------------------+
    15 |        A tool to auto-compile & install LNMP/LNMPA/LAMP on Linux       |
    16 +------------------------------------------------------------------------+
    17 |          For more information please visit http://www.lnmp.org         |
    18 +------------------------------------------------------------------------+
    19 Please setup root password of MySQL.(Default password: root)
    20 Please enter: ******
    21 MySQL root password:****** 
    22 ===========================
    23 Do you want to enable or disable the InnoDB Storage Engine?
    24 Default enable,Enter your choice [Y/n]: y
    25 You will enable the InnoDB Storage Engine
    26 ===========================
    27 You have 5 options for your DataBase install.
    28 1: Install MySQL 5.1.73
    29 2: Install MySQL 5.5.42 (Default)
    30 3: Install MySQL 5.6.23
    31 4: Install MariaDB 5.5.42
    32 5: Install MariaDB 10.0.17
    33 Enter your choice (1, 2, 3, 4 or 5): 3
    34 You will Install MySQL 5.6.23
    35 ===========================
    36 You have 5 options for your PHP install.
    37 1: Install PHP 5.2.17
    38 2: Install PHP 5.3.29
    39 3: Install PHP 5.4.41 (Default)
    40 4: Install PHP 5.5.25
    41 5: Install PHP 5.6.9
    42 Enter your choice (1, 2, 3, 4 or 5): 5
    43 You will install PHP 5.6.9
    44 ===========================
    45 You have 3 options for your Memory Allocator install.
    46 1: Don't install Memory Allocator. (Default)
    47 2: Install Jemalloc
    48 3: Install TCMalloc
    49 Enter your choice (1, 2 or 3): 1
    50 You will install not install Memory Allocator.
    51 .
    52 .
    53 .
    54 ============================== Check install ==============================
    55 Checking ...
    56 Nginx: OK
    57 MySQL: OK
    58 PHP: OK
    59 PHP-FPM: OK
    60 +------------------------------------------------------------------------+
    61 |          LNMP V1.2 for CentOS Linux Server, Written by Licess          |
    62 +------------------------------------------------------------------------+
    63 |         For more information please visit http://www.lnmp.org          |
    64 +------------------------------------------------------------------------+
    65 |    lnmp status manage: lnmp {start|stop|reload|restart|kill|status}    |
    66 +------------------------------------------------------------------------+
    67 |  phpMyAdmin: http://IP/phpmyadmin/                                     |
    68 |  phpinfo: http://IP/phpinfo.php                                        |
    69 |  Prober:  http://IP/p.php                                              |
    70 +------------------------------------------------------------------------+
    71 |  Add VirtualHost: lnmp vhost add                                       |
    72 +------------------------------------------------------------------------+
    73 |  Default directory: /home/wwwroot/default                              |
    74 +------------------------------------------------------------------------+
    75 |  MySQL/MariaDB root password: 123456                                   |
    76 +------------------------------------------------------------------------+
    77 +-------------------------------------------+
    78 |    Manager for LNMP, Written by Licess    |
    79 +-------------------------------------------+
    80 |              http://lnmp.org              |
    81 +-------------------------------------------+
    82 nginx (pid 14442 14440) is running...
    83 php-fpm is runing!
    84  SUCCESS! MySQL running (14859)
    85 Active Internet connections (only servers)
    86 Proto Recv-Q Send-Q Local Address               Foreign Address             State      
    87 tcp        0      0 0.0.0.0:3306                0.0.0.0:*                   LISTEN      
    88 tcp        0      0 0.0.0.0:80                  0.0.0.0:*                   LISTEN      
    89 tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN      
    90 Install lnmp V1.2 completed! enjoy it.
    View Code

        lnmp1.2-full.tar.gz
        Linux   => CentOS-6.3
        Nginx   => Nginx1.2
        MySQL   => MySQL5.6.23
        PHP    => PHP5.6.8   

        3.1 相关软件安装目录:
          Nginx 目录: /usr/local/nginx/

          MySQL 目录 : /usr/local/mysql/

          MySQL数据库所在目录:/usr/local/mysql/var/

          PHP目录 : /usr/local/php/

          PHPMyAdmin目录 : /home/wwwroot/default/phpmyadmin/

          默认网站目录 : /home/wwwroot/default/

          Nginx日志目录:/home/wwwlogs/

        3.2 LNMP相关配置文件位置:
          Nginx主配置文件:/usr/local/nginx/conf/nginx.conf

          MySQL配置文件:/etc/my.cnf

          PHP配置文件:/usr/local/php/etc/php.ini

          php-fpm配置文件:/usr/local/php/etc/php-fpm.conf

        3.3 LNMP状态管理命令:
          LNMP 状态管理: lnmp {start|stop|reload|restart|kill|status}

          LNMP 各个程序状态管理: lnmp {nginx|mysql|mariadb|php-fpm|pureftpd} {start|stop|reload|restart|kill|status}

        3.4 Nginx配置文件:
        #vi /usr/local/nginx/conf/nginx.conf

      1 user  www www;
      2 
      3 worker_processes auto;
      4 #启动进程
      5 
      6 error_log  /home/wwwlogs/nginx_error.log  crit;
      7 #错误日志
      8 
      9 pid        /usr/local/nginx/logs/nginx.pid;
     10 #主进程PID保存文件
     11 
     12 #Specifies the value for maximum file descriptors that can be opened by this process.?
     13 worker_rlimit_nofile 51200;
     14 #文件描述符数量
     15 
     16 events
     17     {
     18         use epoll;
     19         #网络I/O模型,建议linux使用epoll,FreeBSD使用kqueue
     20         #epoll是多路复用IO(I/O Multiplexing)中的一种方式,但是仅用于linux2.6以                上内    核,可以大大提高nginx的性能
     21         worker_connections 51200;
     22         #单个工作进程最大允许连接数
     23         multi_accept on;
     24     
     25     }
     26 
     27 http
     28 #整体环境配置
     29     {
     30         include             mime.types;
     31         default_type    application/octet-stream;
     32         #设定mime类型,文件传送类型由mime.type文件定义
     33 
     34         server_names_hash_bucket_size 128;        #保存服务器名字的hash表大小
     35         client_header_buffer_size 32k;            #客户端请求头部缓冲区大小
     36         large_client_header_buffers 4 32k;            #最大客户端头缓冲大小
     37         client_max_body_size 50m;                #客户端最大上传文件大小(M)
     38 
     39         sendfile on;
     40         #sendfile 指令指定 nginx 是否调用 sendfile 函数(zero copy 方式)来输出文                    件,对于普通应用,必须设为 on。如果用来进行下载等应用磁盘IO重负载应用,可                设置为off,以平衡磁盘与网络I/O处理速度,降低系统的uptime.
     41         #高效文件传输
     42         tcp_nopush     on;
     43         #这个是默认的,结果就是数据包不会马上传送出去,等到数据包最大时,一次性的                    传输出去,这样有助于解决网络堵塞。(只在sendfile on时有效)
     44 
     45 
     46         keepalive_timeout 60;
     47         #连接超时时间
     48 
     49         tcp_nodelay on;
     50         #禁用nagle算法,也即不缓存数据。有效解决网络阻塞
     51 
     52         fastcgi_connect_timeout 300;
     53         fastcgi_send_timeout 300;
     54         fastcgi_read_timeout 300;
     55         fastcgi_buffer_size 64k;
     56         fastcgi_buffers 4 64k;
     57         fastcgi_busy_buffers_size 128k;
     58         fastcgi_temp_file_write_size 256k;
     59         #fastcgi设置
     60 
     61         gzip on;
     62         gzip_min_length  1k;
     63         gzip_buffers     4 16k;
     64         gzip_http_version 1.1;
     65         gzip_comp_level 2;
     66         gzip_types     text/plain application/javascript         application/x-javascript text/javascript text/css application/xml     application/xml+rss;
     67         gzip_vary on;
     68         gzip_proxied   expired no-cache no-store private auth;
     69         gzip_disable   "MSIE [1-6].";
     70 
     71         #limit_conn_zone $binary_remote_addr zone=perip:10m;
     72         ##If enable limit_conn_zone,add "limit_conn perip 10;" to server section.
     73                 server_tokens off;
     74                 #隐藏nginx版本号(curl -I 192.168.4.154可以查看,更加安全)
     75 
     76                    #log format
     77                 log_format  access  '$remote_addr - $remote_user [$time_local] "$request" '
     78              '$status $body_bytes_sent "$http_referer" '
     79              '"$http_user_agent" $http_x_forwarded_for';
     80                 #定义日志格式
     81 
     82 server
     83     {
     84         listen 80 default_server;
     85         #listen [::]:80 default_server ipv6only=on;
     86         #监听80端口
     87         server_name www.eshop.com
     88         #服务器名
     89         index index.html index.htm index.php;
     90         #默认网页文件
     91         root  /eshop/laravel/public;
     92         #网页主目录
     93 
     94     #error_page   404   /404.html;
     95     include enable-php.conf;
     96                     
     97     location /nginx_status
     98             {
     99                 stub_status on;
    100                 access_log   off;
    101             }
    102     #开启status状态监测
    103     location ~ .*.(gif|jpg|jpeg|png|bmp|swf)$
    104             {
    105                 expires      30d;
    106             }
    107     #静态文件处理,保存期30天
    108     location ~ .*.(js|css)?$
    109             {
    110                 expires      12h;
    111             }
    112     #js和css文件处理,保存期12小时
    113     location ~ /.
    114             {
    115                 deny all;
    116             }
    117 
    118     access_log  /home/wwwlogs/access.log  access;
    119     #正确访问日志
    120     }
    121 include vhost/*.conf;
    122 #vhost/下子配置文件生效
    123 }
    View Code

        3.5 检查Nginx配置文件语句错误:

          #/usr/local/nginx/sbin/nginx -t
        3.6 平滑重启:
          1)pkill -HUP nginx
          2)kill -HUP `pgrep -uroot nginx`
            Pgrep -uroot nginx 取出nginx主进程PID
          3)/usr/local/nginx/sbin/nginx -s reload

      4.开启PHP错误报告  

        4.1  路径 :/usr/local/php/etc/php.ini

        4.2  搜索并修改下行,把Off值改成On

          display_errors = Off //此时已经有错误信息了

        4.3  搜索下行

          error_reporting = E_ALL & ~E_NOTICE

          或者搜索:

          error_reporting = E_ALL & ~E_DEPRECATED

          修改为

          error_reporting = E_ALL | E_STRICT //显示错误信息范围

    三、搭建git版本控制器 

      1、首先需要安装Git,可以使用yum源在线安装:

        [root@iZ287mhoky1Z ~]# yum install -y git
    

      2、创建一个git用户,用来运行git服务

        # adduser git  
    

      3、初始化git仓库:这里我们选择/git/eshop.git来作为我们的git仓库

        [root@iZ287mhoky1Z git]# git init --bare eshop.git  
    

        执行以上命令,会创建一个裸仓库,裸仓库没有工作区,因为服务器上的Git仓库纯粹是为了共享,所以不让用户直接登录到服务器上去改工作区,并且服务器上的Git仓库通常都以.git结尾。然后,把owner改为git:

        [root@iZ287mhoky1Z git]# chown git:git learngit.git 

      4、在这里,Git服务器就已经搭得差不多了。下面我们在客户端clone一下远程仓库

        Administrator@y-32 MINGW32 /e/wamp/www/yx
        $ git clone git@115.28.147.159:/git/eshop.git
        Cloning into 'eshop'...
        git@115.28.147.159's password:
        remote: Counting objects: 107, done.
        remote: Compressing objects: 100% (77/77), done.
        Receiving objects: 100% (107/107), 44.84 KiB | 0 bytes/s, done.
        ta 10)
        Resolving deltas: 100% (10/10), done.
        Checking connectivity... done.

        这里两点需要注意:第一,当你第一次使用Git的clone或者push命令连接GitHub时,会得到一个警告:

        The authenticity of host 'github.com (xx.xx.xx.xx)' can't be established.
        RSA key fingerprint is xx.xx.xx.xx.xx.
        Are you sure you want to continue connecting (yes/no)?
    

        这是因为Git使用SSH连接,而SSH连接在第一次验证GitHub服务器的Key时,需要你确认GitHub的Key的指纹信息是否真的来自GitHub的服务器,输入yes回车即可。

        Git会输出一个警告,告诉你已经把GitHub的Key添加到本机的一个信任列表里了:

        Warning: Permanently added 'github.com' (RSA) to the list of known hosts.
    

        这个警告只会出现一次,后面的操作就不会有任何警告了。
        如果你实在担心有人冒充GitHub服务器,输入yes前可以对照GitHub的RSA Key的指纹信息是否与SSH连接给出的一致。
        第二,这里提示你输入密码才能clone,当然如果你知道密码,可以键入密码来进行clone,但是更为常见的方式,是利用SSH的公钥来完成验证。

      5、创建SSH Key
        首先在用户主目录下,看看有没有.ssh目录,如果有,再看看这个目录下有没有id_rsa和id_rsa.pub这两个文件,如果已经有了,可直接跳到下一步。如果没有,打开Shell(Windows下打开Git Bash),创建SSH Key:$ ssh-keygen -t rsa -C "youremail@example.com"  

        你需要把邮件地址换成你自己的邮件地址,然后一路回车,使用默认值即可,由于这个Key也不是用于军事目的,所以也无需设置密码。

        如果一切顺利的话,可以在用户主目录里找到.ssh目录,里面有id_rsa和id_rsa.pub两个文件,这两个就是SSH Key的秘钥对,id_rsa是私钥,不能泄露出去,id_rsa.pub是公钥,可以放心地告诉任何人。

      6、Git服务器打开RSA认证
        然后就可以去Git服务器上添加你的公钥用来验证你的信息了。在Git服务器上首先需要将/etc/ssh/sshd_config中将RSA认证打开,即:

        1.RSAAuthentication yes     
        2.PubkeyAuthentication yes     
        3.AuthorizedKeysFile  .ssh/authorized_keys
    

        这里我们可以看到公钥存放在.ssh/authorized_keys文件中。所以我们在/home/git下创建.ssh目录,然后创建authorized_keys文件,并将刚生成的公钥导入进去。

        然后再次clone的时候,或者是之后push的时候,就不需要再输入密码了

      7、禁用git用户的shell登陆
        出于安全考虑,第二步创建的git用户不允许登录shell,这可以通过编辑/etc/passwd文件完成。找到类似下面的一行:

        git:x:1001:1001:,,,:/home/git:/bin/bash  
    

        最后一个冒号后改为:

        git:x:1001:1001:,,,:/home/git:/usr/bin/git-shell  
    

        这样,git用户可以正常通过ssh使用git,但无法登录shell,因为我们为git用户指定的git-shell每次一登录就自动退出。

    四、搭建Laravel框架

      1.安装Composer

     1 [root@iZ287mhoky1Z myproject]# curl -sS https://getcomposer.org/installer | php
     2     curl: (56) SSL read: errno -5961
     3     PHP Parse error:  syntax error, unexpected end of file, expecting variable (T_VARIABLE) or heredoc end (T_END_HEREDOC) or ${ (T_DOLLAR_OPEN_CURLY_BRACES) or {$ (T_CURLY_OPEN) in - on line 2522
     4 
     5     Parse error: syntax error, unexpected end of file, expecting variable (T_VARIABLE) or heredoc end (T_END_HEREDOC) or ${ (T_DOLLAR_OPEN_CURLY_BRACES) or {$ (T_CURLY_OPEN) in - on line 2522
     6     [root@iZ287mhoky1Z myproject]# ls
     7     index.php
     8     [root@iZ287mhoky1Z myproject]# curl -sS https://getcomposer.org/installer | sudo php
     9     All settings correct for using Composer
    10     Downloading 1.2.0...
    11 
    12     Composer successfully installed to: /myproject/composer.phar
    13     Use it: php composer.phar
    14 
    15 测试Composer是否安装成功:php composer.phar
    16 
    17 把composer.phar放在系统的 PATH 目录中,就能在全局访问composer.phar。 在类Unix系统中,你甚至可以在使用时不加 php 前缀。可以执行这些命令让 composer 在你的系统中进行全局调用:
    18     #mv composer.phar /usr/local/bin/composer
    19 
    20 测试composer命令:#composer
    21    ______
    22   / ____/___  ____ ___  ____  ____  ________  _____
    23  / /   / __ / __ `__ / __ / __ / ___/ _ / ___/
    24 / /___/ /_/ / / / / / / /_/ / /_/ (__  )  __/ /
    25 \____/\____/_/ /_/ /_/ .___/\____/____/\___/_/
    26                     /_/
    27 Composer version 1.2.0 2016-07-19 01:28:52
    28 ...
    29 
    30 Composer安装成功!!
    View Code

      2.安装Laravel LTS 

        # composer create-project laravel/laravel=5.1 --prefer-dist

      安装失败,修改PHP配置文件:(移出三个函数exec,proc_open,proc_get_status)

    1 ;disable_functions = passthru,exec,system,chroot,scandir,chgrp,chown,shell_exec,proc_open,proc_get_status,popen,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,stream_socket_server
    2 disable_functions = passthru,system,chroot,scandir,chgrp,chown,shell_exec,popen,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,stream_socket_server
    View Code  

      问题:laravel 使用composer安装到服务器上,访问laravel首页欢迎界面一直服务器错误(500)
      解决:修改两个目录权限bootstrap和storage权限,都给777

  • 相关阅读:
    解决jenkins sonar扫描中文名的文件会失败
    ukey命令行签名:解决safenet ukey 每次签名都要输入token password问题(批量签名)
    vmp如何使用命令行加壳exe或者dll
    tomcat 安装的jenkins的迁移解决磁盘爆满的问题
    cocoapods 执行pod trunk push 报错CDN: trunk URL couldn't be downloaded: https://raw.githubusercontent.com/CocoaPods/Specs/master/Spec
    使用NodeJs搭建的小型web应用
    对WebSocket技术的学习与探索(一)
    Git本地操作相关介绍
    NodeJs入门学习(一)
    ES6深入学习记录(三)编程风格
  • 原文地址:https://www.cnblogs.com/yexiang520/p/5784281.html
Copyright © 2020-2023  润新知