搭了个论坛玩。
以下文字时写给自己看的,首要目的是记录,其次才是得瑟。会有些啰嗦,因为不想写那种从头到位都很顺利跟说明书似的帖子。
一、 概况
基本思路是LNMP:
L: CentiOS7。为什么用7,没什么特别的原因,喜欢7这个数字,CentOS7刚出来的时候就装了个,只是当时电脑配置差,玩得不爽,耿耿于怀,这次顺便了了这个结,当然坑也会有的。为什么不用ubuntu,就ubuntu默认防火墙关闭,CentOS默认防火墙打开这一点就让我不打算用ubuntu了。
N: nginx。没认真笔记多nginx喝apache,只知道大家现在更偏向于用nginx跑python项目,nginx也有虚拟主机,反向代理的玩法,可以很方便的在一台服务器上搭建多个网站。
M: MySQL。被oracle搞去了,因为担心被闭源,所以CentOS7用了由社区维护的MySQL的一个分支,MariaDB,但起起来
P: python,用的django框架,论坛直接用的开源软件misago
二、 搭建
- CentOS7
直接用的阿里的ECS,创建虚拟机的时候选的CentOS7的镜像。
我觉得用root用户直接搭建环境不好,于是创建了一个管理员账号,以我自己命名,命令:adduser henry -c “Henry Chen"
允许用户henry在用sudo的时候不需要输入密码,命令:visudo,会打开一个文件,找到这两行:
## Same thing without a password
%wheel ALL=(ALL) NOPASSWD: ALL
去掉第二行前面的注释(这里已经去掉了),记下wheel这个组,只要在这个组里面的用户,使用sudo都不用输入密码。
将henry加入到这个组中:usermod -a -G henry wheel。
安装必要的软件:sudo yum install libjpeg-turbo-devel zlib-devel
python-devel
libfreehand-devel
python-imgcreate
这个镜像用起来跟本地不一样,本地安装的CentOS7种,防火墙会阻止几乎全部端口,而ECS中只要你用到了哪个端口,它会帮你自动打开这个端口,不用自己操作防火墙。本地做实验的时候需要操作防火墙,需要以下命令:
firewall-cmd —list-port
firewall-cmd --zone=dmz --add-port=80/tcp
firewall-cmd --zone=dmz --add-port=3306/tcp
若要永久生效方法在后面加上--permanent
这是我遇到的第一个坑,装上mysql,添加好用户和权限后却不能登录,google出来的方向都是让我去改iptables,但CentOS7中将iptables换成了firewall,有网友建议卸载firewall,安装iptables,但我觉得人家用了firewall总是有他的道理的,于是决定用firewall。
- MySQL
因为觉得数据库能用就行,没必要源码编译,于是想直接用源里面的,但CentOS7的源中并没有自带mysql,而是MariaDB,这是由社区维护的一个MySQL的分支,但据说启动后查看进程看到的是mariadb不是mysql,有点怪怪的,于是我去官方找了个源,然后安装。
sudo rpm -ivh mysql-community-release-el7-5.noarch.rpm
sudo yum install mysql-community-server
在安装完成后会看到replaced mariadb的信息,这个有意思。
初次安装mysql,root用户没有密码,为了安全起见,最好设置下密码
set password
for
'
root
'@
'
localhost
' =password(
'
password
'
);
新建mysql用户,赋予权限,需要用到如下命令:
create user
'
username