Ubuntu14.04下手工搭lamp及本项目的一些插件的过程

来源:互联网 发布:桂永清知乎 编辑:程序博客网 时间:2024/05/18 12:44
# 预备(ubuntu下的)
  * [参考](http://blog.chinaunix.net/uid-26942706-id-3207669.html)
  * ln用于建立硬连接
  * ln -s 用于建立符号连接(又称软连接)

# lamp平台的手工搭建
  * [参考资料1](http://blog.csdn.net/callmeback/article/details/8130190)
  * [参考资料2](http://blog.csdn.net/hantangsongming/article/details/23873853)
  * 其实就是弄了几样东西下来(基本上sudo apt-get install)
     * apache(貌似在ubuntu14.04下是apache2)
        * sudo apt-get install apache2
     * php(这个到后面要个扩展mcrypt,这里直接给出)
        * sudo apt-get install php5
        * sudo apt-get install libmcrypt4 php5-mcrypt
     * mysql(服务及客户端)
        * sudo apt-get install mysql-server
        * sudo apt-get install mysql-client
     * 各种奇怪的组件
       * sudo apt-get install libapache2-mod-php5
       * sudo apt-get install libapache2-mod-auth-mysql
       * sudo apt-get install php5-mysql
       * sudo apt-get install php5-gd
     * phpmyadmin(数据库管理软件)
       * sudo apt-get install phpmyadmin
       * sudo ln -s /usr/share/phpmyadmin /var/www/html
       * _注意:在这个版本下在浏览器url那里输入localhost是链接到html文件夹的_
     * apache配置
       * sudo a2enmod rewrite (至今不知道这货是做什么的,重写什么?)
       * sudo /etc/init.d/apache2 restart(重启服务)
       * sudo gedit /etc/apache2/apache2.conf (对配置文件进行一下设置,)
         * 令Apache支持.htm .html .php
         * 向文件中添加这么一句:AddType application/x-httpd-php .php .htm .html
       * 调试php,在/var/www/html下创建一个文件,名为test.php, 内容如下:
       * 下面的参数localhost,root,password这些都是要按用户实际需要修改
       * 这些在安装mysql的时候是有让用户配置过的

        ```php
          <?php
               $link = mysql_connect("localhost", "root", "password");
                if(!$link)
                    die('Could not connect: ' . mysql_error());
                else
                    echo "Mysql 配置正确!";
               mysql_close($link);
          ?>
         ```
       * 在浏览器url栏写上localhost/test.php看看结果
       * 这时有可能会出现乱码,这个问题我试过
       * sudo gedit /etc/apache2/apache2.conf
       * 然后加上字符集信息:AddDefaultCharset UTF-8
       * 结果还是失败,然后没有怎么处理,干脆全英

  * 附加内容
     * apache
     * sudo /etc/init.d/apache2 start   启动
     * sudo /etc/init.d/apache2 restart  重启
     * sudo /etc/init.d/apache2 stop     停止
     * mysql
     * sudo /et/init.d/mysql start
     * 之后的一样道理

  * lamp环境基本配置完成
      
# 项目相关的配置
  * 创建工作区域和配置一些信息
    * 先在 /var/www/html创建项目文件夹
    * cd /var/www/html
    * mkdir hehe        (hehe只是个文件名,用户可以自己改)
    * cd hehe
    * git init
    * git checkout b front-end    (我是前端的,所以直接git下前端的分支)
    * git remote add origin https://git.oschina.net/spl/TeamMindmap.git
    * git pull origin front-end
    * 纯小白的情况配置一些文件:
      * 在黑框上输入hostname查看主机名,记下
      * 准备编辑一些东西 sudo gedit bootstrap/start.php
      * 找到 $env = $app->detectEnvironment
      * 在这里面添加一些东西
        
      ```php
      <?php
      $env = $app->detectEnvironment(array(
    'local' => array('home'),     
        'hostname'=>array('hostname')
      ));
      ?>
      ```

      * cd app/config
      * mkdir hostname     (这里的hostname对应上面自己查到的)
      * 自己复制app/config/local里的两个文件到自己创建的 hostname 文件夹里
      * 接下来退回到工作区的根目录
      * cd ../
      * cd ../
      * 然后开始配置一些数据库链接的信息
      * sudo gedit app/config/hostname/database.php (这里的hostname依然是自己查到的那个)
      * 注意如下部分(mysql对应的部分):      

      ```php
      <?php
          'mysql' => array(
            'driver'    => 'mysql',
            'host'      => 'localhost',
            'database'  => '',
            'username'  => '',
            'password'  => '',
            'charset'   => 'utf8',
            'collation' => 'utf8_unicode_ci',
            'prefix'    => '',
        ),
      ?>
      ```

     * 我们需要做的是填好database,username,password的值,
     * 经过多次试验,我找到相关文件 sudo gedit /etc/mysql/debian.cnf
     * 我直接用了debian-sys-maint作为username
     * 而password在相关的文件里有
     * database,要自己创建,如下:
       * 在浏览器url栏输入localhost/phpmyadmin
       * 用root 登入,用户名root,密码是自己之前设置的那个
       * 登入后,点击数据库,创建数据库时输入个名字,这个名字就对应到上面配置文件的database的值上
       * 记住一点:这个时候这个数据库里面是没有table的
     * 先告一段落
 
  * 好了,现在就配置一下composer,npm,bower,grunt
    * composer
      * 先装个东东:sudo apt-get install curl
      * curl -sS https://getcomposer.org/installer | php
      * mv composer.phar /usr/local/bin/composer (免去输入一大串路径信息)
      * 现在只需要输入composer就可以使用它,而不需要php composer.phar
      * 好了,composer终于get到了
    * npm
      * 这货伴随着nodejs而来,而这货又需要python,gcc,g++
      * sudo apt-get install python
      * sudo apt-get install build-essential
      * sudo apt-get install gcc
      * sudo apt-get install g++
      * 然后要装nodejs也简单
      * sudo apt-get install nodejs
      * 接着通过测试版本就知道有没有装上
      * nodejs -v
      * npm -v
   * bower [参考别人项目ubuntu下配bower](https://github.com/hillelcoren/invoice-ninja)
      * npm install -g bower
      * 这个时候不一定全局都能用上(至少我是这样)
      * 于是手动创建软硬链接(都设置了全局安装了,就是这么神奇)
      * sudo ln -s /usr/local/lib/node_modules/bower/bin/bower /usr/local/bin/bower
   * grunt
      * npm install -g grunt-cli
   
  * 歇一歇。。。。。然后开始配置数据库的东东
    * 由于项目是用larval框架的,所以一切都变得简单
    * 但是加入对一些东西没有概念的话也是做不成事的
    * 种子,填充,迁移什么的
    * 在之前配置时,我们创建了一个数据库,但里面没table
    * 现在我们运用数据库迁移这项机制就可以很快地做到创建table
    * 而不需要写SQL语句
    * 首先,我们看看这个目录下的东西/var/www/html/hehe/app/database
    * 这里面都是数据库的配置文件([参考](http://v4.golaravel.com/docs/4.2/migrations))
    * 由于已经有这些配置文件了,所以直接数据库迁移
    * php artisan migrate
    * 接着我们登入回去phpmyadmin,也就是在浏览器url栏中填写localhost/phpmyadmin那步
    * 然后看看我们之前创建的数据库,点击进入里面就可以发现多了很多table了
    * 但是这些应该仅仅是表而已,还需要数据填充
    * 这时我们看到目录下/var/www/html/hehe/app/database
    * 这些就是所谓的种子了,其实相当于一些数据
    * 如此以来,我们填充一下   
    * php artisan db:seed
    * 随着项目的发张,数据库可能需要更新,到时refresh一下table和seed就行
    * 亦即 php artisan migrate:refresh --seed (首次配置不需要,但是之后需要)
    * 基本完成,然后测试一下
      * (提要:我们的应用入口是/var/www/html/hehe/public/index.php这个东西)
      * 在浏览器url栏输入localhost/hehe/public/index.php
      * 我们能看到应用首页,但是由于项目的requiredjs设置路径的缘故,我们又不得不设置多站点
      * apache设置多站点
        * 首先 sudo gedit /etc/hosts
        * 我们能看到一些ip信息
        * 在里面加上
        * 127.0.0.1       www.tmm.com
        * 解释: 127.0.0.1是一个ip,但是不同的机子可能有所不同
        * 解释: www.tmm.com就是替换你在浏览器上输入localhost的东西
        * 就是说,你可以输入www.tmm.com来替换之前localhost/hehe/public/index.php
        * 但是现在还不可以,还需要配置一下apache的一些东东
        * sudo gedit /etc/apache2/sites-enabled/000-default.conf
       
        ```html
        <VirtualHost *:80>

      ServerAdmin webmaster@localhost
      DocumentRoot /var/www/html

        <Directory />
                Options FollowSymLinks
                AllowOverride None
          </Directory>
          <Directory /var/www/html>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride None
                Order allow,deny
                allow from all
          </Directory>

         ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
          <Directory "/usr/lib/cgi-bin">
                AllowOverride None
                Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
                Order allow,deny
                Allow from all
          </Directory>

      ErrorLog ${APACHE_LOG_DIR}/error.log

          LogLevel warn
      CustomLog ${APACHE_LOG_DIR}/access.log combined

      Alias /doc/ "/usr/share/doc/"
          <Directory "/usr/share/doc/">
            Options Indexes MultiViews FollowSymLinks
            AllowOverride None
            Order deny,allow
            Deny from all
            Allow from 127.0.0.0/255.0.0.0 ::1/128
         </Directory>

         </VirtualHost>

         <VirtualHost *:80>
           ServerAdmin webmaster@localhost
           ServerName www.tmm.com
           DocumentRoot /var/www/html/hehe/public/
         <Directory />
                Options FollowSymLinks
                AllowOverride None
         </Directory>
         <Directory /var/www/html>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride None
                Order allow,deny
                allow from all
         </Directory>
        </VirtualHost>
        ```

        * 如上是我的配置,其实只需要改一改路径还有servername就可以
        * 接着在浏览器上输入www.tmm.com就可以显示应用首页了
        * 用户的登入问题,账号密码都是admin,但是也可以自己设置的
          * 自己设置:sudo gedit /var/www/html/hehe/app/database/UserTableTestSeeder.php
          * 过程其实就是设置完后 refresh一下seed就可以了(php artisan migrate:refresh --seed)


# 问题来了
  * 登入进去后,个人主页啥都不见,除了导航栏,其他页面貌似都载入不了。。。。。
  * 在浏览器url中输入的问题
    * 如果输入www.tmm.com 能正常显示首页,
    * 但是点击功能介绍,登入,注册,立即体验几个按钮的时候就不行了
    * 显示404 Not Found了

    * 如果输入www.tmm.com/index.php再进行如上操作就可以了

    * 登入页面的url
    * www.tmm.com/index.php/authority/login

    * 登入进去后的页面的url
    * www.tmm.com/index.php/project#/
    * 可是啥都没有,就只有导航栏

    * 按一下我的项目按钮,之后的页面url
    * www.tmm.com/index.php/project#/
    * 和刚登入进去的页面一样(url和看到的东西)

    * 按一下功能介绍按钮,之后的页面url
    * www.tmm.com/index.php/guide
    * 发现这个页面没有什么问题,和写的代码吻合

    * 按一下个人主页按钮url如下
    * www.tmm.com/index.php/personal#/
    * 还是什么也没有

    * 接着按一下创建项目按钮,url如下
    * www.tmm.com/index.php/project#/creating
    * 还是什么也没有

    * 可以注意到,无论导航栏在哪个页面,那个头像都不存在
    * 移动到头像位置,出现下拉菜单
      * 按一下菜单的用户设置,url如下
      * www.tmm.com/index.php/personal#/
      * 可以知道这个和个人主页按钮的url是一样的,并且还是什么都没有
     
      * 按一下菜单的注销,url如下
      * www.tmm.com/index.php
      * 一按回到解放前,和第一次输入这个url一样,显示的就是首页

  * 通过上面的现象不难看出,设置的这个站点其实存在着问题,或者说requiredjs存在问题
  * 要加上/index.php才能正常显示(虽然不是全部页面)
  * 通过观察各url,发现出问题的都是有’#‘
  * 如personal#和project#
  * 而且通过浏览器控制台窗口可以看到有一样东西加载不了,形如:
  * 登入页面的(就是填用户名和密码的)
    * GET http://www.tmm.com/index.php/js/home-main.js ([HTTP/1.0 404 Not Found 15ms])
    * Error: Script error for: home-main http://requirejs.org/docs/errors.html#scripterror(require.js:166)
 
  * project页的
    * GET http://www.tmm.com/index.php/ngApp/projectApp/tpls/project-list.html ( [HTTP/1.0 404 Not Found 19ms])
 
  * personl页的
   * GET http://www.tmm.com/index.php/ngApp/personalApp/tpls/personal-setting.html([HTTP/1.0 404 Not Found 16ms])

  * creating页的
    * GET http://www.tmm.com/index.php/ngApp/projectApp/tpls/project-creating.html([HTTP/1.0 404 Not Found 21ms])


# 问题的解决
  * 这个要看看多站点配置了文件了,请读者回看上面对apache2多站点的配置过程
  * sudo gedit /etc/apache2/sites-enabled/000-default.conf
  * 只需改了倒数第一和二句的AllowOverride None
  * 改为AllowOverride All
  * sudo /etc/init.d/apache2 restart
  * 好了,正常运行,不过项目还有很多bug,通过浏览器控制台可以看到很多文件无法载入

0 0
原创粉丝点击