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做下定期备份就成。。数据无价!!
