CentOS系統初始安裝MySQL、PHP和Nginx的指令碼

來源:互聯網
上載者:User
 代碼如下 複製代碼
 #!/bin/sh
 # by Jet Ma from www.javatang.com
 # version v0.2 build20121011-1516
 # Install Nginx, MySQL and PHP
 # CentOS 5.5 64bit
 
 # ----------- 配置資訊 -----------
 # MySQL安裝目錄
 MYSQL_HOME='/usr/local/mysql'
 # MySQL root帳號的密碼
 MYSQL_ROOT_PASSWD='root'
 # PHP安裝目錄
 PHP_HOME='/usr/local/php'
 # Nginx安裝目錄
 NGINX_HOME='/usr/local/nginx'
 
 # ----------- 檢測是否是root帳號 -----------
 if [ $(id -u) != "0" ]; then
     echo -e "e[1;31m This scripts MUST under root user or group!! e[0m"
     echo
     exit 2
 fi
 
 # 首先開啟帳號許可權檔案
 chattr -i /etc/passwd
 chattr -i /etc/shadow
 chattr -i /etc/group
 chattr -i /etc/gshadow
 # 關閉防火牆
 /etc/init.d/iptables stop
 
 # ----------- 安裝需要的基礎依賴庫 -----------
 echo -e "e[1;36m 安裝需要的基礎依賴庫 ... e[0m"
 LANG=C
 yum -y install gcc gcc-c++ autoconf libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel krb5 krb5-devel libidn libidn-devel openssl openssl-devel openldap openldap-devel nss_ldap openldap-clients openldap-servers
 
 # ----------- 安裝MySQL -----------
 echo -e "e[1;36m 安裝MySQL ... e[0m"
 cd ~
 mkdir downloads
 cd downloads
 wget -c http://dev.mysql.com/get/Downloads/MySQL-5.1/mysql-5.1.65.tar.gz/from/http://cdn.mysql.com/
 tar xzvf mysql-5.1.65.tar.gz
 cd mysql-5.1.65
 ./configure --prefix=$MYSQL_HOME --with-charset=utf8 --with-extra-charsets=all --without-debug --enable-thread-safe-client --enable-assembler --with-client-ldflags=-all-static --with-mysqld-ldflags=-all-static --with-big-tables --with-readline --with-ssl --with-embedded-server --enable-local-infile --without-isam --with-plugins=innobase
 make && make install
 # 設定啟動的使用者
 groupadd mysql
 useradd -s /sbin/nologin -M -g mysql mysql
 cd $MYSQL_HOME
 # 設定安裝目錄許可權給mysql使用者和使用者組
 chown -R mysql .
 chgrp -R mysql .
 # 安裝資料庫
 bin/mysql_install_db --user=mysql
 chown -R root .
 chown -R mysql var
 cp share/mysql/my-medium.cnf /etc/my.cnf
 sed -i 's/skip-locking/skip-external-locking/g' /etc/my.cnf
 cp share/mysql/mysql.server /etc/init.d/mysql
 chmod +x /etc/init.d/mysql
  /etc/init.d/mysql start
  bin/mysqladmin -uroot password $MYSQL_ROOT_PASSWD
  history -c
  /etc/init.d/mysql restart
 
 # ----------- 安裝PHP與PHP-FPM -----------
 echo -e "e[1;36m 安裝PHP與PHP-FPM ... e[0m"
 # 建立帳號
 groupadd www
 useradd -s /sbin/nologin -M -g www www
 # 下載libmcrypt,有兩個檔案
 cd ~/downloads
 wget -c "http://downloads.sourceforge.net/project/mcrypt/Libmcrypt/2.5.8/libmcrypt-2.5.8.tar.gz?ts=1347243907&use_mirror=ncu"
 wget -c "http://downloads.sourceforge.net/project/mcrypt/MCrypt/2.6.8/mcrypt-2.6.8.tar.gz?r=&ts=1347244005&use_mirror=nchc"
 # 下載libmhash
 wget -c "http://downloads.sourceforge.net/project/mhash/mhash/0.9.9.9/mhash-0.9.9.9.tar.bz2?ts=1347245105&use_mirror=ncu"
 # 首先安裝libmcrypt
 tar zxvf libmcrypt-2.5.8.tar.gz
 cd libmcrypt-2.5.8
 ./configure
 make && make install
 ldconfig
 cd libltdl/
 ./configure --enable-ltdl-install
 make && make install
 # 接下來安裝mhash,因為mcrypt需要mhash的依賴
 cd ../../
 tar jxvf mhash-0.9.9.9.tar.bz2
 cd mhash-0.9.9.9
 ./configure
 make && make install
 # 最後安裝mcrypt
 cd ..
 tar xzxvf mcrypt-2.6.8.tar.gz
 cd mcrypt-2.6.8
 # 將mhash加入ld library路徑中
 export LD_LIBRARY_PATH=/usr/local/lib
 ldconfig
 ./configure
 make && make install
 cd ..
 # 下載PHP和對應版本的PHP-FPM
 wget -c http://www.php.net/get/php-5.2.17.tar.gz/from/this/mirror
 # 在http://php-fpm.org/downloads目錄下選擇與安裝php版本一致的PHP-FPM,否則會引起相容性問題
 wget -c http://php-fpm.org/downloads/php-5.2.17-fpm-0.5.14.diff.gz
 # 如果是5.2.x的版本的話,還需要下載PHP Hash衝突的補丁,5.3+不需要下載了
 wget -c ps://github.com/laruence/laruence.github.com/raw/master/php-5.2-max-input-vars/php-5.2.17-max-input-vars.patch">https://github.com/laruence/laruence.github.com/raw/master/php-5.2-max-input-vars/php-5.2.17-max-input-vars.patch
 tar xzvf php-5.2.17.tar.gz
 # 將php-fpm以補丁的形式寫入到php源碼中
 gzip -cd php-5.2.17-fpm-0.5.14.diff.gz | patch -d php-5.2.17 -p1
 # 寫入hash衝突補丁,php 5.3+不需要
 patch -d php-5.2.17 -p1 < php-5.2.17-max-input-vars.patch
 cd php-5.2.17
 # 這裡將php安裝到/usr/local/php目錄下面,引用的mysql安裝目錄為/usr/local/mysql,這裡需要根據實際情況進行修改
 ./configure --prefix=$PHP_HOME --with-config-file-path=$PHP_HOME/etc --with-mysql=$MYSQL_HOME --with-mysqli=$MYSQL_HOME/bin/mysql_config --with-iconv-dir=/usr/local --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml --disable-rpath --enable-discard-path --enable-safe-mode --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization --with-curl --with-curlwrappers --enable-mbregex --enable-fastcgi --enable-fpm --enable-force-cgi-redirect --enable-mbstring --with-mcrypt --with-gd --enable-gd-native-ttf --with-openssl --with-mhash --enable-pcntl --enable-sockets --with-ldap --with-ldap-sasl --with-xmlrpc --enable-zip --enable-soap
 make ZEND_EXTRA_LIBS='-liconv'
 make install
 cp php.ini-dist /usr/local/php/etc/php.ini
 cd ..
 # 編譯安裝PHP的擴充模組
 cd ~/downloads
 # 安裝<a href="http://pecl.php.net/package/PDO_MYSQL" target="_blank">pdo_mysql</a>
 wget -c http://pecl.php.net/get/PDO_MYSQL-1.0.2.tgz
 tar zxvf PDO_MYSQL-1.0.2.tgz
 cd PDO_MYSQL-1.0.2
 $PHP_HOME/bin/phpize
 ./configure --with-php-config=$PHP_HOME/bin/php-config --with-pdo-mysql=$MYSQL_HOME
 make && make install
 cd ..
 # 安裝eAccelerator
 wget -c https://github.com/downloads/eaccelerator/eaccelerator/eaccelerator-0.9.6.1.tar.bz2
 tar jxvf eaccelerator-0.9.6.1.tar.bz2
 cd eaccelerator-0.9.6.1
 $PHP_HOME/bin/phpize
 ./configure --enable-shared --with-php-config=$PHP_HOME/bin/php-config
 make && make install
 cd ..
 # 修改php.ini檔案來啟用安裝的第三方模組
 sed -i -e "s:^extension_dir.*:extension_dir="$PHP_HOME/lib/php/extensions/no-debug-non-zts-20060613/":g" $PHP_HOME/etc/php.ini
 # 增加擴充
 cat >> $PHP_HOME/etc/php.ini <<EOF
 extension=eaccelerator.so
 extension=pdo_mysql.so
 [eaccelerator]
 eaccelerator.shm_size="32"
 eaccelerator.cache_dir="/tmp/eaccelerator"
 eaccelerator.enable="1"
 eaccelerator.optimizer="1"
 eaccelerator.check_mtime="1"
 eaccelerator.debug="0"
 eaccelerator.filter=""
 eaccelerator.shm_ttl="0"
 eaccelerator.shm_prune_period="0"
 eaccelerator.shm_only="0"
 EOF
 
 # 建立eaccelerator的臨時目錄
 mkdir /tmp/eaccelerator
 chmod 777 /tmp/eaccelerator
 
 # ----------- 安裝Nginx -----------
 echo -e "e[1;36m 安裝Nginx ... e[0m"
 # 下載安裝最新的pcre庫
 cd ~/downloads
 wget -c ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.31.tar.gz
 tar xzvf pcre-8.31.tar.gz
 cd pcre-8.31
 ./configure
 make && make install
 cd ..
 # 安裝TCMalloc提升Nginx效能
 # 如果是64位系統的話首先需要安裝libunwind庫,32位系統不需要安裝。
 wget -c http://download.savannah.gnu.org/releases/libunwind/libunwind-1.0.1.tar.gz
 tar xzvf libunwind-1.0.1.tar.gz
 cd libunwind-1.0.1
 CFLAGS=-fPIC ./configure
 make CFLAGS=-fPIC
 make CFLAGS=-fPIC install
 cd ..
 # 安裝google-perftools
 wget -c https://gperftools.googlecode.com/files/gperftools-2.0.tar.gz
 tar xzvf gperftools-2.0.tar.gz
 cd gperftools-2.0
 ./configure
 make && make install
 echo "/usr/local/lib" > /etc/ld.so.conf.d/usr_local_lib.conf
 ldconfig
 cd ..
 # 安裝Nginx
 wget -c http://nginx.org/download/nginx-1.2.3.tar.gz
 tar xzvf nginx-1.2.3.tar.gz
 cd nginx-1.2.3
 ./configure --prefix=$NGINX_HOME --user=www --group=www --with-http_stub_status_module --with-http_ssl_module --with-google_perftools_module
 make && make install
 # 64位增加庫的連結
 ln -s /lib64/libpcre.so.0.0.1 /lib64/libpcre.so.1
 ln -s /usr/local/lib/libprofiler.so /lib64/libprofiler.so.0
 ln -s /usr/local/lib/libunwind.so /lib64/libunwind.so.8
 # 啟用TCMalloc
 mkdir /tmp/tcmalloc
 chmod 777 /tmp/tcmalloc
 # 修改nginx.conf設定檔,在pid這行下面添加配置如下資訊
 sed -i -e 's:^#pid.*:&ngoogle_perftools_profiles /tmp/tcmalloc;:g' $NGINX_HOME/conf/nginx.conf
 # 增加日誌自動切割指令碼
 echo '#!/bin/bash' > ${NGINX_HOME}/sbin/cutlogs.sh
 echo "mkdir -p ${NGINX_HOME}/logs/$(date +%Y)/$(date +%m)
 mv ${NGINX_HOME}/logs/access.log ${NGINX_HOME}/logs/$(date +%Y)/$(date +%m)/access.$(date +%Y%m%d).log
 mv ${NGINX_HOME}/logs/error.log ${NGINX_HOME}/logs/$(date +%Y)/$(date +%m)/error.$(date +%Y%m%d).log
 
 kill -USR1 `cat ${NGINX_HOME}/logs/nginx.pid`" >> ${NGINX_HOME}/sbin/cutlogs.sh
 # 增加執行許可權並添加到任務中
 chmod +x ${NGINX_HOME}/sbin/cutlogs.sh
 crontab -l > tmpcrontab
 echo "00 00 * * * /bin/bash ${NGINX_HOME}/sbin/cutlogs.sh" >> tmpcrontab
 crontab tmpcrontab
 rm -f tmpcrontab
 
 # 最後關閉帳號許可權檔案
 chattr +i /etc/passwd
 chattr +i /etc/shadow
 chattr +i /etc/group
 chattr +i /etc/gshadow
 # 開啟防火牆
 /etc/init.d/iptables start
 
 # ----------- 設定為開機啟動 -----------
 echo -e "e[1;36m 將MySQL、PHP-FPM和Nginx設定為開機啟動 ... e[0m"
 cat >> /etc/rc.local <<EOF
 /etc/init.d/mysql start
 ulimit -SHn 65535
 $PHP_HOME/sbin/php-fpm start
 $NGINX_HOME/sbin/nginx
 EOF
 
 
 cat << EOF
 +--------------------------------------------------------------+
     已經安裝完成MySQL、PHP和Nginx
     請使用 $PHP_HOME/bin/php -version 查看php是否成功運行並包含擴充
     請使用 $NGINX_HOME/sbin/nginx -t 查看nginx配置資訊是否成功
     最後還需要對mysql、php-fpm和nginx設定檔進行最佳化處理!
 +--------------------------------------------------------------+
 EOF

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.