PHP运行环境(Centos 64位|PHP5.4|Nginx) 操作文档
2014-09-01 15:48:00

1、软件安装方式
镜像版本:centos 6.3 64位/php5.4-nginx1.4-mysql5.5-vsftpd
1.1、镜像环境里相应软件的安装,是基于阿里云linux版的一键安装包源码1.3.0版本,在此基础上修改、优化了相应功能,编译安装完成。
1.2、在镜像环境中,/root/sh-1.3.0-centos.zip是安装镜像环境的脚本,您可以在centos 6.3系统中自行采用此脚本安装,安装后的环境跟镜像里初始化的环境一致。值得注意的是,如果采用此脚本安装镜像环境,需要chmod  777 -R  sh-1.3.0-centos赋予777安装权限。
1.3、在镜像环境中,/root/sh-1.3.0-centos是安装环境的主目录,镜像中的环境是在此目录下编译安装的。
1.4、更多版本的安装地址备注:
http://help.aliyun.com/view/11108189_13435438.html

2、云服务器配置要求
镜像需要云服务器最低配置要求:1核/512M及以上
具体云服务器配置要求,根据您的业务情况来定。比如您的业务访问量不高,可以选择中低配云主机来使用镜像。如果您的业务访问量很高,则需要选择中高配云主机来使用镜像。

 


3、软件版本号、开源协议列表
nginx
版本:1.4.7
开源协议:BSD
协议链接:http://nginx.org/LICENSE

php
版本:5.4.27
php扩展: Zend Guard Loader 6.0.0扩展。
开源协议:GPL
协议链接:http://www.gnu.org/licenses/old-licenses/gpl-2.0.html

mysql
版本:5.5.37
开源协议:GPL
协议链接:http://www.gnu.org/licenses/old-licenses/gpl-2.0.html

vsftpd
版本:3.0.2
开源协议:GPL
协议链接:http://www.gnu.org/licenses/old-licenses/gpl-2.0.html

备注:系统目录下/alidata/website-info.log文件为安装软件版本详细列表。
4、mysql及ftp密码
mysql的用户名/密码、ftp的用户名/密码保存在系统目录下:
/alidata/account.log文件中。

关于如何修改mysql及ftp的密码,可以参考如下:
1、修改mysql密码:
mysqladmin -uroot -p老密码  password  新密码
注意:老密码即您mysql的root用户当前的密码,新密码即您修改后的密码。 -p跟老密码之间没有空格。老密码跟“password”之间有空格,password跟新密码之间有空格。

2、修改ftp密码:
用root用户登录系统,然后执行下面命令:
passwd  www
然后输入您的ftp新密码。
注意:用户名www为镜像默认采用的ftp用户,关于如何再添加新的ftp用户,在这里不再做过多介绍,可以参考系统目录/etc/vsftpd中关于ftp的配置文件,再相应配置。

 


5、软件目录及配置列表
软件的主目录:/alidata
web主目录:/alidata/www
ftp主目录:/alidata/www
nginx主目录:/alidata/server/nginx
      nginx配置文件主目录:/alidata/server/nginx/conf
php主目录:/alidata/ server/php
      php配置文件主目录:/alidata/ server/php/etc
mysql主目录:/alidata/server/mysql
      mysql配置文件:/etc/my.cnf
日志目录:
      /alidata/log/nginx  为nginx存放日志主目录
      /alidata/log/php  为php存放日志主目录
      /alidata/log/mysql 为mysql存放日志主目录
init目录:
     /alidata/init  为当用户用镜像创建系统后,当且仅当用户在第一次启动系统的时候,调用此目录下的脚本来初始化ftp及mysql的密码(随机密码)。

 


6、软件操作命令汇总
nginx:
/etc/init.d/nginx start/stop/restart/reload)
 
php-fpm:
/etc/init.d/php-fpm  start/stop/restart/...
mysql:
/etc/init.d/mysqld  start/stop/restart/...

ftp:
/etc/init.d/vsftpd  start/stop/restart/...
 
比如启动nginx:
/etc/init.d/nginx start

7、开机自启动
已将相关软件启动脚本加入/etc/rc.local开机自启动。
比如在/etc/rc.local中加入以下命令:
/etc/init.d/mysqld start
/etc/init.d/nginx start
/etc/init.d/php-fpm start
/etc/init.d/vsftpd start
8、环境变量
已将相关软件的环境变量加入到/etc/profile文件中。选择的镜像版本是nginx+php+mysql的镜像初始化系统的话,则会在/etc/profile文件中加入的信息如下:
export PATH=$PATH:/alidata/server/mysql/bin:/alidata/server/nginx/sbin:/alidata/server/php/sbin:/alidata/server/php/bin

备注:
       nginx的bin主目录为:/alidata/server/nginx/sbin
       php的bin主目录:/alidata/server/php/bin  /alidata/server/php/sbin 
        mysql的bin主目录:/alidata/server/mysql/bin

9、系统变更列表
安装此软件包,系统变更过的地方如下:
1、安装软件,系统安装过的一些依赖包如下:
  yum -y install gcc gcc-c++ gcc-g77 make libtool autoconf patch unzip automake libxml2 libxml2-devel ncurses ncurses-devel libtool-ltdl-devel libtool-ltdl libmcrypt libmcrypt-devel libpng libpng-devel libjpeg-devel openssl openssl-devel curl curl-devel libxml2 libxml2-devel ncurses ncurses-devel libtool-ltdl-devel libtool-ltdl autoconf automake libaio*
2、openssl版本升级为1.0.1h。
3、源码编译安装过相应的依赖包,/usr/local目录下:
      /usr/local/freetype.2.1.10
      /usr/local/libpng.1.2.50
      /usr/local/jpeg.6
4、安装软件的主目录:/alidata
5、环境变量设置:/etc/profile
6、开机自启动:/etc/rc.local
7、文件打开数:/etc/security/limits.conf
8、vsftpd以yum方式安装,/etc/vsftpd/目录相关配置文件的更改。

10、更多支持和帮助
更多使用帮助和支持请联系作者:qrj@jiagouyun.com

11、关于卸载
如何卸载镜像环境中安装的软件,可以参考如下命令完成卸载:
cd /root/sh-1.3.0-centos
./uninstall.sh

备注一:执行以上卸载,会清理镜像环境的/alidata目录,请卸载前自行备份好相应数据。
备注二:如果/root/sh-1.3.0-centos被误删,则也可以解压/root/sh-1.3.0-centos.zip,可以参考以下命令:
cd
unzip sh-1.3.0-centos.zip
chmod 777 -R sh-1.3.0-centos
cd sh-1.3.0-centos
./uninstall.sh

12、附录教程一:部署网站
1、在使用镜像安装系统后,在/alidata/server/nginx/conf/vhosts目录下,我们可以看到一个默认的配置文件default.conf。关于如何配置网站,我们可以参考该文件中的内容(#号后面为注释说明):
server {
           listen       80 default;#默认监听80端口
           server_name  _;#默认ip/域名都可访问
 index index.html index.htm index.php;#定义索引文件的名称
 root /alidata/www/default; #定义服务器的默认网站根目录位置
 location ~ .*\.(php|php5)?$
 {#php脚本请求全部转发到FastCGI处理。
  fastcgi_pass  127.0.0.1:9000;
  fastcgi_index index.php;
  include fastcgi.conf;
 }
 location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
 {
  expires 30d;
 }
 location ~ .*\.(js|css)?$
 {
  expires 1h;
 }
 access_log  /alidata/log/nginx/access/default.log;
}
2、根据以上默认配置,我们进入网站根目录/alidata/www/default/可以看到index.html 、info.php这两个文件。我们直接在浏览器中输入“http://*.*.*.* ”(*.*.*.*为我们服务器的公网ip),就默认可以访问到index.html中的内容。

nginx欢迎界面

我们也可以输入“http://*.*.*.*/info.php”显示访问info.php运行后的结果。当然你输入一个不存在的文件访问,就会出现404 Not Found的错误。

php配置参数
 
3、假如我们有个demo.jiagouyun.com的域名的网站需要部署在云主机上。以下我们以部署phpwind及phpmyadmin为例,来详细介绍一下网站的部署:
     3.1、首先,我们需要备案此域名。如果没备案域名,此域名会被运营商拉入黑名单不能使用的哦。针对备案问题,您可以在阿里云以工单的形式反馈,在这里不再过多阐述。
             如果您的域名已成功备案,您需要把此域名解析的ip地址设置为云主机的公网ip。demo.jiagouyun.com是驻云公司的二级域名,由于此域名是在万网购买注册的,所以我们登陆到www.net.cn的管理后台,在域名管理中,我们增加一个demo.jiagouyun.com的二级域名,记录值即我们域名解析的ip,这里填写我们云主机的公网ip。

     3.2、然后,我们下载phpwind及phpmyadmin的源码部署我们的站点。以下oss的下载链接由阿里云linux一键安装包提供,大家可以放心使用。具体安装部署命令如下:
      以下为部署phpwind:
cd
wget http://oss.aliyuncs.com/aliyunecs/onekey/phpwind_GBK_8.7.zip
rm -rf phpwind_GBK_8.7
unzip phpwind_GBK_8.7.zip
mkdir -p /alidata/www/phpwind
mv phpwind_GBK_8.7/upload/* /alidata/www/phpwind/
chmod -R 777 /alidata/www/phpwind/attachment
chmod -R 777 /alidata/www/phpwind/data
chmod -R 777 /alidata/www/phpwind/html
cd /alidata/www/phpwind/
find ./ -type f | xargs chmod 644
find ./ -type d | xargs chmod 755
chmod -R 777 attachment/ html/ data/

以下为部署phpmyadmin:
wget http://oss.aliyuncs.com/aliyunecs/onekey/phpMyAdmin-4.1.8-all-languages.zip
rm -rf phpMyAdmin-4.1.8-all-languages
unzip phpMyAdmin-4.1.8-all-languages.zip
mv phpMyAdmin-4.1.8-all-languages /alidata/www/phpwind/phpmyadmin
chown -R www:www /alidata/www/phpwind/

3.3、最后,我们需要配置nginx,并让nginx重新加载一下配置,即可完成我们网站的配置。我们可以在可以在/etc/nginx/conf.d目录下新建一个phpwind.conf文件(文件名必须以.conf结尾,phpwind为自取名称,可以为其它名称),并且加入以下内容:
server {
           listen       80;
           server_name  demo.jiagouyun.com;
 index index.html index.htm index.php;
 root /alidata/www/phpwind;
 location ~ .*\.(php|php5)?$
 {
  fastcgi_pass  127.0.0.1:9000;
  fastcgi_index index.php;
  include fastcgi.conf;
 }
 access_log  /alidata/log/nginx/access/phpwind.log;
}
        
3.4、最终我们用命令/etc/init.d/nginx reload 完成我们网站的配置。然后我们在浏览器中输入http://demo.jiagouyun.com即可看到我们部署的phpwind:
phpwind安装

然后我们也可以用http://demo.jiagouyun.com/phpmyadmin来访问我们部署的phpmyadmin,用户名和密码输入 /alidata/account.log中存储我们的mysql的用户名及密码:

mysql用户名及密码
 
输入正确的mysql用户名及密码后,然后我们就可以访问我们云主机上部署的mysql了:
mysql部署

13、附录教程二:将网站迁移至数据盘
用镜像生成系统后,网站的数据目录都默认在系统盘的/alidata/www目录下。如果您的应用数据量较大,系统盘默认的20G大小可能不够用。这需要我们将网站迁移至数据盘中。
1、首先分区并格式化我们的数据盘。如果已经格式化数据盘,此步可以不用做。
2、以《附录教程一:部署网站》为例,然后我们执行以下命令迁移phpwind至数据盘中:
    /etc/init.d/nginx stop        #首先停止nginx服务
    /etc/init.d/php5-fpm stop   #首先停止php服务
     cd  /                               #进入根目录下
     mount /dev/xvdb1  /mnt/ #将第一块数据盘挂载至mnt目录下,也可以根据您自己的需要,挂载至其他数据盘中。这里也可以尝试:mount /dev/xvdb1  /alidata/www直接把/alidata/www目录挂载在数据盘中,似乎更加方便。
     mkdir -p /mnt/www /mnt/log
     cp -a /alidata/www/phpwind /mnt/www/  #将数据迁移至数据盘中
3、vim /etc/nginx/conf.d/phpwind.conf
    将“root   /alidata/www/phpwind;”更改为“/mnt/www/phpwind;”
    将“access_log  /alidata/log/nginx/access/phpwind.log;”
    更改为“access_log  /mnt/log/phpwind.log;”
4、启动php、nginx完成迁移:
     /etc/init.d/php5-fpm start
    /etc/init.d/nginx start

14、附录教程三:将mysql迁移至数据盘中
镜像部署的mysql的安装目录及数据目录都存放在系统盘中,同样考虑到系统盘空间不够用的情况,后面如果我们部署的mysql数据量很大,这里就需要我们将我们的mysql迁移至数据盘中。mysql迁移至数据盘中,一般指将mysql的数据目录迁移至数据盘中。具体操作步骤可以参考如下:
1、首先格式化磁盘,并将数据盘挂载在mnt目录下(根据您自己的需求,也可以挂载在其他目录下)
     mkdir -p /mnt/data
2、用mysqldump命令导出您项目所有的数据,命令参考如下:
     mysqldump -p --all-databases > all.sql
3、停止mysql :
     /etc/init.d/mysqld stop
4、vim /etc/init.d/mysqld 将文件中“datadir=/alidata/server/mysql/data”中的目录地址更改为您迁移至数据盘中的目录地址,即“datadir=/mnt/data”。
5、然后用以下命令初始化一个全新的数据库环境:
/alidata/server/mysql/scripts/mysql_install_db --basedir=/alidata/server/mysql --datadir=/mnt/data  --user=mysql
     值得注意的是datadir为您mysql的数据目录。
6、启动mysql,然后将数据还原至新的数据盘中:
     /etc/init.d/mysqld start
     mysql <  all.sql
    /etc/init.d/mysqld restart

15、附录教程四:如何配置mysql远程连接
很多用户反馈,用镜像生成系统后,云主机本地能够连接mysql,为何远程连接不上mysql呢?这是因为默认安装的mysql,出于安全考虑,只能本地连接。如果您需要远程连接,这里就需要设置一下mysql的权限表。具体设置的步骤如下:
1、在您的云主机上连接进入mysql。
2、执行以下mysql命令:
     use mysql                #打开mysql数据库
#将host设置为%表示任何ip都能连接mysql,当然您也可以将host指定为某个ip
     update user set host='%' where user='root' and host='localhost';
     flush privileges;        #刷新权限表,使配置生效
     然后我们就能远程连接我们的mysql了。
3、如果您想关闭远程连接,恢复mysql的默认设置(只能本地连接),您可以通过以下步骤操作:
     use mysql                #打开mysql数据库
     #将host设置为localhost表示只能本地连接mysql
     update user set host='localhost' where user='root';
     flush privileges;        #刷新权限表,使配置生效
备注:您也可以添加一个用户名为yuancheng,密码为123456,权限为%(表示任意ip都能连接)的远程连接用户。命令参考如下:
     grant all on *.* to 'yuancheng'@'%' identified by '123456';
     flush privileges;