LEMP平台全编译搭建
1.安装nginx1.13
1.1解决依赖关系
编译安装nginx需要事先需要安装开发包组"Development Tools"和 "Development Libraries"。同时,还需要专门安装pcre-devel包:
[root@localhost ~]# yum groupinstall "Development tools" "Compatibility libraries" -y
[root@localhost ~]# yum install pcre-devel -y
1.2 添加用户
[root@localhost ~]# groupadd -r nginx
[root@localhost ~]# useradd -r -g nginx nginx
1.3下载nginx源码包
[root@localhost src]# wget http://nginx.org/download/nginx-1.13.1.tar.gz [root@localhost src]# tar xf nginx-1.13.1.tar.gz
1.4编译安装
[root@localhost src]# cd nginx-1.13.1 [root@localhost nginx-1.13.1]#./configure \ --prefix=/usr \ --sbin-path=/usr/sbin/nginx \ --conf-path=/etc/nginx/nginx.conf \ --error-log-path=/var/log/nginx/error.log \ --http-log-path=/var/log/nginx/access.log \ --pid-path=/var/run/nginx/nginx.pid \ --lock-path=/var/lock/nginx.lock \ --user=nginx \ --group=nginx \ --with-http_ssl_module \ --with-http_flv_module \ --with-http_stub_status_module \ --with-http_gzip_static_module \ --http-client-body-temp-path=/var/tmp/nginx/client/ \ --http-proxy-temp-path=/var/tmp/nginx/proxy/ \ --http-fastcgi-temp-path=/var/tmp/nginx/fcgi/ \ --http-uwsgi-temp-path=/var/tmp/nginx/uwsgi \ --http-scgi-temp-path=/var/tmp/nginx/scgi \ --with-pcre
[root@localhost nginx-1.13.1]# make && make install
1.5提供sysV脚本
[root@localhost nginx-1.13.1]# vim /etc/rc.d/init.d/nginx [root@localhost nginx-1.13.1]# cat /etc/rc.d/init.d/nginx #!/bin/sh # # nginx - this script starts and stops the nginx daemon # # chkconfig: - 85 15 # description: NGINX is an HTTP(S) server, HTTP(S) reverse \ # proxy and IMAP/POP3 proxy server # processname: nginx # config: /etc/nginx/nginx.conf # config: /etc/sysconfig/nginx # pidfile: /var/run/nginx.pid # Source function library. . /etc/rc.d/init.d/functions # Source networking configuration. . /etc/sysconfig/network # Check that networking is up. [ "$NETWORKING" = "no" ] && exit 0 nginx="/usr/sbin/nginx" prog=$(basename $nginx) NGINX_CONF_FILE="/etc/nginx/nginx.conf" [ -f /etc/sysconfig/nginx ] && . /etc/sysconfig/nginx lockfile=/var/lock/subsys/nginx make_dirs() { # make required directories user=`$nginx -V 2>&1 | grep "configure arguments:.*--user=" | sed 's/[^*]*--user=\([^ ]*\).*/\1/g' -` if [ -n "$user" ]; then if [ -z "`grep $user /etc/passwd`" ]; then useradd -M -s /bin/nologin $user fi options=`$nginx -V 2>&1 | grep 'configure arguments:'` for opt in $options; do if [ `echo $opt | grep '.*-temp-path'` ]; then value=`echo $opt | cut -d "=" -f 2` if [ ! -d "$value" ]; then # echo "creating" $value mkdir -p $value && chown -R $user $value fi fi done fi } start() { [ -x $nginx ] || exit 5 [ -f $NGINX_CONF_FILE ] || exit 6 make_dirs echo -n $"Starting $prog: " daemon $nginx -c $NGINX_CONF_FILE retval=$? echo [ $retval -eq 0 ] && touch $lockfile return $retval } stop() { echo -n $"Stopping $prog: " killproc $prog -QUIT retval=$? echo [ $retval -eq 0 ] && rm -f $lockfile return $retval } restart() { configtest || return $? stop sleep 1 start } reload() { configtest || return $? echo -n $"Reloading $prog: " killproc $nginx -HUP RETVAL=$? echo } force_reload() { restart } configtest() { $nginx -t -c $NGINX_CONF_FILE } rh_status() { status $prog } rh_status_q() { rh_status >/dev/null 2>&1 } case "$1" in start) rh_status_q && exit 0 $1 ;; stop) rh_status_q || exit 0 $1 ;; restart|configtest) $1 ;; reload) rh_status_q || exit 7 $1 ;; force-reload) force_reload ;; status) rh_status ;; condrestart|try-restart) rh_status_q || exit 0 ;; *) echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload|configtest}" exit 2 esac
1.6 开机自启
[root@localhost nginx-1.13.1]# chmod +x /etc/rc.d/init.d/nginx [root@localhost nginx-1.13.1]# chkconfig --add nginx [root@localhost nginx-1.13.1]# chkconfig nginx on
1.7启动
[root@localhost nginx-1.13.1]# service nginx start #注意:启动前需要查看80端口是不是被httpd占用 Starting nginx: [ OK ]
1.8测试nginx
2.安装mariadb
2.1创建lvm存放数据
[root@localhost src]# fdisk /dev/sdb Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel Building a new DOS disklabel with disk identifier 0xc78823e1. Changes will remain in memory only, until you decide to write them. After that, of course, the previous content won't be recoverable. Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite) WARNING: DOS-compatible mode is deprecated. It's strongly recommended to switch off the mode (command 'c') and change display units to sectors (command 'u'). Command (m for help): n Command action e extended p primary partition (1-4) p Partition number (1-4): 1 First cylinder (1-1305, default 1): 1 Last cylinder, +cylinders or +size{K,M,G} (1-1305, default 1305): +2G Command (m for help): t Selected partition 1 Hex code (type L to list codes): 8e Changed system type of partition 1 to 8e (Linux LVM) Command (m for help): p Disk /dev/sdb: 10.7 GB, 10737418240 bytes 255 heads, 63 sectors/track, 1305 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0xc78823e1 Device Boot Start End Blocks Id System /dev/sdb1 1 262 2104483+ 8e Linux LVM Command (m for help): w The partition table has been altered! Calling ioctl() to re-read partition table. Syncing disks. [root@localhost src]# pvcreate /dev/sdb1 Writing physical volume data to disk "/dev/sdb1" Physical volume "/dev/sdb1" successfully created [root@localhost src]# vgcreate vg_mysql /dev/sdb1 Volume group "vg_mysql" successfully created [root@localhost src]# lvcreate -L 1G -n lv_mysql vg_mysql Logical volume "lv_mysql" created [root@localhost src]# mke2fs -t ext3 /dev/vg vga_arbiter vg_mysql/ [root@localhost src]# mke2fs -t ext3 /dev/vg vga_arbiter vg_mysql/ [root@localhost src]# mke2fs -t ext3 /dev/vg_mysql/lv_mysql mke2fs 1.41.12 (17-May-2010) Filesystem label= OS type: Linux Block size=4096 (log=2) Fragment size=4096 (log=2) Stride=0 blocks, Stripe width=0 blocks 65536 inodes, 262144 blocks 13107 blocks (5.00%) reserved for the super user First data block=0 Maximum filesystem blocks=268435456 8 block groups 32768 blocks per group, 32768 fragments per group 8192 inodes per group Superblock backups stored on blocks: 32768, 98304, 163840, 229376 Writing inode tables: done Creating journal (8192 blocks): done Writing superblocks and filesystem accounting information: done This filesystem will be automatically checked every 31 mounts or 180 days, whichever comes first. Use tune2fs -c or -i to override. [root@localhost src]# mkdir /mydata [root@localhost src]# mount /dev/vg_mysql/lv_mysql /mydata/ [root@localhost src]# tail -n 1 /etc/mtab >> /etc/fstab [root@localhost src]# cat /etc/fstab # # /etc/fstab # Created by anaconda on Mon Jan 23 14:39:48 2017 # # Accessible filesystems, by reference, are maintained under '/dev/disk' # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info # /dev/mapper/VolGroup-lv_root / ext4 defaults 1 1 UUID=5c3d4278-fa8d-4626-9546-67c0c26831b5 /boot ext4 defaults 1 2 /dev/mapper/VolGroup-lv_swap swap swap defaults 0 0 tmpfs /dev/shm tmpfs defaults 0 0 devpts /dev/pts devpts gid=5,mode=620 0 0 sysfs /sys sysfs defaults 0 0 proc /proc proc defaults 0 0 /dev/sr0 /mnt/cdrom iso9660 ro 0 0 /dev/mapper/vg_mysql-lv_mysql /mydata ext3 rw 0 0 [root@localhost src]# chown -R mysql.mysql /mydata/
2.2创建mysql用户
root@localhost src]# groupadd -r mysql [root@localhost src]# useradd -r -g mysql mysql -s /sbin/nologin -M -d /mydata/data [root@localhost src]# mkdir /mydata/data
2.3下载安装mariadb
[root@localhost src]# wget https://downloads.mariadb.org/interstitial/mariadb-10.2.6/source/mariadb-10.2.6.tar.gz/from/http%3A//mirrors.neusoft.edu.cn/mariadb/ [root@localhost src]# tar xf mariadb-10.2.6 [root@localhost src]# cd mariadb-10.2.6 [root@localhost yum.repos.d]# yum update cmake [root@localhost mariadb-10.2.6]# cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/data/mydata -DSYSCONFDIR=/etc -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_ARCHIVE_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DWITH_READLINE=1 -DWITH_SSL=system -DWITH_ZLIB=system -DWITH_LIBWRAP=0 -DMYSQL_UNIX_ADDR=/tmp/mysql.sock -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci [root@localhost mariadb-10.2.6]# make && make install
2.4初始化数据库
[root@localhost ~]# cd /usr/local/mysql/
[root@localhost mysql]# scripts/mysql_install_db --user=mysql --datadir=/mydata/data
2.5设置配置文件
[root@localhost mysql]# vim /etc/my.cnf [root@localhost mysql]# cat /etc/my.cnf [mysqld] port = 3306 socket = /tmp/mysql.sock skip-external-locking key_buffer_size = 256M max_allowed_packet = 1M table_open_cache = 256 sort_buffer_size = 1M read_buffer_size = 1M read_rnd_buffer_size = 4M myisam_sort_buffer_size = 64M thread_cache_size = 8 query_cache_size= 16M # Try number of CPU's*2 for thread_concurrency thread_concurrency = 4 datadir=/mydata/data
2.6设置启动脚本
[root@localhost mysql]# cp support-files/mysql.server /etc/rc.d/init.d/mysqld [root@localhost mysql]# chkconfig --add mysqld [root@localhost mysql]# chkconfig mysqld on
2.7启动服务
[root@localhost mysql]# service mysqld start Starting MySQL.170528 21:50:46 mysqld_safe Logging to '/mydata/data/localhost.localdomain.err'. 170528 21:50:46 mysqld_safe Starting mysqld daemon with databases from /mydata/data [ OK ] [root@localhost mysql]# netstat -tunlp |grep 3306 tcp 0 0 :::3306 :::* LISTEN 30899/mysqld
2.8导出环境变量
[root@localhost mysql]# vim /etc/profile.d/mysql.sh [root@localhost mysql]# cat /etc/profile.d/mysql.sh export PATH=/usr/local/mysql/bin:$PATH
[root@localhost mysql]# source /etc/profile.d/mysql.sh
2.9导出头文件
[root@localhost mysql]# ln -sv /usr/local/mysql/include/ /usr/local/include/mysql `/usr/local/include/mysql' -> `/usr/local/mysql/include/'
2.10导出库文件
[root@localhost mysql]# echo "/usr/local/mysql/lib" >> /etc/ld.so.conf.d/mysql.conf [root@localhost mysql]# ldconfig -v
2.11导出帮助文档
[root@localhost mysql]# echo "/usr/local/mysql/man" >> /etc/man.config
2.12设置数据库用户密码
[root@localhost mysql]# mysql Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 10 Server version: 10.2.6-MariaDB Source distribution Copyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. MariaDB [(none)]> grant all privileges on *.* to root@'localhost' identified by 'zhaojiedi'; Query OK, 0 rows affected (0.00 sec) MariaDB [(none)]> grant all privileges on *.* to root@'127.0.0.1' identified by 'zhaojiedi'; Query OK, 0 rows affected (0.00 sec) MariaDB [(none)]> select host,user,password from user; ERROR 1046 (3D000): No database selected MariaDB [(none)]> select host,user,password from mysql.user; +-----------------------+------+-------------------------------------------+ | host | user | password | +-----------------------+------+-------------------------------------------+ | localhost | root | *2F9ACBF8883BE76FAA7C042FDA59A7CC0841B40F | | localhost.localdomain | root | | | 127.0.0.1 | root | *2F9ACBF8883BE76FAA7C042FDA59A7CC0841B40F | | ::1 | root | | | localhost | | | | localhost.localdomain | | | +-----------------------+------+-------------------------------------------+ 6 rows in set (0.00 sec)
3.编译安装php
3.1安装php依赖包
[root@localhost src]# yum install libxml2 libxml2-devel openssl openssl-devel bzip2 bzip2-devel libcurl libcurl-devel libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel gmp gmp-devel libmcrypt libmcrypt-devel readline readline-devel libxslt libxslt-devel
3.2下载并编译安装php
[root@localhost src]# wget http://cn2.php.net/get/php-7.1.6.tar.bz2/from/this/mirror [root@localhost src]# tar xf php-7.1.6.tar.bz2
[root@localhost src]# cd php-7.1.6
[root@localhost php-7.1.6]# ./configure --prefix=/usr/local/php --with-config-file-path=/etc --enable-fpm --with-fpm-user=nginx --with-fpm-group=nginx --enable-inline-optimization --disable-debug --disable-rpath --enable-shared --enable-soap --with-libxml-dir --with-xmlrpc --with-openssl --with-mcrypt --with-mhash --with-pcre-regex --with-sqlite3 --with-zlib --enable-bcmath --with-iconv --with-bz2 --enable-calendar --with-curl --with-cdb --enable-dom --enable-exif --enable-fileinfo --enable-filter --with-pcre-dir --enable-ftp --with-gd --with-openssl-dir --with-jpeg-dir --with-png-dir --with-zlib-dir --with-freetype-dir --enable-gd-native-ttf --enable-gd-jis-conv --with-gettext --with-gmp --with-mhash --enable-json --enable-mbstring --enable-mbregex --enable-mbregex-backtrack --with-libmbfl --with-onig --enable-pdo --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-zlib-dir --with-pdo-sqlite --with-readline --enable-session --enable-shmop --enable-simplexml --enable-sockets --enable-sysvmsg --enable-sysvsem --enable-sysvshm --enable-wddx --with-libxml-dir --with-xsl --enable-zip --enable-mysqlnd-compression-support --with-pear --enable-opcache
[root@localhost php-7.1.6]# make && make install
3.7提供php配置文件
[root@localhost php-7.1.6]# cp php.ini-production /etc/php.ini
[root@localhost php-7.1.6]# cp sapi/fpm/init.d.php-fpm /etc/rc.d/init.d/php-fpm
[root@localhost php-7.1.6]# cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf
[root@localhost php-7.1.6]# cp /usr/local/php/etc/php-fpm.d/www.conf.default /usr/local/php/etc/php-fpm.d/www.conf
[root@localhost php-7.1.6]# chmod +x /etc/rc.d/init.d/php-fpm
3.8自动启动
[root@localhost php-7.1.6]# chkconfig --add php-fpm [root@localhost php-7.1.6]# chkconfig php-fpm on
3.3导出环境变量
[root@localhost mysql]# vim /etc/profile.d/php.sh
[root@localhost mysql]# cat /etc/profile.d/php.sh
export PATH=/usr/local/php/bin:$PATH
[root@localhost mysql]# source /etc/profile.d/php.sh
3.4导出头文件
[root@localhost mysql]# ln -sv /usr/local/php/include/ /usr/local/include/php
`/usr/local/include/php' -> `/usr/local/php/include/'
3.5导出库文件
[root@localhost mysql]# echo "/usr/local/php/lib" >> /etc/ld.so.conf.d/php.conf
[root@localhost mysql]# ldconfig -v
3.6导出帮助文档
[root@localhost mysql]# echo "/usr/local/php/man" >> /etc/man.config
3.7启动php并查看
[root@localhost php-7.1.6]# service php-fpm start Starting php-fpm done [root@localhost php-7.1.6]# ps aux |grep php-fpm root 11337 0.0 0.1 28696 3128 ? Ss 23:08 0:00 php-fpm: master process (/usr/local/php/etc/php-fpm.conf) nginx 11338 0.0 0.1 28696 2572 ? S 23:08 0:00 php-fpm: pool www nginx 11339 0.0 0.1 28696 2572 ? S 23:08 0:00 php-fpm: pool www root 11342 0.0 0.0 4336 744 pts/6 S+ 23:09 0:00 grep php-fpm
4.整合nginx和php7
4.1 nginx配置php页面
[root@localhost php-7.1.6]# vim /etc/nginx/nginx.conf
启用如下几行
location ~ \.php$ {
root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
include fastcgi_params;
}
下面的位置加入index.php默认主页
location / {
root html;
index index.php index.html index.htm;
}
4.2添加fatcgi_params文件
[root@localhost php-7.1.6]# mv /etc/nginx/fastcgi_params /etc/nginx/fastcgi_params.bak [root@localhost php-7.1.6]# vim /etc/nginx/fastcgi_params [root@localhost php-7.1.6]# cat /etc/nginx/fastcgi_params fastcgi_param GATEWAY_INTERFACE CGI/1.1; fastcgi_param SERVER_SOFTWARE nginx; fastcgi_param QUERY_STRING $query_string; fastcgi_param REQUEST_METHOD $request_method; fastcgi_param CONTENT_TYPE $content_type; fastcgi_param CONTENT_LENGTH $content_length; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param SCRIPT_NAME $fastcgi_script_name; fastcgi_param REQUEST_URI $request_uri; fastcgi_param DOCUMENT_URI $document_uri; fastcgi_param DOCUMENT_ROOT $document_root; fastcgi_param SERVER_PROTOCOL $server_protocol; fastcgi_param REMOTE_ADDR $remote_addr; fastcgi_param REMOTE_PORT $remote_port; fastcgi_param SERVER_ADDR $server_addr; fastcgi_param SERVER_PORT $server_port; fastcgi_param SERVER_NAME $server_name;
4.3添加测试主页
[root@localhost php-7.1.6]# cd /usr/html/ 50x.html index.html [root@localhost php-7.1.6]# vim /usr/html/index.php [root@localhost php-7.1.6]# cat /usr/html/index.php <?php phpinfo(); ?>
4.4测试
[root@localhost php-7.1.6]# service nginx reload nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful Reloading nginx: [ OK ]
5.安装具体的应用
5.1配置discuz应用
5.1.1下载并解压discuz
[root@localhost src]#wget http://download.comsenz.com/DiscuzX/3.3/Discuz_X3.3_SC_UTF8.zip [root@localhost src]#unzip Discuz_X3.3_SC_UTF8.zip -d /usr/html/discuz
5.1.2 访问 http://192.168.5.68/discuz/upload/home.php
5.1.3 创建需要的目录
#这里我就简单的设置了777权限了 [root@localhost upload]# chmod 777 -R ./data/ [root@localhost upload]# chmod 777 -R ./config/ [root@localhost upload]# chmod 777 -R ./uc_client/ [root@localhost upload]# chmod 777 -R ./uc_server/
5.1.4访问主页
posted on 2017-06-10 11:21 LinuxPanda 阅读(392) 评论(0) 编辑 收藏 举报