Android pad中有关nginx,mysql,php的集成问题汇总

1. 系统要求需要在一个android pad中集成nginx,mysql,php,sshd,因为芯片方案为广州某厂提供,故他们愿意帮助我们,由他们提供集成好后的rom.

2. 第一版rom拿到后尝试启动sshd 正常,但是nginx发生问题,找不到errors.log和access.log,于是手动创建,发现不可写,使用mount后发现/和/system为ro,于是重新挂载为可读写

mount -o remount -o rw /(/system)

nginx启动后测试正常,但是无法执行phpinfo,于是启动php-fpm,正常.

3. mysql尝试启动后发现没有安装,于是mysql_install_db --user=root,然后发现不知道这样的密码,后来发现可以

mysqladmin -u root password '1234'

,但是当时没有想到,于是

mysqld_safe --user=root --skip_grant_table &

正常.

4. 至此一切经测试无误,接下来既是自启动问题,android启动在/init.rc中,于是vi进入在末尾添加 

service csetup /var/setup.sh

             class main

             user root

             group root

              oneshot

5. 这时需要编写setup.sh,按照顺序依次启动即可,但是发现每次pad重启后/和/system均挂载为ro,所以脚本中需要先remount

#!/system/bin/sh

mount -o remount -o rw /

mount -o remount -o rw /system

/bin/sshd

/bin/php-fpm

/bin/nginx

mysqld_safe --user=root --skip_grant_table &

但是此时发现mysql偶尔会不启动,于是将其拆分至另一脚本mysql-setup.sh,问题解决.

6. 此时发现需要创建2个文件,修改3个文件,添加4个软链(/bin中),所以决定使用shell书写一个脚本去解决问题,否则批量出货后时间成本太高,所以尝试0基础书写- -!

#!/system/bin/sh

#重新挂载/和/system为可读写

mount -o remount -o rw /

mount -o remount -o rw /system

#添加dns

touch /etc/resole.conf

echo 'nameserver 119.29.29.29' >> /etc/resovl.conf

echo 'nameserver 114.114.114.114' >> /etc/resovl.conf

chmod 644 /etc/resovl.conf

#添加软链到/bin

ln /share/lijin/system_sec/sbin/sshd /bin/sshd

ln /share/lijin/system_sec/sbin/nginx /bin/nginx

ln /share/lijin/system_sec/sbin/php-fpm /bin/php-fpm

ln /share/lijin/system_sec/share/mysql/mysqld_safe /bin/mysqld_safe

#初始化mysql

/share/lijin/system_sec/share/mysql/mysql_install_db --user=root

#创建启动脚本文件

touch /var/setup.sh

touch /var/mysql-setup.sh

#改变文件权限

chmod +x /var/setup.sh

chmod +x /var/mysql-setup.sh

#将内容写入启动脚本

#setup.sh

echo '#!/system/bin/sh' >> /var/setup.sh

echo '#启动脚本Edit by Christ!' >> /var/setup.sh

echo '/bin/sshd' >> /var/setup.sh

echo '/bin/php-fpm' >> /var/setup.sh

echo '/bin/nginx' >> /var/setup.sh

echo '/var/mysql-setup.sh' >> /var/setup.sh

#mysql-setup.sh

echo '#!/system/bin/sh' >> /var/mysql-setup.sh

echo 'mysqld_safe --user=root --skip_grant_table &' >> /var/mysql-setup.sh

#在/init.rc中添加启动项

echo '#nmp启动脚本Edit by Christ!' >> /init.rc

echo 'service csetup /var/setup.sh'  >> /init.rc

echo '\tclass main' >> /init.rc

echo '\tuser root' >> /init.rc

echo '\tgroup root' >> /init.rc

echo '\toneshot' >> /init.rc

#重启设备

reboot

7. 因为这样写虽然明了但是并不给用户看,于是做了简化

#!/system/bin/sh

#重新挂载/和/system为可读写

mount -o remount -o rw /

mount -o remount -o rw /system

#添加dns

echo 'nameserver 119.29.29.29\nnameserver 114.114.114.114' >> /etc/resovl.conf

chmod 644 /etc/resovl.conf

#添加软链到/bin

ln /share/lijin/system_sec/sbin/sshd /bin/sshd

ln /share/lijin/system_sec/sbin/nginx /bin/nginx

ln /share/lijin/system_sec/sbin/php-fpm /bin/php-fpm

ln /share/lijin/system_sec/share/mysql/mysqld_safe /bin/mysqld_safe

#初始化mysql

/share/lijin/system_sec/share/mysql/mysql_install_db --user=root

#创建启动脚本文件 

echo '#!/system/bin/sh\nmysqld_safe --user=root --skip_grant_table &' >> /var/mysql-setup.sh

echo '#!/system/bin/sh\n/bin/sshd\n/bin/php-fpm\n/bin/nginx\n/var/mysql-setup.sh' >> /var/setup.sh

#改变权限

chmod +x /var/*.sh

#添加启动项

echo '#nmp启动脚本Edit by Christ!\nservice csetup /var/setup.sh\n\tclass main\n\tuser root\n\tgroup root\n\toneshot' >> /init.rc

#重启

reboot

至此完成.

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容