• 学习瓦力部署系统的项目配置和上线部署


    一直想自己开发的项目能够自动部署到服务器上面,节约通过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基本运行环境搭建
  • 相关阅读:
    布局重用 include merge ViewStub
    AS 常用插件 MD
    AS 2.0新功能 Instant Run
    AS .ignore插件 忽略文件
    AS Gradle构建工具与Android plugin插件【大全】
    如何开通www国际域名个人网站
    倒计时实现方案总结 Timer Handler
    AS 进行单元测试
    RxJava 设计理念 观察者模式 Observable lambdas MD
    retrofit okhttp RxJava bk Gson Lambda 综合示例【配置】
  • 原文地址:https://www.cnblogs.com/fsong/p/6624535.html
Copyright © 2020-2023  润新知