翼度科技»论坛 云主机 LINUX 查看内容

shell脚本-lnmp一键部署

11

主题

11

帖子

33

积分

新手上路

Rank: 1

积分
33
shell脚本-lnmp一键部署

创建文件lnmp.sh
  1. vim lnmp.sh
复制代码
  1. #!/bin/bash
  2. #描述:LNMP网站架构部署脚本
  3. cat <<EOF
  4. 欢迎使用LNMP架构服务搭建
  5. 请将安装包放入/opt目录下
  6. 1.安装nginx服务
  7. 2.安装mysql
  8. 3.安装php
  9. 4.一键安装LNMP架构
  10. EOF
  11. read -p "请输入你的选择:" choice
  12. function Nginx(){
  13. echo    -e "\033[34m 2.安装Nginx \033[0m"
  14. echo    "安装Nginx依赖包"
  15. nginx_gz=nginx-1.9.5.tar.gz
  16. nginx=nginx-1.9.5
  17. cd /opt
  18. yum install -y gcc gcc-c++ autoconf automake zlib zlib-devel openssl openssl-devel  pcre pcre-devel make automake   &>/dev/null
  19. echo    "创建Nginx运行用户"
  20. groupadd www
  21. useradd -g www www -s /sbin/nologin
  22. tar xf $nginx_gz
  23. cd $nginx
  24. ./configure --prefix=/usr/local/nginx --with-http_dav_module --with-http_stub_status_module --with-http_addition_module --with-http_sub_module --with-http_flv_module --with-http_mp4_module --with-pcre --with-http_ssl_module --with-http_gzip_static_module --user=www --group=www &>/dev/null
  25. if [ $? -eq 0 ];then
  26.     echo    "Nginx预编译完成,开始安装"
  27. else
  28.     echo    "Nginx预编译失败,请检查相关依赖包是否安装"
  29.     exit 4
  30. fi
  31. make && make install &>/dev/null
  32. # 添加系统服务
  33. cat > /etc/systemd/system/nginx.service <<EOF
  34. [Unit]
  35. Description=Nginx HTTP Server
  36. After=network.target
  37. [Service]
  38. ExecStart=/usr/local/nginx/sbin/nginx
  39. ExecReload=/usr/local/nginx/sbin/nginx -s reload
  40. ExecStop=/usr/local/nginx/sbin/nginx -s stop
  41. Restart=on-failure
  42. Type=forking
  43. [Install]
  44. WantedBy=multi-user.target
  45. EOF
  46. chmod  755  /usr/lib/systemd/system/nginx.service
  47. /usr/local/nginx/sbin/nginx
  48. netstat -anput | grep nginx &>/dev/null
  49. if [ $? -eq 0 ];then
  50.     echo    "Nginx启动成功"
  51. else
  52.     echo    "Nginx启动失败"
  53.     exit 5
  54. fi
  55. }
  56. function MySQL(){
  57. echo    -e "\033[35m 3.安装MySQL \033[0m"
  58. cd /opt
  59. boost_bz2=boost_1_59_0.tar.bz2
  60. mysql_gz=mysql-5.7.26.tar.gz
  61. mysql=mysql-5.7.26
  62. echo    "卸载原有MySQL及相关依赖"
  63. yum -y remove mysql* mariadb* &>/dev/null
  64. echo    "创建MySQL运行用户"
  65. groupadd mysql
  66. useradd -M -s /sbin/nologin -r -g mysql mysql
  67. mkdir -p /data/mysql/{data,log}
  68. chown -R mysql:mysql /data/mysql/
  69. echo    "安装MySQL依赖包"
  70. yum install -y cmake make gcc gcc-c++ bison ncurses ncurses-devel bzip2 &>/dev/null
  71. tar jxf $boost_bz2 -C /opt
  72. tar xf $mysql_gz
  73. cd $mysql
  74. cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/data/mysql/data -DSYSCONFDIR=/etc -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_MEMORY_STORAGE_ENGINE=1 -DWITH_READLINE=1 -DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock -DMYSQL_TCP_PORT=3306 -DENABLED_LOCAL_INFILE=1 -DWITH_PARTITION_STORAGE_ENGINE=1 -DEXTRA_CHARSETS=all -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DDOWNLOAD_BOOST=1 -DWITH_BOOST=/opt/boost_1_59_0 &>/dev/null
  75. if [ $? -eq 0 ];then
  76.     echo    "MySQL预编译完成,正在安装"
  77. else
  78.     echo    "MySQL预编译失败,请检查依赖包是否全部安装"
  79.     exit 6
  80. fi
  81. make && make install &>/dev/null
  82. chown -R mysql:mysql /usr/local/mysql/
  83. cat >>/etc/my.cnf<< eof
  84. [mysqld]
  85. basedir=/usr/local/mysql
  86. datadir=/data/mysql/data
  87. port=3306
  88. socket=/usr/local/mysql/mysql.sock
  89. symbolic-links=0
  90. character-set-server=utf8
  91. log-error=/data/mysql/log/mysqld.log
  92. pid-file=/usr/local/mysql/mysqld.pid
  93. eof
  94. cp support-files/mysql.server /etc/init.d/mysql.server
  95. chmod +x /etc/init.d/mysql.server
  96. /usr/local/mysql/bin/mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql/data
  97. /etc/init.d/mysql.server start
  98. netstat -anplt | grep mysql
  99. if [ $? -eq 0 ];then
  100.     echo    "MySQL启动成功"
  101. else
  102.     echo    "MySQL启动失败"
  103.     exit 7
  104. fi
  105. ln -s /usr/local/mysql/bin/* /usr/local/bin/
  106. }
  107. function Php(){
  108. echo    -e "\033[36m 4.安装PHP \033[0m"
  109. libmcrypt_gz=libmcrypt-2.5.8.tar.gz
  110. libmcrypt=libmcrypt-2.5.8
  111. php_gz=php-5.6.40.tar.gz
  112. php=php-5.6.40
  113. cd /opt
  114. echo    "安装PHP依赖包"
  115. yum -y install gcc autoconf  freetype gd libpng libpng-devel libjpeg libxml2 libxml2-devel zlib curl curl-devel freetype-devel libjpeg-devel bzip2 bzip2-devel openssl openssl-devel
  116. tar xf $libmcrypt_gz
  117. cd $libmcrypt
  118. ./configure --prefix=/usr/local/libmcrypt && make && make install &>/dev/null
  119. cd /opt
  120. tar xf $php_gz
  121. cd $php
  122. ./configure --prefix=/usr/local/php5.6 --with-mysql=mysqlnd --with-pdo-mysql=mysqlnd --with-mysqli=mysqlnd --enable-mbstring --with-curl --with-gd --enable-fpm --with-config-file-path --with-openssl --enable-fpm --enable-sockets  --enable-sysvshm --enable-mbstring --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml  --with-mhash  --with-mcrypt=/usr/local/libmcrypt --with-config-file-path=/usr/local/php5.6/etc --with-config-file-scan-dir=/etc/php.d --with-bz2  &>/dev/null
  123. make && make install &>/dev/null
  124. cp php.ini-production /usr/local/php5.6/php.ini
  125. cp /usr/local/php5.6/etc/php-fpm.conf.default /usr/local/php5.6/etc/php-fpm.conf
  126. cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
  127. chmod +x /etc/init.d/php-fpm
  128. /etc/init.d/php-fpm start
  129. netstat -anput | grep php-fpm
  130. if [ $? -eq 0 ];then
  131.     echo    "PHP启动成功"
  132. else
  133.     echo    "PHP启动失败"
  134.     exit 8
  135. fi
  136. }
  137. function conf(){
  138. echo    -e "\033[33m 5.LNMP架构配置 \033[0m"
  139. echo    "修改Nginx配置文件"
  140. rm -rf /usr/local/nginx/conf/nginx.conf
  141. cat >> /usr/local/nginx/conf/nginx.conf << eof
  142. user  www;
  143. worker_processes  2;
  144. error_log  logs/error.log;
  145. pid        logs/nginx.pid;
  146. events {
  147.         use epoll;
  148.     worker_connections  1024;
  149. }
  150. http {
  151.     include       mime.types;
  152.     default_type  application/octet-stream;
  153.     log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
  154.                       '$status $body_bytes_sent "$http_referer" '
  155.                       '"$http_user_agent" "$http_x_forwarded_for"';
  156.     access_log  logs/access.log  main;
  157.     sendfile        on;
  158.     keepalive_timeout  65;
  159.     #gzip  on;
  160.     ferver {
  161. m       listen       80;
  162.         server_name  localhost;
  163.         charset utf-8;
  164.         location / {
  165.             root   html;
  166.             index  index.php index.html index.htm;
  167.         }
  168.         location ~ \.php$ {
  169.             root  html;
  170.             fastcgi_pass 127.0.0.1:9000;
  171.             fastcgi_index index.php;
  172.             include fastcgi.conf;
  173.         }
  174.         error_page   500 502 503 504  /50x.html;
  175.         location = /50x.html {
  176.             root   html;
  177.         }
  178.     }
  179. }
  180. eof
  181. cat >> /usr/local/nginx/html/index.php << eof
  182. <?php
  183.         phpinfo();
  184. ?>
  185. eof
  186. cat >> /usr/local/nginx/html/mysql.php << eof
  187. <?php
  188. $link=mysql_connect('127.0.0.1','lnmp','123456');
  189. if ($link)echo "connection success......";
  190. mysql_close();
  191. ?>
  192. eof
  193. echo    "在MySQL中创建测试用户"
  194. mysql -uroot -e "grant all on *.* to 'lnmp'@'%' identified by '123456';"
  195. mysql -uroot -e "flush privileges;"
  196. echo    "重启服务(NML)"
  197. /usr/local/nginx/sbin/nginx -s reload
  198. /etc/init.d/mysql.server restart
  199. /etc/init.d/php-fpm restart
  200. cd /opt
  201. }
  202. #########################调用函数#####################
  203. case $choice in
  204.         1)
  205.                 Nginx
  206.                 ;;
  207.         2)
  208.                 MySQL
  209.                 ;;
  210.         3)
  211.                 Php
  212.                 ;;
  213.         4)
  214.                 Nginx
  215.                 sleep 2
  216.                 MySQL
  217.                 sleep 2
  218.                 Php
  219.                 sleep 2
  220.                 conf
  221.                 ;;
  222.         *)
  223.                 echo "请输入正确选项"
  224. esac
复制代码
启动lnmp.sh
  1. bash lnmp.sh
复制代码
查看网络状态
  1. [root@localhost init.d]# netstat -tunlp
  2. Active Internet connections (only servers)
  3. Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name   
  4. tcp        0      0 127.0.0.1:9000          0.0.0.0:*               LISTEN      1394/php-fpm: maste
  5. tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      924/nginx: master p
  6. tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      918/sshd            
  7. tcp6       0      0 :::3306                 :::*                    LISTEN      1356/mysqld         
  8. tcp6       0      0 :::22                   :::*                    LISTEN      918/sshd            
  9. udp        0      0 0.0.0.0:68              0.0.0.0:*                           718/dhclient        
  10. udp        0      0 127.0.0.1:323           0.0.0.0:*                           661/chronyd         
  11. udp6       0      0 ::1:323                 :::*                                661/chronyd   
复制代码
测试一下


来源:https://www.cnblogs.com/xuxuxuxuxu/p/17558015.html
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

举报 回复 使用道具