系统
使用的是 CentOS 7 最小化安装的iso镜像 64位 636M VPS服务商 默认安装的系统
版本 CentOS-7-x86_64-Minimal-1503-01.iso
本地测试CentOS minimal 安装的一些记录
大致版本 与大部分VPS 服务商所用的安装系统一致
以下环境搭建教程 基本可以适用于各大VPS 服务商 包括国内
准备
安装 GCC
yum install gcc yum install gcc-c++
安装 VIM
yum install vim
安装sendmail 非必须(一个发送邮件的工具)
[root@localhost ~]# yum install -y sendmail [root@localhost ~]# yum -y sendmail-cf [root@localhost ~]# vi /etc/mail/sendmail.mc [root@localhost ~]# m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf [root@localhost ~]# echo "test" | sendmail 1050653098@qq.com [root@localhost ~]# vim /etc/hostname [root@localhost ~]# hostname service1.com [root@localhost ~]# hostname service1.com [root@localhost ~]# echo "test" | sendmail 1050653098@qq.com [root@localhost ~]# mailq /var/spool/mqueue is empty Total requests: 0 您在 /var/spool/mail/root 中有邮件
参考
CentOS安装sendmail及设置 排错 等等。。。。
send mail 拒收 或被列入垃圾箱问题
备注
因为它叫这个 mailx 正确的命令 yum -y install mailx
2. 测试本机是否开启 25 端口 以及外网是否可以访问
使用 nc -t 你的服务器外部ip地址 25 在其他服务器执行
如果出现 这个则视为成功
[root@localhost ~]# nc -t xx.xx.xx.xx 25
220 weicotfex.linode.com ESMTP Sendmail 8.14.7/8.14.7; Wed, 12 Jul 2017 08:18:07 GMT
HELLO
500 5.5.1 Command unrecognized: “HELLO”
安装mariadb或mysql数据库(只用安装其中一种数据库)
安装 mariadb
[root@localhost ~]# yum install mysql mysql-service [root@localhost ~]# mysql ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2) [root@localhost ~]# yum -y install mariadb* [root@localhost mysql]# systemctl start mariadb.service [root@localhost mysql]# mysql -u root -p Enter password: Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 2 Server version: 5.5.44-MariaDB MariaDB Server Copyright (c) 2000, 2015, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. MariaDB [(none)]>
Centos7 安装MySql Mariadb
安装mysql
liunx 下 或centos7 下安装 MySQL-5.6
安装PHP(只用安装其中一个版本)
安装php 5.6
[root@localhost mysql]# rpm -Uvh http://mirror.centos.org/centos/7/extras/x86_64/Packages/epel-release-7-9.noarch.rpm
//备用地址 ftp://fr2.rpmfind.net/linux/centos/7.2.1511/extras/x86_64/Packages/epel-release-7-5.noarch.rpm
[root@localhost mysql]# rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
//rpm -Uvh 升级一个包
//如果以上地址提示不存在的话
//1.请用谷歌或百度 搜索包名 epel-release-7-5.noarch.rpm
//2.wget 下载包的地址
//3.rpm -Uvh 下载后的包名
[root@localhost mysql]# yum list --enablerepo=remi --enablerepo=remi-php56 | grep php
[root@localhost mysql]# yum install --enablerepo=remi --enablerepo=remi-php56 php php-opcache php-pecl-apcu php-devel php-mbstring php-mcrypt php-mysqlnd php-phpunit-PHPUnit php-pecl-xdebug php-pecl-xhprof php-pdo php-pear php-fpm php-cli php-xml php-bcmath php-process php-gd php-common
[root@localhost mysql]# php -v
PHP 5.6.17 (cli) (built: Jan 6 2016 18:56:36)
Copyright (c) 1997-2015 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2015 Zend Technologies
with Zend OPcache v7.0.6-dev, Copyright (c) 1999-2015, by Zend Technologies
with Xdebug v2.3.3, Copyright (c) 2002-2015, by Derick Rethans
安装或升级PHP 7.4、7.3、7.2等
在CentOS 7和RHEL 7服务器上升级或新安装PHP 7.4、7.3、7.2、7.1
PHP 与MYSQL 链接
//如果要使用默认地址 可以使用 ps -ef|grep mysql 确定 mysql.sock 的位置 // 以下操作为修改 [root@localhost mysql]# find / -name my.cnf /etc/my.cnf [root@localhost mysql]# vim /etc/my.cnf [VIMCONTENT] socket=/var/lib/mysql/mysql.sock [root@localhost mysql]# vim /etc/php.ini [VIMCONTENT] ; http://php.net/mysql.default-socket mysql.default_socket =/var/lib/mysql/mysql.sock [root@localhost mysql]# systemctl restart php-fpm.service [root@localhost home]# cd /home //如果有修改mysql 的配置文件可以通过 ps -ef|grep mysql 找到mysql的id并kill掉 //然后通过 /usr/local/mysql/bin/mysqld_safe --user=mysql & 重启 //php -i |grep mysql 检查配置情况
测试 PHP 和mysql 的链接
[root@localhost home]# vim db.php
<?php mysql_connect('localhost','root','');
mysql_select_db('mysql');
$q=mysql_query("select * from user where user='root' limit 1");
$r=mysql_fetch_assoc($q); print_r($r); ?>
[root@localhost home]# php db.php
Array
(
[Host] => localhost
[User] => root
[Password] =>
[Select_priv] => Y
.................
)
参考与引用
systemctl跟 ip 命令用法
安装NGINX
[root@localhost home]# yum -y install zlib zlib-devel openssl openssl-devel pcre-devel [root@localhost home]# wget http://nginx.org/download/nginx-1.9.2.tar.gz [root@localhost home]# tar -zxvf nginx-1.9.2.tar.gz [root@localhost home]# cd nginx-1.9.2 [root@localhost nginx-1.9.2]# ./configure --help //添加权限 [root@localhost init.d]# /usr/sbin/groupadd -f nginx [root@localhost init.d]# /usr/sbin/useradd -g nginx nginx [root@localhost nginx-1.9.2]# ./configure --prefix=/etc/nginx --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.pid --lock-path=/var/run/nginx.lock --http-client-body-temp-path=/var/cache/nginx/client_temp --http-proxy-temp-path=/var/cache/nginx/proxy_temp --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp --http-scgi-temp-path=/var/cache/nginx/scgi_temp --user=nginx --group=nginx --with-http_ssl_module --with-http_realip_module --with-http_addition_module --with-http_sub_module --with-http_dav_module --with-http_flv_module --with-http_mp4_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_random_index_module --with-http_secure_link_module --with-http_stub_status_module --with-http_auth_request_module --with-mail --with-mail_ssl_module --with-file-aio --with-ipv6 --with-http_spdy_module --with-cc-opt='-O2 -g -pipe -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic'; [root@localhost nginx-1.9.2]# make && make install [root@localhost nginx-1.9.2]# nginx -v nginx version: nginx/1.9.2
添加 nginx 控制脚本
[root@localhost nginx]# cd /home
[root@localhost home]# vim nginx [这是控制脚本 不是nginx 文件目录 ]
//脚本地址 http://www.weicot.com/linux-%e4%b8%8b%e5%ae%89%e8%a3%85nginx-%e5%8f%8a%e7%ae%a1%e7%90%86-%e8%84%9a%e6%9c%ac/
[root@localhost home]# mv nginx /etc/init.d/ && cd /etc/init.d/
[root@localhost init.d]# chkconfig --add nginx
[root@localhost init.d]# chkconfig --list nginx
注意:该输出结果只显示 SysV 服务,并不包含原生 systemd 服务。SysV 配置数据可能被原生 systemd 配置覆盖。
如果您想列出 systemd 服务,请执行 'systemctl list-unit-files'。
欲查看对特定 target 启用的服务请执行
'systemctl list-dependencies [target]'。
nginx 0:关 1:关 2:关 3:关 4:关 5:关 6:关
[root@localhost init.d]# chmod a+x /etc/init.d/nginx
[root@localhost init.d]# service nginx restart
Restarting nginx (via systemctl): [ 确定 ]
测试
[root@localhost html]# cd /etc/nginx/html
[root@localhost html]# ls
// 不知道怎么找 本机ip 的 用这个命令 ip address 那个看起来像外网合法ip 的就是
50x.html index.html
[root@localhost html]# vim info.html
//浏览器输出
This is tets page
page from weicot.com
参考与引用
Centos 或 Linux 下安装NGINX 及管理脚本
Linux 下防火墙 Iptables 或 Firewalle 常用命令
NGINX 与 PHP
开放80端口 [root@localhost init.d]# systemctl start firewalld [root@localhost init.d]# systemctl status firewalld ● firewalld.service - firewalld - dynamic firewall daemon Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled) Active: active (running) since 六 2016-01-16 14:22:21 CST; 1h 57min ago .......................................................... [root@localhost init.d]# firewall-cmd --zone=dmz --add-port=80/tcp success [root@localhost init.d]# firewall-cmd --zone=dmz --list-ports 80/tcp //进入到 nginx 目录 [root@localhost nginx]# cd /etc/nginx/ [root@localhost nginx]# vim nginx.conf //nginx 配置 请查看代码一 [root@localhost nginx]# systemctl restart nginx.service
PHP 与sendMail 绑定
[root@localhost nginx]# vim /etc/php.ini ; http://php.net/sendmail-path sendmail_path = /usr/sbin/sendmail -t -i -f root@weicotservice.com [root@localhost nginx]# systemctl restart php-fpm.service
展示下作品
php-fpm mysql nginx 权限配置
看看各个模块运行在哪个用户下面,使用ps命令查看。如下
ps aux|grep nginx
ps aux |grep mysql
ps aux |grep php-fpm
php-fpm 的默认用户
[root@li331-172 w2]# vim /etc/php-fpm.d/www.conf ; Unix user/group of processes ; Note: The user is mandatory. If the group is not set, the default user's group ; will be used. ; RPM: apache Choosed to be able to access some dir as httpd user = apache ; RPM: Keep a group allowed to write in log dir. group = apache
更改为
; Unix user/group of processes ; Note: The user is mandatory. If the group is not set, the default user's group ; will be used. ; RPM: apache Choosed to be able to access some dir as httpd user =nginx ; RPM: Keep a group allowed to write in log dir. group = nginx
地址 /home/wwwroot/w2 的权限更改为 nginx
sudo chgrp -R nginx . sudo chown -R nginx . chmod -R 775 .
[root@li331-172 w2]# ll total 196 -rwxrwxr-x 1 nginx nginx 418 Sep 25 2013 index.php -rwxrwxr-x 1 nginx nginx 19935 Jan 2 18:51 license.txt -rwxrwxr-x 1 nginx nginx 6956 Mar 7 05:14 readme.html drwsrwsr-x 2 nginx nginx 4096 May 10 10:10 wordpress -rwxrwxr-x 1 nginx nginx 5447 Sep 27 2016 wp-activate.php drwsrwsr-x 9 nginx nginx 4096 Mar 7 05:14 wp-admin -rwxrwxr-x 1 nginx nginx 364 Dec 19 2015 wp-blog-header.php -rwxrwxr-x 1 nginx nginx 1627 Aug 29 2016 wp-comments-post.php -rwxrwxr-x 1 nginx nginx 3097 May 10 10:12 wp-config.php -rwxrwxr-x 1 nginx nginx 2930 Mar 7 05:14 wp-config-sample.php drwsrwsr-x 7 nginx nginx 4096 May 11 02:46 wp-content -rwxrwxr-x 1 nginx nginx 3286 May 24 2015 wp-cron.php drwsrwsr-x 18 nginx nginx 12288 Mar 7 05:14 wp-includes -rwxrwxr-x 1 nginx nginx 2422 Nov 21 02:46 wp-links-opml.php -rwxrwxr-x 1 nginx nginx 3301 Oct 25 2016 wp-load.php -rwxrwxr-x 1 nginx nginx 33939 Nov 21 02:46 wp-login.php -rwxrwxr-x 1 nginx nginx 8048 Jan 11 05:15 wp-mail.php -rwxrwxr-x 1 nginx nginx 16250 Nov 29 05:39 wp-settings.php -rwxrwxr-x 1 nginx nginx 29896 Oct 19 2016 wp-signup.php -rwxrwxr-x 1 nginx nginx 4513 Oct 14 2016 wp-trackback.php -rwxrwxr-x 1 nginx nginx 3065 Aug 31 2016 xmlrpc.php
自此 各个运行权限为
Nginx 组 Nginx Nginx
Php-Fpm 组 Nginx Nginx
Mysql 组 Mysql Mysql
网站根目录 组 Nginx Nginx
注意 权限不匹配将无法上传 文件 或执行其他需要较大权限的事
我nginx 的配置 nginx.conf
user nginx;
worker_processes 1;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
#log_format main '$remote_addr - $remote_user [$time_local] "$request" '
# '$status $body_bytes_sent "$http_referer" '
# '"$http_user_agent" "$http_x_forwarded_for"';
#access_log logs/access.log main;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
#gzip on;
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root html;
index index.html index.htm;
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ \.php$ {
# proxy_pass http://127.0.0.1;
#}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
location ~ \.php$ {
root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
# deny all;
#}
}
# another virtual host using mix of IP-, name-, and port-based configuration
#
#server {
# listen 8000;
# listen somename:8080;
# server_name somename alias another.alias;
# location / {
# root html;
# index index.html index.htm;
# }
#}
# HTTPS server
#
#server {
# listen 443 ssl;
# server_name localhost;
# ssl_certificate cert.pem;
# ssl_certificate_key cert.key;
# ssl_session_cache shared:SSL:1m;
# ssl_session_timeout 5m;
# ssl_ciphers HIGH:!aNULL:!MD5;
# ssl_prefer_server_ciphers on;
# location / {
# root html;
# index index.html index.htm;
# }
#}
}
nginx 多站点配置文件
//nginx 主配置文件 /etc/nginx/nginx.conf
//请确保 一下网站所用的目录存在
#weicot nginx more vhost test file
user nginx;
worker_processes auto;
error_log /home/wwwlogs/nginx_error.log crit;
#pid /usr/local/nginx/logs/nginx.pid;
#Specifies the value for maximum file descriptors that can be opened by this process.
worker_rlimit_nofile 51200;
events
{
use epoll;
worker_connections 51200;
multi_accept on;
}
http
{
include mime.types;
default_type application/octet-stream;
server_names_hash_bucket_size 128;
client_header_buffer_size 32k;
large_client_header_buffers 4 32k;
client_max_body_size 50m;
sendfile on;
tcp_nopush on;
keepalive_timeout 60;
tcp_nodelay on;
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 on;
gzip_min_length 1k;
gzip_buffers 4 16k;
gzip_http_version 1.1;
gzip_comp_level 2;
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_conn_zone $binary_remote_addr zone=perip:10m;
##If enable limit_conn_zone,add "limit_conn perip 10;" to server section.
server_tokens off;
access_log off;
server
{
listen 80 default_server;
#listen [::]:80 default_server ipv6only=on;
server_name www.weicot.com;
index index.html index.htm index.php;
root /home/wwwroot/default;
#error_page 404 /404.html;
include enable-php.conf;
location /nginx_status
{
stub_status on;
access_log off;
}
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
{
expires 30d;
}
location ~ .*\.(js|css)?$
{
expires 12h;
}
location ~ /\.
{
deny all;
}
access_log /home/wwwlogs/access.log;
}
include vhost/*.conf;
}
//nginx-php 配置文件 /etc/nginx/enable-php.conf;
location ~ [^/]\.php(/|$)
{
try_files $uri =404;
fastcgi_pass 127.0.0.1:9000;
#fastcgi_pass unix:/tmp/php-cgi.sock; 理论上单机这个比较快
fastcgi_index index.php;
include fastcgi.conf;
}
//nginx 虚拟配置文件位置 /etc/nginx/vhost/*.conf;
Nginx 多站点示例 Magnto 配置示例
// magento nginx 虚拟配置文件位置 /etc/nginx/vhost/s1.conf
server
{
listen 80;
#listen [::]:80;
server_name s1.weicot.com;
index index.html index.htm index.php default.html default.htm default.php;
root /home/wwwroot/s1;
include mage.conf;
#error_page 404 /404.html;
include enable-php.conf;
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
{
expires 30d;
}
location ~ .*\.(js|css)?$
{
expires 12h;
}
location ~ /\.
{
deny all;
}
access_log /home/wwwlogs/s1.weicot.log;
}
//nginx mage 主配置文件 /etc/nginx/mage.conf
location / {
index index.html index.php; ## Allow a static html file to be shown first
try_files $uri $uri/ @handler; ## If missing pass the URI to Magento's front handler
expires 30d; ## Assume all files are cachable
}
## These locations would be hidden by .htaccess normally
location /app/ { deny all; }
location /includes/ { deny all; }
location /lib/ { deny all; }
location /media/downloadable/ { deny all; }
location /pkginfo/ { deny all; }
location /report/config.xml { deny all; }
location /var/ { deny all; }
location /var/export/ { ## Allow admins only to view export folder
auth_basic "Restricted"; ## Message shown in login window
auth_basic_user_file htpasswd; ## See /etc/nginx/htpassword
autoindex on;
}
location /. { ## Disable .htaccess and other hidden files
return 404;
}
location @handler { ## Magento uses a common front handler
rewrite / /index.php;
}
location ~ .php/ { ## Forward paths like /js/index.php/x.js to relevant handler
rewrite ^(.*.php)/ $1 last;
}
防火墙配置 相关
centos 7 中旧版命令安装 ifconfig netstat
yum search ifconfig 搜索包含这个的包
通过yum search 这个命令发现
ifconfig这个命令是在net-tools.x86_64这个包里,
接下来我们安装这个包就行了
运行 yum install net-tools
其实 ip 命令挺好用的
ip route ip路由
ip address 地址
开启80端口 firewall
firewall-cmd --zone=public --add-port=80/tcp --permanent
出现success表明添加成功
命令含义:
–zone #作用域
–add-port=80/tcp #添加端口,格式为:端口/通讯协议
–permanent #永久生效,没有此参数重启后失效
重启防火墙
systemctl restart firewalld.service
1、运行、停止、禁用firewalld
启动:# systemctl start firewalld
查看状态:# systemctl status firewalld 或者 firewall-cmd –state
停止:# systemctl disable firewalld
禁用:# systemctl stop firewalld
开启80端口 iptables
查看开放的端口
sudo /etc/init.d/iptables status
开放指定端口
开放80端口,允许数据包从80端口进入,开放其它端口一样改成对应的数字,比如ftp21和ssh的22端口
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
保存所做的更改
sudo /etc/rc.d/init.d/iptables save
转载请注明:(●--●) Hello.My Weicot » Centos7+Mysql/MariaDB+sendMail+Nginx+PHP 环境搭建一条龙
