centos安装lnmp记录 2018-08-04
首先给大家一键安装源。这种安装比较简单。
我最先接触的是军哥的lnmp一键安装。。附上安装教程 https://lnmp.org/install.html
当然最近流行的有宝塔这个工具,还有个web后台管理来着。 https://www.bt.cn/bbs/thread-1186-1-1.html
这些都是挺好的一键安装源。本地开发环境如果懒得弄就这样一键搞下去,很简单的就安装好 php mysql nginx
多看他里面的教程,还有教怎么安装其他扩展的。
OK 这是一键安装篇。
我们来搞个编译安装lnmp的把。编译安装可以使我们更能理解我们扩展了安装了啥,扩展了啥。。(安装过程中可能会漏掉一些插件 例如编译的时候需要gcc啥的,这些你们自行百度去下载 也就一条yum命令就能处理的。根据报错信息去处理。。。我这边是假设这些你都已经安装了。)
注意 :我们操作linux命令时,前面都会加上#。 这代表linux命令 例如 # cd / 这意思就是打开根目录,我这本书大部分get的源都是去阿铭分享的地址去下的,,例如mysql都是到他分享的地址下的,都是官方源。大家自己去看下:https://coding.net/u/aminglinux/p/resource/git/blob/master/README.md
编译安装 - - mysql
# cd /usr/local/src/
# wget
# tar zxvf http://mirrors.163.com/mysql/Downloads/MySQL-5.6/mysql-5.6.39-linux-glibc2.12-x86_64.tar.gz
# mv mysql-5.6.39-linux-glibc2.12-x86_64 /usr/local/mysql
# useradd -s /sbin/nologin mysql
# cd /usr/local/mysql
# mkdir -p /data/mysql
# chown -R mysql:mysql /data/mysql
# ./scripts/mysql_install_db --user=mysql --datadir=/data/mysql
# cp support-files/my-default.cnf /etc/my.cnf
# cp support-files/mysql.server /etc/init.d/mysqld
# chmod 755 /etc/init.d/mysqld
# vim /etc/init.d/mysqld
把datadir 给设置成 datadir=/data/mysql (前面初始化定义的目录) 退出vim
把启动脚本加入系统服务 设定开机启动
# chkconfig --add mysqld
# chkconfig mysqld on
# service mysqld start
OK,我们启动了mysql 可以通过ps命令查看是否启动
# ps aux |grep mysqld
至此我们的mysql安装完毕。
安装php
# cd /usr/local/src
# wget http://cn2.php.net/distributions/php-5.6.32.tar.bz2
# tar php-5.6.32.tar.bz2
# useradd -s /sbin/nologin php-fpm
# cd php-5.6.32
OK 我们来编译安装,编译参数大家自己网上找一下,我是加了下面这些。大家自行需要就加入把。
# ./configure --prefix=/usr/local/php-fpm --with-config-file-path=/usr/local/php-fpm/etc --enable-fpm --with-fpm-user=php-fpm --with-fpm-group=php-fpm --with-mysql=/usr/local/mysql --with-mysql-sock=/tmp/mysql.sock --with-libxml-dir --with-gd --with-jpeg-dir --with-png-dir --with-freetype-dir --with-iconv-dir --with-zlib-dir --with-mcrypt --enable-soap --enable-gd-native-ttf --enable-ftp --enable-mbstring --enable-exif --disable-ipv6 -with-pear --with-curl --with-openssl
# make
在这一步通常会遇到很多问题,就是看报错信息,一个一个解决,百度都有。
直到你处理完所有问题后我们安装php
# make install
注意:以上步骤建议做完一遍 我们使用命令 echo $? 来查看是否完成 如果结果为0代表没问题。再输入往下一步。否则百度解决问题。实在不行请喊我。。。。我的qq260275472
修改配置文件
# cp php.ini-production /usr/local/php-fpm/etc/php.ini
# vim /usr/local/php-fpm/etc/php-fpm.conf
把下面内容写进php-fpm的配置文件
[global]
pid = /usr/local/php-fpm/var/run/php-fpm.pid
error_log = /usr/local/php-fpm/var/log/php-fpm.log
[www]
listen = /tmp/php-fcgi.sock
listen.mode = 666
user = php-fpm
group = php-fpm
pm = dynamic
pm.max_children = 50
pm.start_servers = 20
pm.min_spare_servers = 5
pm.max_spare_servers =35
pm.max_requests = 500
rlimit_files = 1024
保存退出后检查是否有木有问题。
# /usr/local/php-fpm/sbin/php-fpm -t
如果出现 successful 代表成功。否则就根据提示去修改把。。
ok 配置完成我们来启动php 并设置开机启动把。。
# cp /usr/local/src/php-5.6.32/sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
# chmod 755 /etc/init.d/php-fpm
# service php-fpm start
# chkconfig php-fpm on
检查是否启动 同样ps命令然后grep一下(有好多个进程)
# ps aux |grep php-fpm
安装nginx
# cd /usr/local/src/
# wget http://nginx.org/download/nginx-1.8.0.tar.gz
# tar zxvf nginx-1.8.0.tar.gz
# cd nginx-1.8.0
# ./configure --prefix=/usr/local/nginx
# make
# make install
# vim /etc/init.d/nginx
写入一下脚本
#! /bin/bash #chkconfig: - 30 21 #description: http service. # Source Function Library . /etc/init.d/functions #Nginx Settings NGINX_SBIN="/usr/local/nginx/sbin/nginx" NGINX_CONF="/usr/local/nginx/conf/nginx.conf" NGINX_PID="/usr/local/nginx/logs/nginx.pid" PETVAL=0 prog="Nginx" start() { echo -n $"Starting $prog:" mkdir -p /dev/shm/nginx_temp daemon $NGINX_SBIN -c $NGINX_CONF PETVAL=$? echo return $RETVAL } stop() { echo -n $"Stopping $prog:" killproc -p $NGINX_PID $NGINX_SBIN -TERM rm -rf /dev/shm/nginx_temp RETVAL=$? echo return $RETVAL } reload() { echo -n $"$Reloading $prog:" Killproc -p $NGINX_PID $NGINX_SBIN -HUP RETVAL=$? echo return $RETVAL } configtest() { $NGINX_SBIN -c $NGINX_CONF -t return 0 } case "$1" in start) start ;; stop) stop ;; reload) reload ;; restart) restart ;; configtest) configtest ;; *) echo $"Usage:$0{start|stop|reload|restart|configtest}" RETVAL=1 esac exit $RETVAL
设置权限,并加入开机启动
# chmod 755 /etc/init.d/nginx
# chkconfig --add nginx
# chkconfig nginx on
清空原来的配置
# > /usr/local/nginx/conf/nginx.conf
# vim /usr/local/nginx/config/conf
填充进去以下内容
user nobody nobody; worker_processes 2; error_log /usr/local/nginx/logs/nginx_error.log crit; pid /usr/local/nginx/logs/nginx.pid; worker_rlimit_nofile 51200; events{ use epoll; worker_connections 6000; } http{ include mime.types; default_type application/octet-stream; server_names_hash_bucket_size 3526; server_names_hash_max_size 4096; log_format combined_realip '$remote_addr $http_x_forwarded_for [$time_local]' ' $host "$request_uri" $status' ' "$http_referer" "$http_user_agent"'; sendfile on; tcp_nopush on; keepalive_timeout 30; client_header_timeout 3m; client_body_timeout 3m; send_timeout 3m; connection_pool_size 256; client_header_buffer_size 1k; large_client_header_buffers 8 4k; request_pool_size 4k; output_buffers 4 32k; postpone_output 1460; client_max_body_size 10m; client_body_buffer_size 256k; client_body_temp_path /usr/local/nginx/client_body_temp; proxy_temp_path /usr/local/nginx/proxt_temp; fastcgi_temp_path /usr/local/nginx/fastcgi_temp; fastcgi_intercept_errors on; tcp_nodelay on; gzip on; gzip_min_length 1k; gzip_buffers 4 8k; gzip_comp_level 5; gzip_http_version 1.1; gzip_types text/plain application/x-javascript text/css text/htm application/xml; server { listen 80; server_name localhost; index index.html index.htm index.php; root /usr/local/nginx/html; location ~ \.php$ { include fastcgi_params; fastcgi_pass unix:/tmp/php-fcgi.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /usr/local/nginx/html$fastcgi_script_name; } } include vhost/*.conf; }
检查是否正确
# /usr/local/nginx/sbin/nginx -t
看到ok 和succesful 代表成功,否则根据提示去解决问题把
启动nginx
# service nginx start
检查一样用ps命令。我就不写出来了。。。。
ok nginx创建完毕。上面我们配置文件加了include vhost/*.conf 就是加载 /usr/local/nginx/conf/vhost/ 下面 的.conf文件。
所以我们每套代码都在vhost里面创建一个conf就成了。。。。
至于怎么配置nginx 大家如果有看我文章,用过upupw那你应该会配。。实在不会请百度。。。还是不会,,那我只能给你我的其中一个简单点的配置,例如我这个网站,iasing.com
那我就再vhost下面创建一个文件叫 iasing.conf
写入如下内容
server { listen 80; server_name iasing.com alias www.iasing.com; index index.html index.htm index.php; root /data/wwwroot/iasing/public; location / { if ( !-e $request_filename){ rewrite ^/(.*)$ /index.php?s=$1 last; break; } } location ~ \.php(.*)$ { fastcgi_pass unix:/tmp/php-fcgi.sock; fastcgi_index index.php; fastcgi_split_path_info ^((?U).+\.php)(/?.+)$; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param PATH_INFO $fastcgi_path_info; fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info; include fastcgi_params; } }
我这个是tp框架,所以规则大家能看懂则自己看看就成,哈哈哈。我代码是创建再根目录下的data目录下的wwwroot里面。iasing是我的代码了。。。tp5要指向public 所以我就指向public
再上面呢,就是监听80端口, 域名信息 iasing.com 别名 www.iasing.com (解析域名请去万网啥的买个域名,然后自己解析,,你们的域名肯定和我不一样咯。。。)
我现在还没记录什么错误日志,毕竟自己的服务器,谢谢博客能有什么错误日志。。。
对了,一点安全小建议。。大家如果买云服务器,记得几个小点,,例如root关闭远程连接,要root你就给自己开个号,加入sudo权限,直接sudo,避免别人破解你服务器密码。。因为如果你root可以远程登陆的话,那不是账号写root,密码枚举破解就成了?? 如果是小号,他还得有小号的账号和密码才能登陆服务器,增加了黑客破解难度。。
第二,ssh隧道开起来吧,,22端口不安全,大家都知道默认登陆服务器的端口是22,那如果我们改成其他的,例如12345,那别人破解也难度也就更大,毕竟还得找出你的端口号。。
第三 防火墙把该开启的东西加入白名单把,,其他的都关掉。。。出入站规则啥的。。
第四,mysql建议用隧道登陆,,也就是ssh,然后同样远程禁止root账号登陆。。
这几点对于我们php开发比较有安全问题。。个人开发小网站的话比较无所畏惧。。。不过还是得悠着点,,我上次没写备份mysql脚本,,结果某一天mysql挂了,,,我差点不要这个博客了。。幸好之前服务器搭在windows上有那么一丢丢数据。。。。以后要写好备份,用linux自带的crontab做下定期备份就成。。数据无价!!