预先执行
yum install wget vim tree pstree telnet gcc cmake screen htop top lrzsz git -y
去yum的配置文件
cd /etc/yum.repos.d
根据不同的系统下不同的源
centos6的
wget http://mirrors.163.com/.help/CentOS6-Base-163.repo
或centos7的
wget http://mirrors.163.com/.help/CentOS7-Base-163.repo
首先备份yum原有源 /etc/yum.repos.d/CentOS-Base.repo
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
epel的安装
yum install epel-release -y
去yum的配置文件
cd /etc/yum.repos.d
CentOS6:
wget http://rpms.remirepo.net/enterprise/remi-release-6.rpm
rpm -Uvh remi-release-6.rpm
centos7:
wget http://rpms.remirepo.net/enterprise/remi-release-7.rpm
rpm -Uvh remi-release-7.rpm
安装完成然后修改remi配置 :
vim /etc/yum.repos.d/remi.repo
将其中 [remi] 下的enabled=0改为1(11行左右),保存退出,配置完成
清理下
yum clean all
生成缓存
yum makecache
更新下系统
yum update -y
去源的配置文件
cd /etc/yum.repos.d
添加个文件
vim nginx.repo
添加这些
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/mainline/centos/7/$basearch/
gpgcheck=0
enabled=1
安装nginx
yum install nginx -y
nginx的一些命令
# 查看nginx的配置文件
nginx -t
# 查看nginx的版本
nginx -V
# 启动nginx(start/status/restart)(如果是centos6的话,把systemctl换为service)
systemctl start nginx
去源的配置文件
cd /etc/yum.repos.d
安装那个版本的php,就把那个版本的php的enable开启
安装php(cli和fpm都要安装)
yum install php php-fpm php-mysqlnd php-pear php-devel php-swoole php-mbstring php-mcrypt php-mongodb php-mysqli php-gd php-dom php-apc php-memcache php-redis php-zip
php的常见命令
# 查看安装的php模块(cli和fpm)
php -m
php-fpm -m
# 查看php的配置文件
php --ini
# 查看php的版本
php -v
php-fpm -v
# 启动php,也就是启动fpm,(cli是不需要启动的)(start/status/restart)(如果是centos6的话,把systemctl换为service)
systemctl start php-fpm
去源的配置文件
cd /etc/yum.repos.d
首先,下载rpm包
wget http://dev.mysql.com/get/mysql57-community-release-el7-9.noarch.rpm
安装rpm包
rpm -ivh mysql57-community-release-el7-9.noarch.rpm
打开 mysql-community.repo 看关于mysql的内空,确定mysql57的enable是打开的
vim /etc/yum.repos.d/mysql-community.repo
安装mysql
yum install -y mysql-community-server
其实想要重置 5.7 的密码很简单:
修改 /etc/my.cnf
,在 [mysqld]小节下添加一行:
skip-grant-tables=1
这一行配置让 mysqld 启动时不对密码进行验证
重启 mysqld 服务,没启动的话启动:
systemctl start mysqld
# 或
systemctl restart mysqld
切换到mysql数据库,更新 user 表:
# 运行这个命令直接回车
mysql -uroot -p
use mysql;
# password('root')单引号的换为自己的
update user set authentication_string = password('root'), password_expired = 'N', password_last_changed = now() where user = 'root';
修改 /etc/my.cnf,在 [mysqld]小节删除这一行:
skip-grant-tables=1
重启 mysqld 服务:
systemctl restart mysqld
命令行安装
# 下载安装脚本 - composer-setup.php - 到当前目录
php -r "copy('https://install.phpcomposer.com/installer', 'composer-setup.php');"
# 执行安装过程
php composer-setup.php
# 删除安装脚本
php -r "unlink('composer-setup.php');"
执行第一条命令下载下来的 composer-setup.php 脚本将简单地检测 php.ini 中的参数设置,如果某些参数未正确设置则会给出警告;
然后下载最新版本的 composer.phar 文件到当前目录。
将 Composer 安装到系统环境变量 PATH 所包含的路径下面,然后就能够在命令行窗口中直接执行 composer 命令了
sudo mv composer.phar /usr/local/bin/composer
修改 composer 的全局配置文件
composer config -g repo.packagist composer https://packagist.phpcomposer.com
执行之后会发现 Composer 全局的 ~/.config/composer/config.json
文件下增加了如下内容:
{
"config": {},
"repositories": {
"packagist": {
"type": "composer",
"url": "https://packagist.phpcomposer.com"
}
}
}
如果有上面的这个就表示源添加成功
yum install redis -y
vim /etc/redis.conf
在vim的尾行模式下/
后面跟你要查找的,就是vim的查找
先 `:set nu` 开启行数显示
查找 `protected-mode` 把他的值改为no,然后按ESC变为尾行模式
查找 `requirepass` 会有多个,有一个是单独一行的,找到那个,去掉注释,并在后面设置密码,我这边设置的是default
查找 `bind 127.0.0.1` 可能会有多个,如有没注释的,就把他们注释了
# 启动
systemctl start redis
# 查看状态
systemctl status redis
redis的服务命令是redis-server
还有客户端的redis-cli
vim /etc/selinux/config
看这个SELINUX的值等不等于disabled
centos7
先关闭firewall
#停止firewall
systemctl stop firewalld.service
#禁止firewall开机启动
systemctl disable firewalld.service
#查看默认防火墙状态(关闭后显示notrunning,开启后显示running)
firewall-cmd --state
如果是虚拟机下面一步就不需要配置了,如果是线上需要配置下
安装iptables防火墙
yum install iptables-services -y
如果怕shell暴力破解,就安装这个
yum install fail2ban -y
然后修改防火墙的配置
vim /etc/sysconfig/iptables
修改为如下
# sample configuration for iptables service
# you can edit this manually or use system-config-firewall
# please do not ask us to add additional ports/services to this default configuration
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 443 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 3306 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 6379 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
主要是开启ssh的22,http的80,https的443,mysql的3306,redis的6379
如有需要再来添加,添加完了,需要重启iptables
# 启动iptables
systemctl start iptables
# 查看状态
systemctl status iptables
进程打开文件数调优
echo "* soft nproc 65535" >> /etc/security/limits.conf
echo "* hard nproc 65535" >> /etc/security/limits.conf
上面是软限制
下面是硬限制
软限制突破会警告,硬限制是不能突破的
用户的最大进程数
cd /etc/security/limits.d/
看下面的那个文件
修改为
root hard nproc unlimited
root soft nproc unlimited
修改完需要重启服务器
reboot
添加用户,默认会添加与用户同名的组
用户default
useradd default
passwd 用户名
vim /etc/php-fpm.d/www.conf
分别查找这2个user,group
把这边用户和组别设置为你添加的用户和组别
user = default
group = default
修改ini文件
vim /etc/php.ini
查找文件中display_error
如果是off就改为display_error=On
如果不改的话,他是代码写错了只报500服务器错误,不显示php代码错误,把错误报告开启下来
然后重启php
systemctl restart php-fpm
cd /etc/nginx
添加url重写文件
vim wordpress.conf
添加内容如下
location / {
try_files $uri $uri/ /index.php?$args;
}
# Add trailing slash to */wp-admin requests.
rewrite /wp-admin$ $scheme://$host$uri/ permanent;
添加nginx转发给php文件
vim enable-php-pathinfo.conf
添加内容如下
location ~ [^/]\.php(/|$)
{
# 这边走的是端口转发,还有种转发给sock但是我的php-fp没有listen这个,可以自己配置,然后这边写unix:/tmp/php-cgi.sock;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi.conf;
include pathinfo.conf;
}
添加pathinfo文件
vim pathinfo
添加内容如下
fastcgi_split_path_info ^(.+?\.php)(/.*)$;
set $path_info $fastcgi_path_info;
fastcgi_param PATH_INFO $path_info;
try_files $fastcgi_script_name =404;
# 定义Nginx运行的用户和用户组,来指定Nginx Worker进程运行用户以及用户组,默认由nobody账号运行
user default default;
#nginx进程数
worker_processes auto;
#全局错误日志定义类型,[ debug | info | notice | warn | error | crit ],其中debug输出日志最为最详细,而crit输出日志最少
error_log /usr/local/log/nginx/error.log debug;
#一个nginx进程打开的最多文件描述符数目,理论值应该是最多打开文件数(系统的值ulimit -n)与nginx进程数相除,但是nginx分配请求并不均匀,所以建议与ulimit -n的值保持一致,可以使用命令“ulimit -n 65535”来设置其他值。
worker_rlimit_nofile 65535;
# var/run这个文件夹包含描述系统启动以来系统信息的数据。
# 此文件夹下的文件必须在启动过程初期清除(删除或归零)。
# 程序可以在/var/run下有自己的子文件夹。原先放在/etc下的进程标识(PID)文件必须放
# 在/var/run里面。PID文件的命名惯例是.pid。所以,nginx的PID文件名为/var/run/nginx.pid。
# nginx.pid存放的是nginx的master进程的进程号。那么现在的openresty,就是openresty.pid
# 进程文件,用来指定进程id的存储文件位置
pid /var/run/nginx.pid;
events {
#网络工作模式有select、epoll、kqueue等。epoll和kqueue为高效模式、select为稳定模 式,只不过Linux使用epoll(首选),FreeBSD使用kqueue,传统apache使用select。
#epoll是多路复用IO(I/O Multiplexing)中的一种方式,但是仅用于linux2.6以上内核,可以大大提高nginx的性能。
# mac用kqueue, linux用epoll, windows用iocp
use epoll;
#单个工作进程最大允许连接数
worker_connections 65535;
#告诉nginx收到一个新连接通知后接受尽可能多的连接。
multi_accept on;
}
http {
#来用设定文件的mime类型,类型在配置文件目录下的mime.type文件定义,来告诉nginx来识别文件类型
include mime.types;
#默认文件类型
default_type application/octet-stream;
#设定mime类型,文件传送类型由mime.type文件定义
server_names_hash_bucket_size 128; #保存服务器名字的hash表大小
client_header_buffer_size 32k; #客户端请求头部缓冲区大小
large_client_header_buffers 4 32k; #最大客户端头缓冲大小
client_max_body_size 50m; #客户端最大上传文件大小
#开启目录列表访问,合适下载服务器,默认关闭
autoindex off;
#定义日志格式
log_format access '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" $http_x_forwarded_for';
#off隐藏Nginx版本号 (可用curl –I ip地址查看)
server_tokens off;
# 字符集
charset UTF-8;
#sendfile 指令指定 nginx 是否调用 sendfile 函数(zero copy 方式)来输出文 件,对于普通应用,必须设为 on。如果用来进行下载等应用磁盘IO重负载应用,可 设置为off,以平衡磁盘与网络I/O处理速度,降低系统的uptime.
sendfile on;
#这个是默认的,结果就是数据包不会马上传送出去,等到数据包最大时,一次性的 传输出去,这样有助于解决网络堵塞。(只在sendfile on时有效)
tcp_nopush on;
#防止网络阻塞
tcp_nodelay on;
#fastcgi设置php-fpm
#FastCGI相关参数是为了改善网站的性能:减少资源占用,提高访问速度
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
fastcgi_buffer_size 64k;
fastcgi_buffers 4 64k;
fastcgi_busy_buffers_size 128k;
fastcgi_temp_file_write_size 256k;
#开启gzip网络压缩
gzip on;
#最小压缩文件大小
gzip_min_length 1k;
#压缩缓冲区
gzip_buffers 4 16k;
#压缩版本(默认1.1,前端如果是squid2.5请使用1.0)
gzip_http_version 1.1;
#压缩等级
gzip_comp_level 2;
#压缩类型,默认就已经包含text/html,所以下面就不用再写了,写上去也不会有问题,但是会有一个warn
gzip_types text/plain application/javascript application/x-javascript text/javascript text/css application/xml application/xml+rss;
gzip_vary on;
gzip_proxied expired no-cache no-store private auth;
gzip_disable "MSIE [1-6]\.";
#limit_zone crawler $binary_remote_addr 10m; #开启限制IP连接数的时候需要使用
# 日志
access_log /usr/local/log/nginx/access.log access;
# 载入以前nginx的
include /etc/nginx/conf.d/*;
}
创建日志文件
mkdir -p /usr/local/log/nginx
cd /etc/nginx/conf.d
创建默认文件,以后添加站点就是把这个复制改下就行
server
{
# 监听端口
listen 80;
listen [::]:80;
# 域名可以有多个,用空格隔开
server_name localhost;
index index.php index.html index.htm default.php default.htm;
# 项目文件夹 /home/default
root /home/default/default/public/;
#error_page 404 /404.html;
# Deny access to PHP files in specific directory
#location ~ /(wp-content|uploads|wp-includes|images)/.*\.php$ { deny all; }
# nginx转发给php
include enable-php-pathinfo.conf;
# url重写
include wordpress.conf;
# 图片缓存时间设置
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
{
# 过期时间1小时
expires 1h;
}
# js和css缓存时间设置
location ~ .*\.(js|css)?$
{
# 过期时间1小时
expires 1h;
}
location ~ /.well-known {
allow all;
}
location ~ /\.
{
deny all;
}
#设定查看Nginx状态的地址
# location /NginxStatus {
# stub_status on;
# access_log on;
# auth_basic "NginxStatus";
# auth_basic_user_file confpasswd;
#htpasswd文件的内容可以用apache提供的htpasswd工具来产生。
# }
# /usr/local/var/log/nginx/
access_log /usr/local/log/nginx/default.log access;
}
注意看注释,上面root和server_name,是有差异的,改为自己的
# 查看nginx的配置是否正确
nginx -t
# 重启nginx
systemctl restart nginx
如果是虚拟机,就需要配置这个,配置了这个他就他不请求外网了
如果是服务器就不要配置,自己买域名吧,做A解析吧
127.0.0.1 域名
# nginx的配置文件目录和站点配置文件目录
cd /etc/nginx/
cd /etc/nginx/conf.d/
# php的配置文件(可以用 php --ini 查看)
cd /etc/php.d/
# 查看php-fpm配置文件和子配置的目录
vim /etc/php-fpm.conf
cd /etc/php-fpm.d/
# mysql配置文件
cat /etc/my.cnf
# redis配置文件和哨兵配置文件
cat /etc/redis.conf
cat /etc/redis-sentinel.conf
# nginx的日志文件夹
cd /usr/local/log/nginx