lamp自动部署工具_Linux转场部署注意事项:LAMP系统加YII框架部署实战

22d6ef006a09aedb71918df7c1414048.png

读前声明:本文是面向已经有LAMP开发部署经验的同行,也是自己的一个经验分享,不提供基本的命令说明。初学者可以参考,但是不必太在意一些命令的细节,体会一下思路即可。

最近有服务器需要转场部署,原来的系统是LAMP开发的中等压力网站,而且采用了YII框架。在转场部署的过程中碰到了一些问题,本文作一个记录,也和同行分享一下,我们的目标是,避免掉坑不受伤,尽量不要掉到前辈已经掉进去的坑里。

第一部分,原环境的备份。

此处的备份,不仅包括原来的运行,而且连开发环境也同步备份进来,因此就包括如下部分:

1.1 Mysql

mysql因为数据量不是太大,所以直接用了mysqldump来作备份:

mysqldump -u 用户名 -p 数据库名 > 导出的文件名

1.2 PHP代码

·        cp –r 来源 目标
·        tar cvzf 文件名 文件夹名
·        tar xvzf 文件名

· 空目录下面解压缩

1.3 系统自动运行任务(crontab)

·        crontab -l>~/crontab`date '+%Y%m%d'`.bak

· 此处的`是esc下面的那个符号,代表命令的执行。

1.4 SVN Server

svnadmin dump /data/SVN/REPO_NAME|gzip > ~/REPO_backup_yyyymmdd.gz

第二部分,新环境的一般性搭建,软件环境准备。

新的环境,建议用centos来作为正式部署环境。如果是私有开发环境的话,考虑到界面友好性,可以搭建Ubuntu环境,现在最新的LTS是Ubuntu 16.04 LTS。

安装好Ubuntu之后,其他必须的服务器环境为:Apache Mysql PHP SVN SSH

其中SSH是为了搭建基本的远程工作环境,在Windows客户端使用xshell加上winscp即可。

这些环境的安装,基本上配置了本地的package 源之后,就可以很方便的用apt-get install来安装了。我的本地源如下:

9945f2b49a2cdb79339711478fc83466.png

Figure 1 Ubuntu本地源

此处需要考虑的是PHP的版本,最新的PHP默认都安装PHP7,但是PHP7已经取消了mysql_connect之类函数的支持,所以有可能需要安装PHP5.6版本。因为我的代码用了mysql的函数,在验证PHP7不支持之后,删除了PHP7,重新安装了PHP5.6版本。

7e119bfacf991537e164a131305c56c5.png

Figure 2: 服务器软件package详情

第三部分:新环境下面的部署:

3.1 Mysql

· 先用mysql创建一个数据库

·        create database XXXXX;
·        mysql –u –p 数据库名 < 文件名

此处关于mysql的另外一个严重问题就是默认字符集的配置。随Ubuntu发布的默认mysql的character_set_server是latin1,如下图:

5a5c611cdec11591c0d1dbacff1e840f.png

而一般情况下,我推荐所有的字符集配置都是utf8。所以这时需要修改默认字符集,我的版本是5.7,是在/etc/mysql/mysql.conf.d/mysqld.cnf文件里,如下图:

69a9c06cba89b7eda156cdff81e411ad.png

添加了:

character-set-server=utf8
collation-server=utf8_general_ci
skip-character-set-client-handshake

修改之前,配置如图:

5e43ca73e9ac7650506ddac2dda46cfb.png

修改,重启mysql之后,配置成功,如下图:

cbc822affe2f671e5c35738e59f6589a.png

这样子client,connection,server三段的字符集统一,就不会再有乱码情况产生。

3.2 PHP与Apache的配置

我的习惯是把文件放入/data目录下,因为这样子可以为以后单独增加硬盘提供便利。因此,在把php文件解压到/data目录下之后,还需要配置apache2把www root指向该目录。

Apache2的配置和apache不一样,附上我的关键配置:

3660a4692c0393c41b42be285297a75c.png

Figure 3: Apache2.conf添加私有目录权限

把整个网站根目录指向修改:/etc/apache2/sites-enabled/000-default.conf

06af9485a0c9ecc005859e47f37c804a.png

Figure 4: 000-default.conf修改DocumentRoot

3.3 crontab

这个不必多说,直接执行crontab –e编辑添加即可

3.4 SVN

·        svnadmin create /data/SVN/zmngh-php
·        gunzip –c XXX.gz > 备份文件
·        svnadmin load zmngh-php < 备份文件

· 修改conf目录下面的svnserve.conf,然后修改auth passwd文件。

·

5d476c1ec6bfce9a5321d98a97ab0962.png

· snvserve –d –r /data/SVN 就可以了。

· 然后在init.d下面写一个svnd.sh自动执行。

2cf28fd3137263fecdc70cfad73f04a8.png

Figure 5: svnd.sh

3.5 YII框架的移植。

因为网页代码使用了PHP框架,YII框架。但是YII框架对于URL的处理有自己的一套规则。其根本特点就是behind/index.php里面是整体框架入口。它的访问规则是依赖目录下面的.htaccess文件处理的,但是.htaccess会高压力下会引来可观的性能下降。所以建议不要使用.htaccess文件处理,而是直接在访问入口时明确指明。

比如我的behind下的.htaccess内容如下:

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php/$1 [L]

那么就在访问时,直接加index.php字符串即可。放弃使用.htaccess,而且避免了换场部署时需要特别让apache处理.htaccess的设置。

第四部分:为方便部署而提倡的开发经验:

1 完全使用English+UTF8字符集。

服务器安装的时候,建议选择默认英文,这样子其实就是English+UTF8的字符集配置,已经提供了最大的统一性。Mysql与PHP的文件里面的中文字符都用UTF8保存。

这样子的好处是,不仅仅文件内容可以是中文,而且文件名也可以取中文名。

相应的客户端配置(xshell与winscp)如下:

41512f98af42baa30a47de4d2e722022.png

Figure 6: WinSCP设定UTF8

4574dde4875cf4ffd3724db7c8849ce7.png

Figure 7: Xshell设定UTF8

2 sql的语句不推荐复杂的sql,那种非常长的sql查询只会给自己带来麻烦,推荐使用简单的sql语句,复杂的逻辑处理,用php来完成即可。

其实这应该是一个最基本的编程理念:用最基础的,稳定的,可理解的标准化模块来搭建高楼大厦,而不是制造复杂的不好复制的特制形状建材。

以上。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值