install.sh 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  1. #!/usr/bin/env bash
  2. #清理不需要的文件
  3. clean_files() {
  4. if [ -f .user.ini ]; then
  5. chattr -i .user.ini
  6. fi
  7. rm -rf .htaccess 404.html index.html .user.ini
  8. }
  9. #检查系统
  10. check_sys() {
  11. # shellcheck disable=SC2002
  12. if [[ -f /etc/redhat-release ]]; then
  13. release="centos"
  14. elif cat /etc/issue | grep -q -E -i "debian"; then
  15. release="debian"
  16. elif cat /etc/issue | grep -q -E -i "ubuntu"; then
  17. release="ubuntu"
  18. elif cat /etc/issue | grep -q -E -i "centos|red hat|redhat"; then
  19. release="centos"
  20. elif cat /proc/version | grep -q -E -i "debian"; then
  21. release="debian"
  22. elif cat /proc/version | grep -q -E -i "ubuntu"; then
  23. release="ubuntu"
  24. elif cat /proc/version | grep -q -E -i "centos|red hat|redhat"; then
  25. release="centos"
  26. fi
  27. echo "========= Checking for Software dependency | 检查依赖软件是否安装/运行 ========="
  28. if which redis-cli >/dev/null; then
  29. echo -e "\e[37;42m Redis Installed! | Redis 已安装!\e[0m"
  30. redis-cli ping
  31. else
  32. echo -e "\e[37;1;41m Redis did not installed! | redis 未安装!\e[0m"
  33. fi
  34. if which php >/dev/null; then
  35. echo -e "\e[37;42m PHP Installed! | PHP 已安装!\e[0m"
  36. php -v
  37. else
  38. echo -e "\e[37;1;41m PHP did not installed! | PHP 未安装!\e[0m"
  39. fi
  40. if which nginx >/dev/null || which httpd >/dev/null; then
  41. echo -e "\e[37;42m Nginx/Apache Installed! | Nginx 或 Apache 已安装!\e[0m"
  42. if which nginx >/dev/null; then
  43. nginx -v
  44. else
  45. httpd -v
  46. fi
  47. else
  48. echo -e "\e[37;1;41m Nginx/Apache did not installed! | Nginx 或 Apache 未安装!\e[0m"
  49. fi
  50. }
  51. #检查composer是否安装
  52. check_composer() {
  53. if [ ! -f "/usr/bin/composer" ]; then
  54. curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/bin --filename=composer
  55. else
  56. if [[ $(composer -n --version --no-ansi | cut -d" " -f3) < 2.2.0 ]]; then
  57. composer self-update
  58. fi
  59. fi
  60. }
  61. # 设置权限
  62. set_permissions() {
  63. if [ ! -d "/home/www" ]; then
  64. mkdir -p /home/www
  65. chown www:www /home/www
  66. fi
  67. chown -R www:www ./
  68. chmod -R 755 ./
  69. chmod -R 777 storage/
  70. }
  71. set_schedule() {
  72. cmd="php $PWD/artisan schedule:run >> /dev/null 2>&1"
  73. cronjob="* * * * * $cmd"
  74. (
  75. crontab -u www -l | grep -v -F "$cmd"
  76. echo "$cronjob"
  77. ) | crontab -u www -
  78. }
  79. set_horizon() {
  80. if ! command -v supervisorctl &>/dev/null; then
  81. if [[ "${release}" == "centos" ]]; then
  82. yum install -y supervisor
  83. else
  84. apt-get install -y supervisor
  85. fi
  86. fi
  87. if [ ! -f /etc/supervisor/conf.d/horizon.conf ]; then
  88. echo "
  89. [program:horizon]
  90. process_name=%(program_name)s
  91. command=php $PWD/artisan horizon
  92. autostart=true
  93. autorestart=true
  94. user=www
  95. redirect_stderr=true
  96. stdout_logfile=$PWD/storage/logs/horizon.log
  97. stopwaitsecs=3600" >>/etc/supervisor/conf.d/horizon.conf
  98. supervisorctl reread
  99. supervisorctl update
  100. supervisorctl start horizon
  101. fi
  102. }
  103. clean_files
  104. check_sys
  105. check_composer
  106. composer install
  107. php artisan panel:install
  108. set_permissions
  109. set_schedule
  110. set_horizon