步骤二(软件环境准备) 原文链接https://help.aliyun.com/document_detail/25805.html
应用环境是通过 yum命令访问 Remi repository 源进行安装。 Remi repository 源包含 PHP 的 Linux 源,由 Remi 提供维护。Remi 也提供了自动安装源的 rpm 包,安装和使用都很简单。使用 YUM 安装或更新 PHP等服务器相关程序的时候就非常方便了。 需要您使用root身份权限执行如下两条命令加装两个源:
rpm -ivh http://mirrors.ustc.edu.cn/fedora/epel/6/i386/epel-release-6-8.noarch.rpm rpm -ivh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
1.环境安装
- 安装Nginx
配置nginx最新版软件源 vim /etc/yum.repos.d/nginx.repo 写入如下内容: #nginx.repo [nginx] name=nginx repo baseurl=http://nginx.org/packages/centos/6/$basearch/ gpgcheck=0 enabled=1 然后执行如下命令安装nginx: yum --enablerepo=remi,remi-test install -y nginx 设置开机启动Nginx,执行如下命令: chkconfig nginx on Nginx 应用根目录到数据盘 /data下的 nginx子目录变更: mkdir /data/nginx mkdir /data/nginx/log mv /usr/share/nginx/html /data/nginx ln -s /data/nginx/html /usr/share/nginx/html chown nginx:nginx -R /data/nginx/html/
- PHP及依赖软件安装
安装命令: yum --enablerepo=remi,remi-test install -y php php-common \ php-mysql php-pgsql php-pecl-mongo php-sqlite \ php-pecl-memcache php-pecl-memcached php-gd \ php-mbstring php-mcrypt php-xml php-pecl-apc php-cli php-pear php-pdo
- Php-fpm安装
安装命令: yum --enablerepo=remi,remi-test install -y php-fpm 设置开机启动php-fpm,执行如下命令: chkconfig php-fpm on
2.应用环境配置
- Nginx配置
首先备份安装后原始的nginx默认配置 /etc/nginx/conf.d/default.conf 命令如下: cp /etc/nginx/conf.d/default.conf /etc/nginx/conf.d/default.conf.bak
修改 /etc/nginx/conf.d/default.conf,内容参考:default.conf
启动nginx: service nginx start
- php.ini配置
首先备份安装后的原始的/etc/php.ini ,命令如下 cp /etc/php.ini /etc/php.ini.bak
修改 /etc/php.ini,内容参考:php.ini
php.ini修改说明:
配置名 | 改后值 | 改前值 |
---|---|---|
short_open_tag | On | Off |
disable_functions | dl,getopt,ini_get_all,ini_restore,php_ini_loaded_file, php_ini_scanned_files,ini_alter,chroot,chgrp,chown, lchgrp,lchown,symlink,system,exec,shell_exec,proc_open,popen, proc_nice,proc_get_status,proc_close,passthru,proc_terminate, escapeshellcmd,escapeshellarg,stream_socket_pair, stream_get_transports,stream_socket_server, import_request_variables,get_headers,openlog,syslog,closelog, debug_zval_dump,mb_send_mail | 未启用 |
expose_php | Off | On |
error_reporting | E_ALL & ~E_DEPRECATED & ~E_NOTICE | E_ALL & ~E_DEPRECATED & ~E_STRICT |
error_log | /data/nginx/log/php_errors.log | 未启用 |
html_errors | Off | On |
variables_order | "EGPCS" | "GPCS" |
upload_max_filesize | 20M | 2M |
date.timezone | "Asia/Shanghai" | 未启用 |
open_basedir | "/tmp/:/data/nginx/html/" | 未启用 |
session.save_path | "/tmp" | 未启用 |
post_max_size | 20M | 8M |
cgi.fix_pathinfo | 0 | 1 |
为了降低安全风险,您还需要更名 /etc/php.d 目录下不需要的扩展配置文件 xxx.ini 文件为 xxx.ini.remove, 命令如下: mv /etc/php.d/posix.ini /etc/php.d/posix.ini.remove mv /etc/php.d/phar.ini /etc/php.d/phar.ini.remove mv /etc/php.d/sysvmsg.ini /etc/php.d/sysvmsg.ini.remove mv /etc/php.d/sysvsem.ini /etc/php.d/sysvsem.ini.remove mv /etc/php.d/sysvshm.ini /etc/php.d/sysvshm.ini.remove mv /etc/php.d/wddx.ini /etc/php.d/wddx.ini.remove
- Php-fpm 配置
先备份默认生成配置文件 cp /etc/php-fpm.d/www.conf /etc/php-fpm.d/www.conf.bak
修改 /etc/php-fpm.d/www.conf, 内容参考:www.conf
修改说明:
配置名 | 改后值 | 改前值 |
---|---|---|
security.limit_extensions | .php .html .htm | 未启用 |
request_slowlog_timeout | 5s | 未启用 |
user | nginx | apache |
group | nginx | apache |
php_value[session.save_path] | 注释掉使用/etc/php.ini里的定义 | /var/lib/php/session |
启动php-fpm: service php-fpm start
步骤三(本地读写的数据下载)
ACE控制台将提供PHP应用本地读写数据的打包下载功能。(注:此功能仅向下线公告发出前1个月内有活跃的PHP应用提供,下文简称为“活跃应用”)
1.在您的应用列表的操作栏中,每个活跃应用将出现“迁移打包”按钮。
2.您的每个活跃应用只能触发一次“迁移打包”操作。当您点击“迁移打包”按钮后,此应用运行空间上的本地读写文件将会打成一个tgz包,并存放在oss上一个私有的、独立的bucket中。(注:考虑到大量用户可能会在同一时间申请活跃应用的打包迁移,我们预计会在2〜48小时内完成打包。)
3.在等待打包的过程中,“迁移打包”按钮将会变为“打包中”的文案展示,此时请您耐心等待打包的结果。
4.当打包完成后,对应的应用将出现“下载迁移包”按钮。
5.当您点击“获取迁移包”按钮后,我们将展示相关tgz包的下载链接。链接中我们加签了对此tgz包的读权限临时授权,请在30分钟内完成点击此链接、向OSS发起下载请求(超过30分钟后再请求此链接,将会抛出拒绝访问的错误)。请您不要把链接泄露给任何人。
6.当您发现链接拒绝访问(未及时下载),请再次点击“下载迁移包”按钮即可获取含有新授权信息的下载链接。
注:
1.本次打包的仅包含您的PHP应用本地读写、并配置为多实例间同步的数据(具体请参考https://help.aliyun.com/document_detail/ace/quick-start/php/yaml.html 中“本地读写同步OSS(storage)”)
2.解压后的tgz包的一级目录是数字,对应您ACE控制台-版本管理中的版本号。每个数字目录中的内容,即为您该版本代码部署时的PHP应用本地写入的文件。文件的路径结构和PHP应用的本地结构一致。
- 文件托管在自有OSS服务中的数据获取方式:
如果您在应用的app.yaml 里配置了
oss_id: access_key #请填写阿里云用户中心->安全认证中生效状态的access_key
oss_secret: secret_key #请填写access_key对应的secret_key
oss_bucket: bucket_name #请指定用于存储文件bucket
保存运行空间数据。
由于ACE 存在文件到mybucket 下的路径规则是 bucket_name/ACE分配的aliapp.com二级域名/代码部署版本号
举例说明:应用testace1举例
在 app.yaml 里配置的
oss_bucket:myossbucket
分配的二级域名:testace1.aliapp.com
当前部署的版本:1
则在OSS上存储路径为:myossbucket/testace1.aliapp.com/1
步骤四(扩展服务迁移)
步骤五(代码改造)
1.Cache改造
- 改造说明:去除ACE提供的Cache的SDK的依赖
- 改造后示例:参考文档
2.Storage改造
- 改造说明:去除ACE提供的Storage的SDK的依赖
- 改造后示例:参考文档
步骤六(搭建应用)
1.下载源码:从ACE
控制台选择源码分支(svn),Checkout并将源码上传至目标服务器。
2.部署应用
- 启动容器
1.上传应用代码到nginx站点根目录 /data/nginx/html下 如果您迁移过mysql,根据您的实际mysql配置信息修改对应的数据库配置信息程序文件
2.修改应用程序权限为 nginx chown -R nginx:nginx /data/nginx/html
3.启动php-fpm和nginx service php-fpm start service nginx start
4.解析域名到您ECS公网IP
5.解析生效后通过域名进行访问测试
- 验证部署的应用
在浏览器查看应用是否部署成功:http://${YourServerIp}/ ${YourServerIp}为你购买的ECS的公网Ip。 看到应用首页面,部署成功!
步骤七(域名迁移)
迁移至Docker
- Docker介绍
参考文档:容器服务
目前Docker正处在公测中,请及时关注相关消息。
常见问题
-
Q:原ACE PHP应用使用ACE PHP SDK或 扩展服务迁移问题?
A:需要您先对原代码涉及PHP SDK或扩展服务部分进行改造,去掉对依赖后再上传代码到ftp空间的 htdocs目录下。
-
Q:原ACE PHP 应用在app.yaml 配置URL 重写规则如何迁移?
A:您需要在弹性web 应用的ftp空间里的 htdocs目录下,上传 .htaccess文件。 文件内容需要参考:http://httpd.apache.org/docs/current/mod/mod_rewrite.html 等相关参考资料。 将原来配置在 app.yaml 配置的规则nginx语法声明的url rewrite 规则转换成apache支持语法规则即可。
-
Q:原ACE PHP 应用有针对某个目录禁止某些后缀文件访问规则如何迁移?
A:比如需求是禁止访问test目录下 图片,css文件,js文件 在htdocs/test下上传如下内容的 .htaccess文件 <FilesMatch .(?i:gif|jpe?g|png|css|js)$> Require all denied </FilesMatch>
-
Q:弹性WEB 应用如何禁止IP访问?
A:由于web请求先到路由层,所以需要通过 http请求头的X-Forwarded-For 字段获取客户端真实IP。 参考如下: 禁止 200.1.253.1 和 200.1.253.2 两个IP 和 200.1.2 网段 。 需要在 htdocs下上传如下内容的.htaccess RewriteEngine On ##Block ip RewriteCond %{http:X-Forwarded-For} (200.1.253.1|200.1.253.2|200.1.2) [NC] RewriteRule (.*) – [F]
-
Q:网站访问有时出现 503 超时问题?
A:一般因为网站是 wordpress 等程序,此论坛程序在加载过程复杂占内存大 弹性web的是内存资源根据型号有限制的,您购买的是128M内存型号,每个php进程 分配最大48M,后台启动2个 php-fpm,其他内存分配给web容器apache使用。 建议购买 512以上内存型号,或者购买 云虚拟主机产品(此产品是共享内存,php进程最大是128M限制)
-
Q:用户需要支持path_info模式?
A:目前弹性web暂时不支持 开启 cgi.fix_pathinfo=1 后期会增加支持,请通知客户退了应用,购买linux版的云虚拟主机。
-
Q:应用启动失败?
A:可能使用因为用户配置的 .htaccess 文件使用的apache2.2语法,因为检查启动http状态码逻辑获取返回值是500 错误导致。 建议用户先删除 .htaccess文件,然后就可以启动了。 启动后再参考 apache2.4的语法进行设置,参考: http://httpd.apache.org/docs/2.4/ 举例: 查看用户 htdocs/.htaccess 文件内容 <FilesMatch "\.(bak|inc|lib|sh|tpl|lbi|dwt)$"> order deny,allow deny from all </FilesMatch> 使用的是 apache2.2语法,应该改成 apache2.4语法: <FilesMatch "\.(bak|inc|lib|sh|tpl|lbi|dwt)$"> #order deny,allow #deny from all Require all denied </FilesMatch> 然后,在控制台 重新启动一下应用。
-
Q:ssi 支持shtml?
A:由于ssi功能会增加通过 shtml语法执行获取服务端环境信息的风险。 目前暂不支持。
-
Q:首页设置问题?
A:介绍一下 弹性web首页设置的顺序规则如下: 1.静态页文件放到前面 2.只支持一个 动态页面 比如设置顺序为 index.html zhuye.html index.php 是正确的。 如果顺序为 index.html index.php zhuye.html 是不支持的。 请您 确保上传 首页文件后再测试一下。
-
Q:为什么我的ACE PHP应用没有本地读写的数据“迁移打包”按钮?
A:此功能仅向正常使用中的ACE应用(运行中/停止),或者ACE应用已禁用、但是禁用时间在2月6号后的PHP应用提供。
-
Q:为什么我的ACE PHP应用显示的打包结果为空?
A:本次打包的仅包含您的PHP应用本地读写、并配置为多实例间同步的数据(具体请参考https://help.aliyun.com/document_detail/ace/quick-start/php/yaml.html 中“本地读写同步OSS(storage)”)。若您的应用有以下情况之一,将不会产生任何待打包的文件,此时打包工具将向您显示“没有本地读写的数据可供打包下载”: 1.从未被部署。 2.应用没有任何PHP本地文件写入操作。 3.yaml文件自行修改为不需要实例间数据同步。
-
Q:本地读写的数据打包的tgz压缩包的目录结构如何理解?
A:解压后的tgz包的一级目录是数字,对应您ACE控制台-版本管理中的版本号。每个数字目录中的内容,即为您该版本代码部署时的PHP应用本地写入的文件。文件的路径结构和PHP应用的本地结构一致。
-
Q:能不能多次发起本地读写的数据打包操作?
A:不允许。此功能每个应用仅提供一次。如果您打包后仍有新增的本地写入,这部分增量数据请自行导出。
-
Q:我已经点击了本地读写的数据的“迁移打包”按钮,请问大概多久可以打包完成?
A:考虑到大量用户可能会在同一时间申请应用的打包迁移,我们预计会在2 ~ 48小时内完成打包。打包的时间点不保证,视乎打包排队的情况。
-
Q:申请本地读写的数据的“迁移打包”后,控制台上提供的tgz包URL无法下载?
A:当您点击“获取迁移包”按钮后,我们将展示相关tgz包的下载连接。连接中我们加签了对此tgz包的读权限临时授权,请在30分钟内完成点击此链接、向OSS发起下载请求(超过30分钟后再请求此链接,将会抛出拒绝访问的错误)。当您发现连接拒绝访问(未及时下载),请再次点击“获取迁移包”按钮即可获取含有新授权信息的下载连接。请注意:不要把此连接泄露给其他人。
-
Q:申请本地读写的数据的“迁移打包”后,显示打包失败?
A:少量用户的PHP本地读写数据太大,无法自助打包,请提交工单申请手工处理。
-
Q:为什么我的ACE PHP应用没有本地读写的数据打包下载的功能?
A:您好,此功能仅向正常使用中的ACE应用(运行中/停止),或者ACE应用已禁用、但是禁用时间在2月6号后的PHP应用提供。