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

一直想自己开发的项目能够自动部署到服务器上面,节约通过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基本运行环境搭建
posted @ 2017-03-26 22:51  五毛钱的饼  阅读(925)  评论(0编辑  收藏  举报