zoukankan      html  css  js  c++  java
  • 学习瓦力部署系统的项目配置和上线部署

    一直想自己开发的项目能够自动部署到服务器上面,节约通过ftp上传一个一个的文件进行部署项目的时间。
    由于jenkins的配置目前对笔者个人而言有点复杂,尝试过之后,结果没有尝试成功。之前找自动部署的系统时,好像在知乎中看到一条回答有介绍瓦力部署,并有github的链接,有关注过。开始时尝试了比较多次,检测时一直提示请确认php进程用户ssh-key加入目标机器的git的ssh-key信任列表之后,放弃了一段时间;今天尝试将LAMP转换为LNMP环境之后,才发现笔者还是可以尝试成功的嘛。开始之前,笔者把之前在Ubuntu 14.04安装的LAMP已卸载完毕。

    系统环境:#####
    1. Ubuntu 14.04(宿主机)
    2. 树莓派(目标机,IP:192.168.2.100)
    宿主机安装的软件:
    1. Nginx 1.4.5
    2. Mysql 5.5.35
    3. PHP 5.5.9
    4. composer 1.3.2
    5. git 1.9.1
    6. Ansible

    宿主机检出了walle-web master分支最新版,学习时,是用github的项目进行的。

    安装LNMP

    笔者依次执行的是:

    安装mysql:
    apt-get install mysql-server mysql-client
    
    安装Nginx:
    sudo apt-get install nginx
    
    安装PHP5
    sudo apt-get install php5-fpm
    
    配置Nginx默认虚拟主机设置文件
    sudo vim /etc/nginx/sites-available/default
    

    配置文件中的改动部分:

    1. index index.html index.htm;修改为index index.php index.html index.htm;
    2. 删除配置文件关于PHP的注释之后是:
            # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
            #
            location ~ .php$ {
                    try_files $uri =404;
                    fastcgi_split_path_info ^(.+.php)(/.+)$;
                    # NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini
            #
            #       # With php5-cgi alone:
            #       fastcgi_pass 127.0.0.1:9000;
            #       # With php5-fpm:
                    fastcgi_pass unix:/var/run/php5-fpm.sock;
                    fastcgi_index index.php;
            #        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
                    include fastcgi_params;
            }
    
            # deny access to .htaccess files, if Apache's document root
            # concurs with nginx's one
            #
            location ~ /.ht {
                    deny all;
            }
    

    保存文件并重新加载 nginx 命令:

    sudo service nginx reload
    
    修改PHP.ini

    修改PHP.ini,主要是设定cgi.fix_pathinfo = 0;

    sudo vim /etc/php5/fpm/php.ini
    
    ;cgi.fix_pathinfo=1;
    

    修改为:

    cgi.fix_pathinfo=0;
    

    然后运行sudo service php5-fpm reload命令,重新加载PHP-FPM。

    安装PHP 模块
    sudo apt-get install php5-mysql php5-curl php5-gd php5-intl php-pear php5-imagick php5-imap php5-mcrypt php5-memcache php5-ming php5-ps php5-pspell php5-recode php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xsl
    

    也安装了apc

    sudo apt-get install php-apc
    

    重新加载PHP-FPM

    sudo service php5-fpm reload
    

    可能会出现如下信息

    $ sudo service php5-fpm reload
    reload: Unknown Instance:
    

    可以尝试运行:

    sudo pkill php5-fpm;sudo service php5-fpm start
    

    按照安装的文档介绍,执行的命运有:

    sudo su
    mkdir -p /data/www/walle-web && cd /data/www/walle-web
    git clone https://github.com/meolu/walle-web.git .
    composer install --prefer-dist --no-dev --optimize-autoloader -vvvv
    ./yii walle/setup
    

    核对文档的Nginx配置,修改了Nginx的配置。

    按照安装错误中的如何添加用户key到git的ssh-keys列表,如何添加用户ssh-key到目标机群部署用户ssh-key信任,切换用户(www)时:this account is currently not available的解决方法介绍,成功将ssh key添加到github项目的Deploy keys中。

    wa@wa-Rev-1-0:/var/www$ sudo ps aux | grep php
    www-data 26441  0.0  0.4 708864 39988 ?        S    19:42   0:07 php-fpm: pool www                                                       
    wa       28158  0.0  0.0  15948  2520 pts/1    S+   22:14   0:00 grep --color=auto php
    

    通过ps aux | grep php,清楚运行的用户是 www-data;

    切换用户(www-data)时:this account is currently not available,修改了/etc/passwd,笔者将www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin修改为www-data:x:33:33:www-data:/var/www:/bin/bash.


    因为笔者在终端中运行su - www-data命令之后需要输入密码,所以执行了sudo passwd www-data修改www-data用户的秘密。


    在宿主机的终端依次执行了:

    su - www-data
    ssh-keygen -t rsa
    cat ~/.ssh/id_rsa.pub 
    

    将SSH Key复制到了github中项目的Deploy keys中之后。尝试了一下git clone git@github.com:wakasann/other.git,需要手工确认一次。

    在宿主机的终端再次运行:

    ssh-copy-id -i ~/.ssh/id_rsa.pub pi@192.168.2.100
    

    将宿主机的www-data用户的ssh key添加到树莓派(目标机)的ssh key信任列表中。

    按照Git项目配置的详细介绍,我的配置是:

    为了确保宿主机中的/var/www/deploy目录,www-data用户可以读写操作,笔者将deploy文件夹的拥有者赋为www-data

    在宿主机终端执行的命令是:

    cd /var/www
    mkdir deploy
    sudo chown www-data:www-data /var/www/deploy
    sudo chmod 777 deploy
    cd deploy
    mkdir from
    cd ..
    sudo chown www-data:www-data /var/www/deploy/from
    sudo chmod 777 /var/www/deploy/from
    

    执行了上面的命令,然后在瓦力部署系统的项目配置中点击检测,显示配置检测通过,恭喜:),激动。
    然后尝试多次创建上线单,并进行上线部署。

    在目标机的效果是:

    最后web访问目标机项目的效果是:

    注:笔者的PHP5-fpm没有使用TCP 连接,所以没有将 fastcgi_pass 127.0.0.1:9000;的注释去掉。

    参考文档

    1. 文档 安装,安装错误,Git项目配置 ,提交上线单
    2. walle(瓦力)部署系统的安装和简单使用
    3. Ubuntu 14.04 LTS下安装 LNMP环境 LNMP基本运行环境搭建
  • 相关阅读:
    AngularJS数据建模(转载)
    Entity Framework Code First ---EF Power Tool 和MySql一起使用遇到的问题
    EF开发程序经常用的几个东西
    jQuery插件---轻量级的弹出窗口wBox
    SQL Server 索引维护sql语句
    windows server2008 r2 下启用 sqlserver 2008的远程连接
    windows2012 r2 提高网速方法
    jQuery validation
    Bootstrap Modal 垂直居中
    shell 循环读取文件及字符串转为数组
  • 原文地址:https://www.cnblogs.com/fsong/p/6624535.html
Copyright © 2011-2022 走看看