0x00 网站搭建–阿里云服务器+LNMP配置多个个网站(域名)
目录
作为一个程序猿,拥有自己的网站或者博客是一种什么感觉 …..
创建自己博客或者网站,首先就需要购买空间或者主机和购买域名。
网站空间的价格相对便宜,但是通常都有限制只能建一个博客或者网站,硬盘空间也有限制。主机的价格相对要贵一点,但自由度很大,可以自行配置,适合喜欢折腾的站长。
新站长推荐阿里云服务器和腾讯云服务器,一般都会有比较大的优惠,可以一次购买较长时间比如3年。使用个人现有的账号都能直接登录选购;
域名的价格相对比较低,一般几十块钱一年,但国内网站需要对域名进行备案,阿里云,腾讯云等都提供域名购买和在线免费自助备案,很方便;
服务器价格高,自由度高,域名便宜,那是否可以再一台服务器上建多个网站,配置多个域名?答案是肯定的;
也就可以跟别人共享主机,或者提供建站和托管服务等;
0x01.一建安装LNMP
wget http://soft.vpser.net/lnmp/lnmp1.6.tar.gz -cO lnmp1.6.tar.gz && tar zxf lnmp1.6.tar.gz && cd lnmp1.6 && ./install.sh lnmp
过程中可以选择安装的程序版本,如果没有特殊需求可以使用默认的,设置mysql账号时,要记录设置的密码;
0x02.如何搭建多个网站-WordPress安装
默认情况下,nginx域名的绑定都是通过nginx.conf文件来配置的,但是有时候我们有多个域名或者子域名的情况下要怎么绑定呢?或者有子域名指定不同的目录的时候我们又该怎么设置呢?其实很简单,如果留意看过LNMP一键安装脚本的代码,就知道它的原理。
默认的 nginx.conf 路径:
, /usr/local/nginx/conf/nginx.conf
如果不知道 nginx 的安装路径,可以通过以下命令来查找:
find / -name nginx.conf
打开 nginx.conf 文件,内容如下:
user www www;
worker_processes auto;
worker_cpu_affinity 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 off;
accept_mutex off;
}
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;
sendfile_max_chunk 512k;
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 reuseport;
#listen [::]:80 default_server ipv6only=on;
server_name _;
index index.html index.htm index.php;
root /home/wwwroot/default;
#error_page 404 /404.html;
# Deny access to PHP files in specific directory
#location ~ /(wp-content|uploads|wp-includes|images)/.*\.php$ { deny all; }
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 ~ /.well-known {
allow all;
}
location ~ /\.
{
deny all;
}
access_log /home/wwwlogs/access.log;
}
include vhost/*.conf;
}
使用阿里云服务器的需要注意屏蔽 #listen [::]:80 defaultserver ipv6only=on; 这一行是配置IPV6的,阿里云服务器开启IPV6会有问题;
这个文件重点倒数第二行
要开启,LNMP安装时候默认就是开启的,在配置的时候只需要检查确认一下即可; include vhost/*conf;
这一行配置的意思是执行 vhost
目录下的所有.conf
文件,所以在vhost
目录下新建域名的配置文件,可以多个域名一个文件,也可以一个域名一个文件。比如在vhost
目录下新建一个www.abc.com.conf
的配置文件。
server
{
listen 80;
listen 443 ssl;
#listen [::]:80;
server_name www.abc.com abc.com;
index index.html index.htm index.php default.html default.htm default.php;
root /opt/www/www.abc.com;
ssl_certificate /usr/local/nginx/cert/www.abc.com.pem;
ssl_certificate_key /usr/local/nginx/cert/www.abc.com.key;
include rewrite/wordpress.conf;
#error_page 404 /404.html;
# Deny access to PHP files in specific directory
#location ~ /(wp-content|uploads|wp-includes|images)/.*\.php$ { deny all; }
include enable-php-pathinfo.conf;
location ~* ^.+\.(gif|jpg|jpeg|png|swf|flv|mp3|mp4|ogg|flav|wav|rar|zip)$ {
valid_referers none blocked www.abc.com;
if ($invalid_referer) {
return 404;
break;
}
}
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
{
expires 30d;
}
location ~ .*\.(js|css)?$
{
expires 12h;
}
location ~ /.well-known {
allow all;
}
location ~ /\.
{
deny all;
}
access_log /opt/wwwlogs/www.abc.com.access.log;
error_log /opt/wwwlogs/www.abc.com.error.log;
}
listen 80;
监听80端口;
server_name
后面是域名或者子域名,可以是多个,但指向的都是一个目录;
index
默认文件,即网站根目录中的一个文件,是网站的入口,如有多个按顺序打开;
root
这一行配置网站指向的根目录;
对于磁盘空间小的,可以关闭 log 功能,即屏蔽以下两行,需要时再打开:
access_log /opt/wwwlogs/www.abc.com.access.log;
error_log /opt/wwwlogs/www.abc.com.error.log;
注意:include rewrite/wordpress.conf;
这一行,如果不是wordpress网站,需要去掉,否者会导致正常文件访问不到,而现实不了网页;
注意以下配置:
location ~* ^.+\.(gif|jpg|jpeg|png|swf|flv|mp3|mp4|ogg|flav|wav|rar|zip)$ {
valid_referers none blocked www.abc.com;
if ($invalid_referer) {
return 404;
break;
}
}
这个地方要记得修改域名,否者网站上的所有媒体资源无法显示;
这个新建的配置文件里需要根据自己的域名自行修改;
0x03. 重启
配置完 conf
文件后,重启 nginx
和 php
(Centos 为例)
service nginx restart
service php-fpm restart
Ubuntu:
/etc/init.d/nginx restart